public abstract class org.springframework.jca.cci.connection.ConnectionFactoryUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.springframework.jca.cci.connection.ConnectionFactoryUtils
  super_class: java.lang.Object
{
  private static final org.apache.commons.logging.Log logger;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 55
            ldc Lorg/springframework/jca/cci/connection/ConnectionFactoryUtils;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putstatic org.springframework.jca.cci.connection.ConnectionFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.jca.cci.connection.ConnectionFactoryUtils this
         0: .line 53
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.springframework.jca.cci.connection.ConnectionFactoryUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/jca/cci/connection/ConnectionFactoryUtils;

  public static javax.resource.cci.Connection getConnection(javax.resource.cci.ConnectionFactory);
    descriptor: (Ljavax/resource/cci/ConnectionFactory;)Ljavax/resource/cci/Connection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // javax.resource.cci.ConnectionFactory cf
         0: .line 72
            aload 0 /* cf */
            aconst_null
            invokestatic org.springframework.jca.cci.connection.ConnectionFactoryUtils.getConnection:(Ljavax/resource/cci/ConnectionFactory;Ljavax/resource/cci/ConnectionSpec;)Ljavax/resource/cci/Connection;
            areturn
        end local 0 // javax.resource.cci.ConnectionFactory cf
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    cf  Ljavax/resource/cci/ConnectionFactory;
    Exceptions:
      throws org.springframework.jca.cci.CannotGetCciConnectionException
    MethodParameters:
      Name  Flags
      cf    

  public static javax.resource.cci.Connection getConnection(javax.resource.cci.ConnectionFactory, javax.resource.cci.ConnectionSpec);
    descriptor: (Ljavax/resource/cci/ConnectionFactory;Ljavax/resource/cci/ConnectionSpec;)Ljavax/resource/cci/Connection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // javax.resource.cci.ConnectionFactory cf
        start local 1 // javax.resource.cci.ConnectionSpec spec
         0: .line 94
            aload 1 /* spec */
            ifnull 4
         1: .line 95
            aload 0 /* cf */
            ldc "No ConnectionFactory specified"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 96
            aload 0 /* cf */
            aload 1 /* spec */
            invokeinterface javax.resource.cci.ConnectionFactory.getConnection:(Ljavax/resource/cci/ConnectionSpec;)Ljavax/resource/cci/Connection;
         3: areturn
         4: .line 99
      StackMap locals:
      StackMap stack:
            aload 0 /* cf */
            invokestatic org.springframework.jca.cci.connection.ConnectionFactoryUtils.doGetConnection:(Ljavax/resource/cci/ConnectionFactory;)Ljavax/resource/cci/Connection;
         5: areturn
         6: .line 102
      StackMap locals:
      StackMap stack: javax.resource.ResourceException
            astore 2 /* ex */
        start local 2 // javax.resource.ResourceException ex
         7: .line 103
            new org.springframework.jca.cci.CannotGetCciConnectionException
            dup
            ldc "Could not get CCI Connection"
            aload 2 /* ex */
            invokespecial org.springframework.jca.cci.CannotGetCciConnectionException.<init>:(Ljava/lang/String;Ljavax/resource/ResourceException;)V
            athrow
        end local 2 // javax.resource.ResourceException ex
        end local 1 // javax.resource.cci.ConnectionSpec spec
        end local 0 // javax.resource.cci.ConnectionFactory cf
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0    cf  Ljavax/resource/cci/ConnectionFactory;
            0    8     1  spec  Ljavax/resource/cci/ConnectionSpec;
            7    8     2    ex  Ljavax/resource/ResourceException;
      Exception table:
        from    to  target  type
           0     3       6  Class javax.resource.ResourceException
           4     5       6  Class javax.resource.ResourceException
    Exceptions:
      throws org.springframework.jca.cci.CannotGetCciConnectionException
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      cf    
      spec  

  public static javax.resource.cci.Connection doGetConnection(javax.resource.cci.ConnectionFactory);
    descriptor: (Ljavax/resource/cci/ConnectionFactory;)Ljavax/resource/cci/Connection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // javax.resource.cci.ConnectionFactory cf
         0: .line 120
            aload 0 /* cf */
            ldc "No ConnectionFactory specified"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 122
            aload 0 /* cf */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.jca.cci.connection.ConnectionHolder
            astore 1 /* conHolder */
        start local 1 // org.springframework.jca.cci.connection.ConnectionHolder conHolder
         2: .line 123
            aload 1 /* conHolder */
            ifnull 4
         3: .line 124
            aload 1 /* conHolder */
            invokevirtual org.springframework.jca.cci.connection.ConnectionHolder.getConnection:()Ljavax/resource/cci/Connection;
            areturn
         4: .line 127
      StackMap locals: org.springframework.jca.cci.connection.ConnectionHolder
      StackMap stack:
            getstatic org.springframework.jca.cci.connection.ConnectionFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            ldc "Opening CCI Connection"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         5: .line 128
            aload 0 /* cf */
            invokeinterface javax.resource.cci.ConnectionFactory.getConnection:()Ljavax/resource/cci/Connection;
            astore 2 /* con */
        start local 2 // javax.resource.cci.Connection con
         6: .line 130
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isSynchronizationActive:()Z
            ifeq 11
         7: .line 131
            new org.springframework.jca.cci.connection.ConnectionHolder
            dup
            aload 2 /* con */
            invokespecial org.springframework.jca.cci.connection.ConnectionHolder.<init>:(Ljavax/resource/cci/Connection;)V
            astore 1 /* conHolder */
         8: .line 132
            aload 1 /* conHolder */
            iconst_1
            invokevirtual org.springframework.jca.cci.connection.ConnectionHolder.setSynchronizedWithTransaction:(Z)V
         9: .line 133
            new org.springframework.jca.cci.connection.ConnectionFactoryUtils$ConnectionSynchronization
            dup
            aload 1 /* conHolder */
            aload 0 /* cf */
            invokespecial org.springframework.jca.cci.connection.ConnectionFactoryUtils$ConnectionSynchronization.<init>:(Lorg/springframework/jca/cci/connection/ConnectionHolder;Ljavax/resource/cci/ConnectionFactory;)V
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.registerSynchronization:(Lorg/springframework/transaction/support/TransactionSynchronization;)V
        10: .line 134
            aload 0 /* cf */
            aload 1 /* conHolder */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
        11: .line 137
      StackMap locals: javax.resource.cci.Connection
      StackMap stack:
            aload 2 /* con */
            areturn
        end local 2 // javax.resource.cci.Connection con
        end local 1 // org.springframework.jca.cci.connection.ConnectionHolder conHolder
        end local 0 // javax.resource.cci.ConnectionFactory cf
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0         cf  Ljavax/resource/cci/ConnectionFactory;
            2   12     1  conHolder  Lorg/springframework/jca/cci/connection/ConnectionHolder;
            6   12     2        con  Ljavax/resource/cci/Connection;
    Exceptions:
      throws javax.resource.ResourceException
    MethodParameters:
      Name  Flags
      cf    

  public static boolean isConnectionTransactional(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory);
    descriptor: (Ljavax/resource/cci/Connection;Ljavax/resource/cci/ConnectionFactory;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // javax.resource.cci.Connection con
        start local 1 // javax.resource.cci.ConnectionFactory cf
         0: .line 149
            aload 1 /* cf */
            ifnonnull 2
         1: .line 150
            iconst_0
            ireturn
         2: .line 152
      StackMap locals:
      StackMap stack:
            aload 1 /* cf */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.jca.cci.connection.ConnectionHolder
            astore 2 /* conHolder */
        start local 2 // org.springframework.jca.cci.connection.ConnectionHolder conHolder
         3: .line 153
            aload 2 /* conHolder */
            ifnull 4
            aload 2 /* conHolder */
            invokevirtual org.springframework.jca.cci.connection.ConnectionHolder.getConnection:()Ljavax/resource/cci/Connection;
            aload 0 /* con */
            if_acmpne 4
            iconst_1
            ireturn
      StackMap locals: org.springframework.jca.cci.connection.ConnectionHolder
      StackMap stack:
         4: iconst_0
            ireturn
        end local 2 // org.springframework.jca.cci.connection.ConnectionHolder conHolder
        end local 1 // javax.resource.cci.ConnectionFactory cf
        end local 0 // javax.resource.cci.Connection con
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0        con  Ljavax/resource/cci/Connection;
            0    5     1         cf  Ljavax/resource/cci/ConnectionFactory;
            3    5     2  conHolder  Lorg/springframework/jca/cci/connection/ConnectionHolder;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      con   
      cf    

  public static void releaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory);
    descriptor: (Ljavax/resource/cci/Connection;Ljavax/resource/cci/ConnectionFactory;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // javax.resource.cci.Connection con
        start local 1 // javax.resource.cci.ConnectionFactory cf
         0: .line 167
            aload 0 /* con */
            aload 1 /* cf */
            invokestatic org.springframework.jca.cci.connection.ConnectionFactoryUtils.doReleaseConnection:(Ljavax/resource/cci/Connection;Ljavax/resource/cci/ConnectionFactory;)V
         1: .line 168
            goto 7
         2: .line 169
      StackMap locals:
      StackMap stack: javax.resource.ResourceException
            astore 2 /* ex */
        start local 2 // javax.resource.ResourceException ex
         3: .line 170
            getstatic org.springframework.jca.cci.connection.ConnectionFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            ldc "Could not close CCI Connection"
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 2 // javax.resource.ResourceException ex
         4: goto 7
         5: .line 172
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2 /* ex */
        start local 2 // java.lang.Throwable ex
         6: .line 174
            getstatic org.springframework.jca.cci.connection.ConnectionFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            ldc "Unexpected exception on closing CCI Connection"
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 2 // java.lang.Throwable ex
         7: .line 176
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.resource.cci.ConnectionFactory cf
        end local 0 // javax.resource.cci.Connection con
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0   con  Ljavax/resource/cci/Connection;
            0    8     1    cf  Ljavax/resource/cci/ConnectionFactory;
            3    4     2    ex  Ljavax/resource/ResourceException;
            6    7     2    ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class javax.resource.ResourceException
           0     1       5  Class java.lang.Throwable
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      con   
      cf    

  public static void doReleaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory);
    descriptor: (Ljavax/resource/cci/Connection;Ljavax/resource/cci/ConnectionFactory;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // javax.resource.cci.Connection con
        start local 1 // javax.resource.cci.ConnectionFactory cf
         0: .line 192
            aload 0 /* con */
            ifnull 1
            aload 0 /* con */
            aload 1 /* cf */
            invokestatic org.springframework.jca.cci.connection.ConnectionFactoryUtils.isConnectionTransactional:(Ljavax/resource/cci/Connection;Ljavax/resource/cci/ConnectionFactory;)Z
            ifeq 2
         1: .line 193
      StackMap locals:
      StackMap stack:
            return
         2: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* con */
            invokeinterface javax.resource.cci.Connection.close:()V
         3: .line 196
            return
        end local 1 // javax.resource.cci.ConnectionFactory cf
        end local 0 // javax.resource.cci.Connection con
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0   con  Ljavax/resource/cci/Connection;
            0    4     1    cf  Ljavax/resource/cci/ConnectionFactory;
    Exceptions:
      throws javax.resource.ResourceException
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      con   
      cf    
}
SourceFile: "ConnectionFactoryUtils.java"
NestMembers:
  org.springframework.jca.cci.connection.ConnectionFactoryUtils$ConnectionSynchronization
InnerClasses:
  private ConnectionSynchronization = org.springframework.jca.cci.connection.ConnectionFactoryUtils$ConnectionSynchronization of org.springframework.jca.cci.connection.ConnectionFactoryUtils