public class ch.qos.logback.core.db.JNDIConnectionSource extends ch.qos.logback.core.db.ConnectionSourceBase
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: ch.qos.logback.core.db.JNDIConnectionSource
  super_class: ch.qos.logback.core.db.ConnectionSourceBase
{
  private java.lang.String jndiLocation;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private javax.sql.DataSource dataSource;
    descriptor: Ljavax/sql/DataSource;
    flags: (0x0002) ACC_PRIVATE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
         0: .line 42
            aload 0 /* this */
            invokespecial ch.qos.logback.core.db.ConnectionSourceBase.<init>:()V
         1: .line 43
            aload 0 /* this */
            aconst_null
            putfield ch.qos.logback.core.db.JNDIConnectionSource.jndiLocation:Ljava/lang/String;
         2: .line 44
            aload 0 /* this */
            aconst_null
            putfield ch.qos.logback.core.db.JNDIConnectionSource.dataSource:Ljavax/sql/DataSource;
         3: .line 42
            return
        end local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lch/qos/logback/core/db/JNDIConnectionSource;

  public void start();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
         0: .line 47
            aload 0 /* this */
            getfield ch.qos.logback.core.db.JNDIConnectionSource.jndiLocation:Ljava/lang/String;
            ifnonnull 2
         1: .line 48
            aload 0 /* this */
            ldc "No JNDI location specified for JNDIConnectionSource."
            invokevirtual ch.qos.logback.core.db.JNDIConnectionSource.addError:(Ljava/lang/String;)V
         2: .line 50
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual ch.qos.logback.core.db.JNDIConnectionSource.discoverConnectionProperties:()V
         3: .line 51
            return
        end local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lch/qos/logback/core/db/JNDIConnectionSource;

  public java.sql.Connection getConnection();
    descriptor: ()Ljava/sql/Connection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
         0: .line 54
            aconst_null
            astore 1 /* conn */
        start local 1 // java.sql.Connection conn
         1: .line 56
            aload 0 /* this */
            getfield ch.qos.logback.core.db.JNDIConnectionSource.dataSource:Ljavax/sql/DataSource;
            ifnonnull 3
         2: .line 57
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual ch.qos.logback.core.db.JNDIConnectionSource.lookupDataSource:()Ljavax/sql/DataSource;
            putfield ch.qos.logback.core.db.JNDIConnectionSource.dataSource:Ljavax/sql/DataSource;
         3: .line 59
      StackMap locals: java.sql.Connection
      StackMap stack:
            aload 0 /* this */
            invokevirtual ch.qos.logback.core.db.JNDIConnectionSource.getUser:()Ljava/lang/String;
            ifnull 5
         4: .line 60
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Ignoring property [user] with value ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual ch.qos.logback.core.db.JNDIConnectionSource.getUser:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "] for obtaining a connection from a DataSource."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual ch.qos.logback.core.db.JNDIConnectionSource.addWarn:(Ljava/lang/String;)V
         5: .line 62
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield ch.qos.logback.core.db.JNDIConnectionSource.dataSource:Ljavax/sql/DataSource;
            invokeinterface javax.sql.DataSource.getConnection:()Ljava/sql/Connection;
            astore 1 /* conn */
         6: .line 63
            goto 13
      StackMap locals:
      StackMap stack: javax.naming.NamingException
         7: astore 2 /* ne */
        start local 2 // javax.naming.NamingException ne
         8: .line 64
            aload 0 /* this */
            ldc "Error while getting data source"
            aload 2 /* ne */
            invokevirtual ch.qos.logback.core.db.JNDIConnectionSource.addError:(Ljava/lang/String;Ljava/lang/Throwable;)V
         9: .line 65
            new java.sql.SQLException
            dup
            new java.lang.StringBuilder
            dup
            ldc "NamingException while looking up DataSource: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* ne */
            invokevirtual javax.naming.NamingException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // javax.naming.NamingException ne
        10: .line 66
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
            astore 2 /* cce */
        start local 2 // java.lang.ClassCastException cce
        11: .line 67
            aload 0 /* this */
            ldc "ClassCastException while looking up DataSource."
            aload 2 /* cce */
            invokevirtual ch.qos.logback.core.db.JNDIConnectionSource.addError:(Ljava/lang/String;Ljava/lang/Throwable;)V
        12: .line 68
            new java.sql.SQLException
            dup
            new java.lang.StringBuilder
            dup
            ldc "ClassCastException while looking up DataSource: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* cce */
            invokevirtual java.lang.ClassCastException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.ClassCastException cce
        13: .line 71
      StackMap locals:
      StackMap stack:
            aload 1 /* conn */
            areturn
        end local 1 // java.sql.Connection conn
        end local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lch/qos/logback/core/db/JNDIConnectionSource;
            1   14     1  conn  Ljava/sql/Connection;
            8   10     2    ne  Ljavax/naming/NamingException;
           11   13     2   cce  Ljava/lang/ClassCastException;
      Exception table:
        from    to  target  type
           1     6       7  Class javax.naming.NamingException
           1     6      10  Class java.lang.ClassCastException
    Exceptions:
      throws java.sql.SQLException

  public java.lang.String getJndiLocation();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
         0: .line 80
            aload 0 /* this */
            getfield ch.qos.logback.core.db.JNDIConnectionSource.jndiLocation:Ljava/lang/String;
            areturn
        end local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lch/qos/logback/core/db/JNDIConnectionSource;

  public void setJndiLocation(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
        start local 1 // java.lang.String jndiLocation
         0: .line 90
            aload 0 /* this */
            aload 1 /* jndiLocation */
            putfield ch.qos.logback.core.db.JNDIConnectionSource.jndiLocation:Ljava/lang/String;
         1: .line 91
            return
        end local 1 // java.lang.String jndiLocation
        end local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lch/qos/logback/core/db/JNDIConnectionSource;
            0    2     1  jndiLocation  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      jndiLocation  

  private javax.sql.DataSource lookupDataSource();
    descriptor: ()Ljavax/sql/DataSource;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
         0: .line 94
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Looking up ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield ch.qos.logback.core.db.JNDIConnectionSource.jndiLocation:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "] in JNDI"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual ch.qos.logback.core.db.JNDIConnectionSource.addInfo:(Ljava/lang/String;)V
         1: .line 96
            new javax.naming.InitialContext
            dup
            invokespecial javax.naming.InitialContext.<init>:()V
            astore 2 /* initialContext */
        start local 2 // javax.naming.Context initialContext
         2: .line 97
            aload 2 /* initialContext */
            aload 0 /* this */
            getfield ch.qos.logback.core.db.JNDIConnectionSource.jndiLocation:Ljava/lang/String;
            invokeinterface javax.naming.Context.lookup:(Ljava/lang/String;)Ljava/lang/Object;
            astore 3 /* obj */
        start local 3 // java.lang.Object obj
         3: .line 101
            aload 3 /* obj */
            checkcast javax.sql.DataSource
            astore 1 /* ds */
        start local 1 // javax.sql.DataSource ds
         4: .line 103
            aload 1 /* ds */
            ifnonnull 6
         5: .line 104
            new java.sql.SQLException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Failed to obtain data source from JNDI location "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield ch.qos.logback.core.db.JNDIConnectionSource.jndiLocation:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 106
      StackMap locals: javax.sql.DataSource javax.naming.Context java.lang.Object
      StackMap stack:
            aload 1 /* ds */
            areturn
        end local 3 // java.lang.Object obj
        end local 2 // javax.naming.Context initialContext
        end local 1 // javax.sql.DataSource ds
        end local 0 // ch.qos.logback.core.db.JNDIConnectionSource this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lch/qos/logback/core/db/JNDIConnectionSource;
            4    7     1              ds  Ljavax/sql/DataSource;
            2    7     2  initialContext  Ljavax/naming/Context;
            3    7     3             obj  Ljava/lang/Object;
    Exceptions:
      throws javax.naming.NamingException, java.sql.SQLException
}
SourceFile: "JNDIConnectionSource.java"