class org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler implements java.lang.reflect.InvocationHandler
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler
super_class: java.lang.Object
{
private final javax.sql.DataSource targetDataSource;
descriptor: Ljavax/sql/DataSource;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.sql.Connection target;
descriptor: Ljava/sql/Connection;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
private boolean closed;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
final org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy this$0;
descriptor: Lorg/springframework/jdbc/datasource/TransactionAwareDataSourceProxy;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
public void <init>(org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy, javax.sql.DataSource);
descriptor: (Lorg/springframework/jdbc/datasource/TransactionAwareDataSourceProxy;Ljavax/sql/DataSource;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 // org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler this
start local 2 // javax.sql.DataSource targetDataSource
0: .line 168
aload 0 /* this */
aload 1
putfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.this$0:Lorg/springframework/jdbc/datasource/TransactionAwareDataSourceProxy;
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 166
aload 0 /* this */
iconst_0
putfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.closed:Z
2: .line 169
aload 0 /* this */
aload 2 /* targetDataSource */
putfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.targetDataSource:Ljavax/sql/DataSource;
3: .line 170
return
end local 2 // javax.sql.DataSource targetDataSource
end local 0 // org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/jdbc/datasource/TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler;
0 4 2 targetDataSource Ljavax/sql/DataSource;
MethodParameters:
Name Flags
this$0 final
targetDataSource
public java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]);
descriptor: (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=8, args_size=4
start local 0 // org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler this
start local 1 // java.lang.Object proxy
start local 2 // java.lang.reflect.Method method
start local 3 // java.lang.Object[] args
0: .line 177
aload 2 /* method */
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "equals"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 3
1: .line 179
aload 1 /* proxy */
aload 3 /* args */
iconst_0
aaload
if_acmpne 2
iconst_1
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
areturn
StackMap locals:
StackMap stack:
2: iconst_0
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
areturn
3: .line 181
StackMap locals:
StackMap stack:
aload 2 /* method */
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "hashCode"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 5
4: .line 183
aload 1 /* proxy */
invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
areturn
5: .line 185
StackMap locals:
StackMap stack:
aload 2 /* method */
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "toString"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 12
6: .line 187
new java.lang.StringBuilder
dup
ldc "Transaction-aware proxy for target Connection "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
astore 4 /* sb */
start local 4 // java.lang.StringBuilder sb
7: .line 188
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
ifnull 10
8: .line 189
aload 4 /* sb */
ldc "["
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
9: .line 190
goto 11
10: .line 192
StackMap locals: java.lang.StringBuilder
StackMap stack:
aload 4 /* sb */
ldc " from DataSource ["
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.targetDataSource:Ljavax/sql/DataSource;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
11: .line 194
StackMap locals:
StackMap stack:
aload 4 /* sb */
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 4 // java.lang.StringBuilder sb
12: .line 196
StackMap locals:
StackMap stack:
aload 2 /* method */
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "unwrap"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 15
13: .line 197
aload 3 /* args */
iconst_0
aaload
checkcast java.lang.Class
aload 1 /* proxy */
invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
ifeq 24
14: .line 198
aload 1 /* proxy */
areturn
15: .line 201
StackMap locals:
StackMap stack:
aload 2 /* method */
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "isWrapperFor"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 18
16: .line 202
aload 3 /* args */
iconst_0
aaload
checkcast java.lang.Class
aload 1 /* proxy */
invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
ifeq 24
17: .line 203
iconst_1
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
areturn
18: .line 206
StackMap locals:
StackMap stack:
aload 2 /* method */
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "close"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 22
19: .line 208
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.targetDataSource:Ljavax/sql/DataSource;
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection:(Ljava/sql/Connection;Ljavax/sql/DataSource;)V
20: .line 209
aload 0 /* this */
iconst_1
putfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.closed:Z
21: .line 210
aconst_null
areturn
22: .line 212
StackMap locals:
StackMap stack:
aload 2 /* method */
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "isClosed"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 24
23: .line 213
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.closed:Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
areturn
24: .line 216
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
ifnonnull 29
25: .line 217
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.closed:Z
ifeq 27
26: .line 218
new java.sql.SQLException
dup
ldc "Connection handle already closed"
invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;)V
athrow
27: .line 220
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.this$0:Lorg/springframework/jdbc/datasource/TransactionAwareDataSourceProxy;
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.targetDataSource:Ljavax/sql/DataSource;
invokevirtual org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy.shouldObtainFixedConnection:(Ljavax/sql/DataSource;)Z
ifeq 29
28: .line 221
aload 0 /* this */
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.targetDataSource:Ljavax/sql/DataSource;
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection:(Ljavax/sql/DataSource;)Ljava/sql/Connection;
putfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
29: .line 224
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
astore 4 /* actualTarget */
start local 4 // java.sql.Connection actualTarget
30: .line 225
aload 4 /* actualTarget */
ifnonnull 32
31: .line 226
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.targetDataSource:Ljavax/sql/DataSource;
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection:(Ljavax/sql/DataSource;)Ljava/sql/Connection;
astore 4 /* actualTarget */
32: .line 229
StackMap locals: java.sql.Connection
StackMap stack:
aload 2 /* method */
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "getTargetConnection"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 34
33: .line 231
aload 4 /* actualTarget */
areturn
34: .line 236
StackMap locals:
StackMap stack:
aload 2 /* method */
aload 4 /* actualTarget */
aload 3 /* args */
invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
astore 5 /* retVal */
start local 5 // java.lang.Object retVal
35: .line 240
aload 5 /* retVal */
instanceof java.sql.Statement
ifeq 37
36: .line 241
aload 5 /* retVal */
checkcast java.sql.Statement
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.targetDataSource:Ljavax/sql/DataSource;
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.applyTransactionTimeout:(Ljava/sql/Statement;Ljavax/sql/DataSource;)V
37: .line 244
StackMap locals: java.lang.Object
StackMap stack:
aload 5 /* retVal */
astore 7
38: .line 250
aload 4 /* actualTarget */
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
if_acmpeq 40
39: .line 251
aload 4 /* actualTarget */
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.targetDataSource:Ljavax/sql/DataSource;
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection:(Ljava/sql/Connection;Ljavax/sql/DataSource;)V
40: .line 244
StackMap locals: org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler java.lang.Object java.lang.reflect.Method java.lang.Object[] java.sql.Connection java.lang.Object top java.lang.Object
StackMap stack:
aload 7
areturn
end local 5 // java.lang.Object retVal
41: .line 246
StackMap locals: org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler java.lang.Object java.lang.reflect.Method java.lang.Object[] java.sql.Connection
StackMap stack: java.lang.reflect.InvocationTargetException
astore 5 /* ex */
start local 5 // java.lang.reflect.InvocationTargetException ex
42: .line 247
aload 5 /* ex */
invokevirtual java.lang.reflect.InvocationTargetException.getTargetException:()Ljava/lang/Throwable;
athrow
end local 5 // java.lang.reflect.InvocationTargetException ex
43: .line 249
StackMap locals:
StackMap stack: java.lang.Throwable
astore 6
44: .line 250
aload 4 /* actualTarget */
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
if_acmpeq 46
45: .line 251
aload 4 /* actualTarget */
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.targetDataSource:Ljavax/sql/DataSource;
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection:(Ljava/sql/Connection;Ljavax/sql/DataSource;)V
46: .line 253
StackMap locals: org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler java.lang.Object java.lang.reflect.Method java.lang.Object[] java.sql.Connection top java.lang.Throwable
StackMap stack:
aload 6
athrow
end local 4 // java.sql.Connection actualTarget
end local 3 // java.lang.Object[] args
end local 2 // java.lang.reflect.Method method
end local 1 // java.lang.Object proxy
end local 0 // org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler this
LocalVariableTable:
Start End Slot Name Signature
0 47 0 this Lorg/springframework/jdbc/datasource/TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler;
0 47 1 proxy Ljava/lang/Object;
0 47 2 method Ljava/lang/reflect/Method;
0 47 3 args [Ljava/lang/Object;
7 12 4 sb Ljava/lang/StringBuilder;
30 47 4 actualTarget Ljava/sql/Connection;
35 41 5 retVal Ljava/lang/Object;
42 43 5 ex Ljava/lang/reflect/InvocationTargetException;
Exception table:
from to target type
34 38 41 Class java.lang.reflect.InvocationTargetException
34 38 43 any
41 43 43 any
Exceptions:
throws java.lang.Throwable
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
proxy
method
args
}
SourceFile: "TransactionAwareDataSourceProxy.java"
NestHost: org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy
InnerClasses:
private TransactionAwareInvocationHandler = org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler of org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy