public abstract class org.springframework.jdbc.datasource.JdbcTransactionObjectSupport implements org.springframework.transaction.SavepointManager, org.springframework.transaction.support.SmartTransactionObject
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.springframework.jdbc.datasource.JdbcTransactionObjectSupport
  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

  private org.springframework.jdbc.datasource.ConnectionHolder connectionHolder;
    descriptor: Lorg/springframework/jdbc/datasource/ConnectionHolder;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private java.lang.Integer previousIsolationLevel;
    descriptor: Ljava/lang/Integer;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private boolean savepointAllowed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

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

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
         0: .line 49
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 60
            aload 0 /* this */
            iconst_0
            putfield org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.savepointAllowed:Z
         2: .line 49
            return
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;

  public void setConnectionHolder(org.springframework.jdbc.datasource.ConnectionHolder);
    descriptor: (Lorg/springframework/jdbc/datasource/ConnectionHolder;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
        start local 1 // org.springframework.jdbc.datasource.ConnectionHolder connectionHolder
         0: .line 64
            aload 0 /* this */
            aload 1 /* connectionHolder */
            putfield org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.connectionHolder:Lorg/springframework/jdbc/datasource/ConnectionHolder;
         1: .line 65
            return
        end local 1 // org.springframework.jdbc.datasource.ConnectionHolder connectionHolder
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;
            0    2     1  connectionHolder  Lorg/springframework/jdbc/datasource/ConnectionHolder;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
                  Name  Flags
      connectionHolder  

  public org.springframework.jdbc.datasource.ConnectionHolder getConnectionHolder();
    descriptor: ()Lorg/springframework/jdbc/datasource/ConnectionHolder;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
         0: .line 68
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.connectionHolder:Lorg/springframework/jdbc/datasource/ConnectionHolder;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "No ConnectionHolder available"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         3: .line 69
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.connectionHolder:Lorg/springframework/jdbc/datasource/ConnectionHolder;
            areturn
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;

  public boolean hasConnectionHolder();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
         0: .line 73
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.connectionHolder:Lorg/springframework/jdbc/datasource/ConnectionHolder;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;

  public void setPreviousIsolationLevel(java.lang.Integer);
    descriptor: (Ljava/lang/Integer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
        start local 1 // java.lang.Integer previousIsolationLevel
         0: .line 77
            aload 0 /* this */
            aload 1 /* previousIsolationLevel */
            putfield org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.previousIsolationLevel:Ljava/lang/Integer;
         1: .line 78
            return
        end local 1 // java.lang.Integer previousIsolationLevel
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;
            0    2     1  previousIsolationLevel  Ljava/lang/Integer;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
                        Name  Flags
      previousIsolationLevel  

  public java.lang.Integer getPreviousIsolationLevel();
    descriptor: ()Ljava/lang/Integer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
         0: .line 82
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.previousIsolationLevel:Ljava/lang/Integer;
            areturn
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public void setSavepointAllowed(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
        start local 1 // boolean savepointAllowed
         0: .line 86
            aload 0 /* this */
            iload 1 /* savepointAllowed */
            putfield org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.savepointAllowed:Z
         1: .line 87
            return
        end local 1 // boolean savepointAllowed
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;
            0    2     1  savepointAllowed  Z
    MethodParameters:
                  Name  Flags
      savepointAllowed  

  public boolean isSavepointAllowed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
         0: .line 90
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.savepointAllowed:Z
            ireturn
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;

  public void flush();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
         0: .line 96
            return
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;

  public java.lang.Object createSavepoint();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
         0: .line 109
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.getConnectionHolderForSavepoint:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            astore 1 /* conHolder */
        start local 1 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
         1: .line 111
            aload 1 /* conHolder */
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.supportsSavepoints:()Z
            ifne 5
         2: .line 112
            new org.springframework.transaction.NestedTransactionNotSupportedException
            dup
         3: .line 113
            ldc "Cannot create a nested transaction because savepoints are not supported by your JDBC driver"
         4: .line 112
            invokespecial org.springframework.transaction.NestedTransactionNotSupportedException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 115
      StackMap locals: org.springframework.jdbc.datasource.ConnectionHolder
      StackMap stack:
            aload 1 /* conHolder */
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.isRollbackOnly:()Z
            ifeq 9
         6: .line 116
            new org.springframework.transaction.CannotCreateTransactionException
            dup
         7: .line 117
            ldc "Cannot create savepoint for transaction which is already marked as rollback-only"
         8: .line 116
            invokespecial org.springframework.transaction.CannotCreateTransactionException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 119
      StackMap locals:
      StackMap stack:
            aload 1 /* conHolder */
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.createSavepoint:()Ljava/sql/Savepoint;
        10: areturn
        11: .line 121
      StackMap locals:
      StackMap stack: java.sql.SQLException
            astore 2 /* ex */
        start local 2 // java.sql.SQLException ex
        12: .line 122
            new org.springframework.transaction.CannotCreateTransactionException
            dup
            ldc "Could not create JDBC savepoint"
            aload 2 /* ex */
            invokespecial org.springframework.transaction.CannotCreateTransactionException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.sql.SQLException ex
        end local 1 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0       this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;
            1   13     1  conHolder  Lorg/springframework/jdbc/datasource/ConnectionHolder;
           12   13     2         ex  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           1    10      11  Class java.sql.SQLException
    Exceptions:
      throws org.springframework.transaction.TransactionException

  public void rollbackToSavepoint(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
        start local 1 // java.lang.Object savepoint
         0: .line 132
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.getConnectionHolderForSavepoint:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            astore 2 /* conHolder */
        start local 2 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
         1: .line 134
            aload 2 /* conHolder */
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getConnection:()Ljava/sql/Connection;
            aload 1 /* savepoint */
            checkcast java.sql.Savepoint
            invokeinterface java.sql.Connection.rollback:(Ljava/sql/Savepoint;)V
         2: .line 135
            aload 2 /* conHolder */
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.resetRollbackOnly:()V
         3: .line 136
            goto 6
         4: .line 137
      StackMap locals: org.springframework.jdbc.datasource.JdbcTransactionObjectSupport java.lang.Object org.springframework.jdbc.datasource.ConnectionHolder
      StackMap stack: java.lang.Throwable
            astore 3 /* ex */
        start local 3 // java.lang.Throwable ex
         5: .line 138
            new org.springframework.transaction.TransactionSystemException
            dup
            ldc "Could not roll back to JDBC savepoint"
            aload 3 /* ex */
            invokespecial org.springframework.transaction.TransactionSystemException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Throwable ex
         6: .line 140
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        end local 1 // java.lang.Object savepoint
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;
            0    7     1  savepoint  Ljava/lang/Object;
            1    7     2  conHolder  Lorg/springframework/jdbc/datasource/ConnectionHolder;
            5    6     3         ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     3       4  Class java.lang.Throwable
    Exceptions:
      throws org.springframework.transaction.TransactionException
    MethodParameters:
           Name  Flags
      savepoint  

  public void releaseSavepoint(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
        start local 1 // java.lang.Object savepoint
         0: .line 148
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.getConnectionHolderForSavepoint:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            astore 2 /* conHolder */
        start local 2 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
         1: .line 150
            aload 2 /* conHolder */
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getConnection:()Ljava/sql/Connection;
            aload 1 /* savepoint */
            checkcast java.sql.Savepoint
            invokeinterface java.sql.Connection.releaseSavepoint:(Ljava/sql/Savepoint;)V
         2: .line 151
            goto 5
         3: .line 152
      StackMap locals: org.springframework.jdbc.datasource.JdbcTransactionObjectSupport java.lang.Object org.springframework.jdbc.datasource.ConnectionHolder
      StackMap stack: java.lang.Throwable
            astore 3 /* ex */
        start local 3 // java.lang.Throwable ex
         4: .line 153
            getstatic org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.logger:Lorg/apache/commons/logging/Log;
            ldc "Could not explicitly release JDBC savepoint"
            aload 3 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 3 // java.lang.Throwable ex
         5: .line 155
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        end local 1 // java.lang.Object savepoint
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;
            0    6     1  savepoint  Ljava/lang/Object;
            1    6     2  conHolder  Lorg/springframework/jdbc/datasource/ConnectionHolder;
            4    5     3         ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.Throwable
    Exceptions:
      throws org.springframework.transaction.TransactionException
    MethodParameters:
           Name  Flags
      savepoint  

  protected org.springframework.jdbc.datasource.ConnectionHolder getConnectionHolderForSavepoint();
    descriptor: ()Lorg/springframework/jdbc/datasource/ConnectionHolder;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
         0: .line 158
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.isSavepointAllowed:()Z
            ifne 4
         1: .line 159
            new org.springframework.transaction.NestedTransactionNotSupportedException
            dup
         2: .line 160
            ldc "Transaction manager does not allow nested transactions"
         3: .line 159
            invokespecial org.springframework.transaction.NestedTransactionNotSupportedException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 162
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.hasConnectionHolder:()Z
            ifne 8
         5: .line 163
            new org.springframework.transaction.TransactionUsageException
            dup
         6: .line 164
            ldc "Cannot create nested transaction when not exposing a JDBC transaction"
         7: .line 163
            invokespecial org.springframework.transaction.TransactionUsageException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 166
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            areturn
        end local 0 // org.springframework.jdbc.datasource.JdbcTransactionObjectSupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/springframework/jdbc/datasource/JdbcTransactionObjectSupport;
    Exceptions:
      throws org.springframework.transaction.TransactionException
}
SourceFile: "JdbcTransactionObjectSupport.java"