public class org.springframework.transaction.support.TransactionTemplate extends org.springframework.transaction.support.DefaultTransactionDefinition implements org.springframework.transaction.support.TransactionOperations, org.springframework.beans.factory.InitializingBean
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.transaction.support.TransactionTemplate
  super_class: org.springframework.transaction.support.DefaultTransactionDefinition
{
  protected final org.apache.commons.logging.Log logger;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private org.springframework.transaction.PlatformTransactionManager transactionManager;
    descriptor: Lorg/springframework/transaction/PlatformTransactionManager;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.TransactionTemplate this
         0: .line 81
            aload 0 /* this */
            invokespecial org.springframework.transaction.support.DefaultTransactionDefinition.<init>:()V
         1: .line 69
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putfield org.springframework.transaction.support.TransactionTemplate.logger:Lorg/apache/commons/logging/Log;
         2: .line 82
            return
        end local 0 // org.springframework.transaction.support.TransactionTemplate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/transaction/support/TransactionTemplate;

  public void <init>(org.springframework.transaction.PlatformTransactionManager);
    descriptor: (Lorg/springframework/transaction/PlatformTransactionManager;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.TransactionTemplate this
        start local 1 // org.springframework.transaction.PlatformTransactionManager transactionManager
         0: .line 88
            aload 0 /* this */
            invokespecial org.springframework.transaction.support.DefaultTransactionDefinition.<init>:()V
         1: .line 69
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putfield org.springframework.transaction.support.TransactionTemplate.logger:Lorg/apache/commons/logging/Log;
         2: .line 89
            aload 0 /* this */
            aload 1 /* transactionManager */
            putfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
         3: .line 90
            return
        end local 1 // org.springframework.transaction.PlatformTransactionManager transactionManager
        end local 0 // org.springframework.transaction.support.TransactionTemplate this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    4     0                this  Lorg/springframework/transaction/support/TransactionTemplate;
            0    4     1  transactionManager  Lorg/springframework/transaction/PlatformTransactionManager;
    MethodParameters:
                    Name  Flags
      transactionManager  

  public void <init>(org.springframework.transaction.PlatformTransactionManager, org.springframework.transaction.TransactionDefinition);
    descriptor: (Lorg/springframework/transaction/PlatformTransactionManager;Lorg/springframework/transaction/TransactionDefinition;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.springframework.transaction.support.TransactionTemplate this
        start local 1 // org.springframework.transaction.PlatformTransactionManager transactionManager
        start local 2 // org.springframework.transaction.TransactionDefinition transactionDefinition
         0: .line 100
            aload 0 /* this */
            aload 2 /* transactionDefinition */
            invokespecial org.springframework.transaction.support.DefaultTransactionDefinition.<init>:(Lorg/springframework/transaction/TransactionDefinition;)V
         1: .line 69
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putfield org.springframework.transaction.support.TransactionTemplate.logger:Lorg/apache/commons/logging/Log;
         2: .line 101
            aload 0 /* this */
            aload 1 /* transactionManager */
            putfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
         3: .line 102
            return
        end local 2 // org.springframework.transaction.TransactionDefinition transactionDefinition
        end local 1 // org.springframework.transaction.PlatformTransactionManager transactionManager
        end local 0 // org.springframework.transaction.support.TransactionTemplate this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    4     0                   this  Lorg/springframework/transaction/support/TransactionTemplate;
            0    4     1     transactionManager  Lorg/springframework/transaction/PlatformTransactionManager;
            0    4     2  transactionDefinition  Lorg/springframework/transaction/TransactionDefinition;
    MethodParameters:
                       Name  Flags
      transactionManager     
      transactionDefinition  

  public void setTransactionManager(org.springframework.transaction.PlatformTransactionManager);
    descriptor: (Lorg/springframework/transaction/PlatformTransactionManager;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.TransactionTemplate this
        start local 1 // org.springframework.transaction.PlatformTransactionManager transactionManager
         0: .line 109
            aload 0 /* this */
            aload 1 /* transactionManager */
            putfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
         1: .line 110
            return
        end local 1 // org.springframework.transaction.PlatformTransactionManager transactionManager
        end local 0 // org.springframework.transaction.support.TransactionTemplate this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    2     0                this  Lorg/springframework/transaction/support/TransactionTemplate;
            0    2     1  transactionManager  Lorg/springframework/transaction/PlatformTransactionManager;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
                    Name  Flags
      transactionManager  

  public org.springframework.transaction.PlatformTransactionManager getTransactionManager();
    descriptor: ()Lorg/springframework/transaction/PlatformTransactionManager;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.TransactionTemplate this
         0: .line 117
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
            areturn
        end local 0 // org.springframework.transaction.support.TransactionTemplate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/transaction/support/TransactionTemplate;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public void afterPropertiesSet();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.TransactionTemplate this
         0: .line 122
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
            ifnonnull 2
         1: .line 123
            new java.lang.IllegalArgumentException
            dup
            ldc "Property 'transactionManager' is required"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 125
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.springframework.transaction.support.TransactionTemplate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/transaction/support/TransactionTemplate;

  public <T> T execute(org.springframework.transaction.support.TransactionCallback<T>);
    descriptor: (Lorg/springframework/transaction/support/TransactionCallback;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.springframework.transaction.support.TransactionTemplate this
        start local 1 // org.springframework.transaction.support.TransactionCallback action
         0: .line 131
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "No PlatformTransactionManager set"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         3: .line 133
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
            instanceof org.springframework.transaction.support.CallbackPreferringPlatformTransactionManager
            ifeq 5
         4: .line 134
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
            checkcast org.springframework.transaction.support.CallbackPreferringPlatformTransactionManager
            aload 0 /* this */
            aload 1 /* action */
            invokeinterface org.springframework.transaction.support.CallbackPreferringPlatformTransactionManager.execute:(Lorg/springframework/transaction/TransactionDefinition;Lorg/springframework/transaction/support/TransactionCallback;)Ljava/lang/Object;
            areturn
         5: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
            aload 0 /* this */
            invokeinterface org.springframework.transaction.PlatformTransactionManager.getTransaction:(Lorg/springframework/transaction/TransactionDefinition;)Lorg/springframework/transaction/TransactionStatus;
            astore 2 /* status */
        start local 2 // org.springframework.transaction.TransactionStatus status
         6: .line 140
            aload 1 /* action */
            aload 2 /* status */
            invokeinterface org.springframework.transaction.support.TransactionCallback.doInTransaction:(Lorg/springframework/transaction/TransactionStatus;)Ljava/lang/Object;
            astore 3 /* result */
        start local 3 // java.lang.Object result
         7: .line 141
            goto 14
        end local 3 // java.lang.Object result
         8: .line 142
      StackMap locals: org.springframework.transaction.support.TransactionTemplate org.springframework.transaction.support.TransactionCallback org.springframework.transaction.TransactionStatus
      StackMap stack: java.lang.Throwable
            astore 4 /* ex */
        start local 4 // java.lang.Throwable ex
         9: .line 144
            aload 0 /* this */
            aload 2 /* status */
            aload 4 /* ex */
            invokevirtual org.springframework.transaction.support.TransactionTemplate.rollbackOnException:(Lorg/springframework/transaction/TransactionStatus;Ljava/lang/Throwable;)V
        10: .line 145
            aload 4 /* ex */
            athrow
        end local 4 // java.lang.Throwable ex
        11: .line 147
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* ex */
        start local 4 // java.lang.Throwable ex
        12: .line 149
            aload 0 /* this */
            aload 2 /* status */
            aload 4 /* ex */
            invokevirtual org.springframework.transaction.support.TransactionTemplate.rollbackOnException:(Lorg/springframework/transaction/TransactionStatus;Ljava/lang/Throwable;)V
        13: .line 150
            new java.lang.reflect.UndeclaredThrowableException
            dup
            aload 4 /* ex */
            ldc "TransactionCallback threw undeclared checked exception"
            invokespecial java.lang.reflect.UndeclaredThrowableException.<init>:(Ljava/lang/Throwable;Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.Throwable ex
        start local 3 // java.lang.Object result
        14: .line 152
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
            aload 2 /* status */
            invokeinterface org.springframework.transaction.PlatformTransactionManager.commit:(Lorg/springframework/transaction/TransactionStatus;)V
        15: .line 153
            aload 3 /* result */
            areturn
        end local 3 // java.lang.Object result
        end local 2 // org.springframework.transaction.TransactionStatus status
        end local 1 // org.springframework.transaction.support.TransactionCallback action
        end local 0 // org.springframework.transaction.support.TransactionTemplate this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    this  Lorg/springframework/transaction/support/TransactionTemplate;
            0   16     1  action  Lorg/springframework/transaction/support/TransactionCallback<TT;>;
            6   16     2  status  Lorg/springframework/transaction/TransactionStatus;
            7    8     3  result  TT;
           14   16     3  result  TT;
            9   11     4      ex  Ljava/lang/Throwable;
           12   14     4      ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           6     7       8  Class java.lang.RuntimeException
           6     7       8  Class java.lang.Error
           6     7      11  Class java.lang.Throwable
    Exceptions:
      throws org.springframework.transaction.TransactionException
    Signature: <T:Ljava/lang/Object;>(Lorg/springframework/transaction/support/TransactionCallback<TT;>;)TT;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
        Name  Flags
      action  

  private void rollbackOnException(org.springframework.transaction.TransactionStatus, java.lang.Throwable);
    descriptor: (Lorg/springframework/transaction/TransactionStatus;Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.springframework.transaction.support.TransactionTemplate this
        start local 1 // org.springframework.transaction.TransactionStatus status
        start local 2 // java.lang.Throwable ex
         0: .line 164
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "No PlatformTransactionManager set"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         3: .line 166
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.logger:Lorg/apache/commons/logging/Log;
            ldc "Initiating transaction rollback on application exception"
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         4: .line 168
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.transactionManager:Lorg/springframework/transaction/PlatformTransactionManager;
            aload 1 /* status */
            invokeinterface org.springframework.transaction.PlatformTransactionManager.rollback:(Lorg/springframework/transaction/TransactionStatus;)V
         5: .line 169
            goto 13
         6: .line 170
      StackMap locals:
      StackMap stack: org.springframework.transaction.TransactionSystemException
            astore 3 /* ex2 */
        start local 3 // org.springframework.transaction.TransactionSystemException ex2
         7: .line 171
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.logger:Lorg/apache/commons/logging/Log;
            ldc "Application exception overridden by rollback exception"
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         8: .line 172
            aload 3 /* ex2 */
            aload 2 /* ex */
            invokevirtual org.springframework.transaction.TransactionSystemException.initApplicationException:(Ljava/lang/Throwable;)V
         9: .line 173
            aload 3 /* ex2 */
            athrow
        end local 3 // org.springframework.transaction.TransactionSystemException ex2
        10: .line 175
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3 /* ex2 */
        start local 3 // java.lang.Throwable ex2
        11: .line 176
            aload 0 /* this */
            getfield org.springframework.transaction.support.TransactionTemplate.logger:Lorg/apache/commons/logging/Log;
            ldc "Application exception overridden by rollback exception"
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        12: .line 177
            aload 3 /* ex2 */
            athrow
        end local 3 // java.lang.Throwable ex2
        13: .line 179
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Throwable ex
        end local 1 // org.springframework.transaction.TransactionStatus status
        end local 0 // org.springframework.transaction.support.TransactionTemplate this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Lorg/springframework/transaction/support/TransactionTemplate;
            0   14     1  status  Lorg/springframework/transaction/TransactionStatus;
            0   14     2      ex  Ljava/lang/Throwable;
            7   10     3     ex2  Lorg/springframework/transaction/TransactionSystemException;
           11   13     3     ex2  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4     5       6  Class org.springframework.transaction.TransactionSystemException
           4     5      10  Class java.lang.RuntimeException
           4     5      10  Class java.lang.Error
    Exceptions:
      throws org.springframework.transaction.TransactionException
    MethodParameters:
        Name  Flags
      status  
      ex      

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.TransactionTemplate this
        start local 1 // java.lang.Object other
         0: .line 184
            aload 0 /* this */
            aload 1 /* other */
            if_acmpeq 3
            aload 0 /* this */
            aload 1 /* other */
            invokespecial org.springframework.transaction.support.DefaultTransactionDefinition.equals:(Ljava/lang/Object;)Z
            ifeq 2
            aload 1 /* other */
            instanceof org.springframework.transaction.support.TransactionTemplate
            ifeq 3
         1: .line 185
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.TransactionTemplate.getTransactionManager:()Lorg/springframework/transaction/PlatformTransactionManager;
            aload 1 /* other */
            checkcast org.springframework.transaction.support.TransactionTemplate
            invokevirtual org.springframework.transaction.support.TransactionTemplate.getTransactionManager:()Lorg/springframework/transaction/PlatformTransactionManager;
            if_acmpeq 3
         2: .line 184
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 1 // java.lang.Object other
        end local 0 // org.springframework.transaction.support.TransactionTemplate this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/springframework/transaction/support/TransactionTemplate;
            0    4     1  other  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      other  
}
SourceFile: "TransactionTemplate.java"