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 169
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 167
aload 0 /* this */
iconst_0
putfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.closed:Z
2: .line 170
aload 0 /* this */
aload 2 /* targetDataSource */
putfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.targetDataSource:Ljavax/sql/DataSource;
3: .line 171
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=9, 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 178
aload 2 /* method */
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
dup
astore 4
invokevirtual java.lang.String.hashCode:()I
lookupswitch { // 7
-1776922004: 1
-1295482945: 2
-840111517: 3
-683486410: 4
94756344: 5
147696667: 6
1542905856: 7
default: 25
}
StackMap locals: java.lang.String
StackMap stack:
1: aload 4
ldc "toString"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 11
goto 25
StackMap locals:
StackMap stack:
2: aload 4
ldc "equals"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 8
goto 25
StackMap locals:
StackMap stack:
3: aload 4
ldc "unwrap"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 21
goto 25
StackMap locals:
StackMap stack:
4: aload 4
ldc "isClosed"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 20
goto 25
StackMap locals:
StackMap stack:
5: aload 4
ldc "close"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 17
goto 25
StackMap locals:
StackMap stack:
6: aload 4
ldc "hashCode"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 10
goto 25
StackMap locals:
StackMap stack:
7: aload 4
ldc "isWrapperFor"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 23
goto 25
8: .line 181
StackMap locals:
StackMap stack:
aload 1 /* proxy */
aload 3 /* args */
iconst_0
aaload
if_acmpne 9
iconst_1
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
areturn
StackMap locals:
StackMap stack:
9: iconst_0
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
areturn
10: .line 184
StackMap locals:
StackMap stack:
aload 1 /* proxy */
invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
areturn
11: .line 187
StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "Transaction-aware proxy for target Connection "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
astore 5 /* sb */
start local 5 // java.lang.StringBuilder sb
12: .line 188
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
ifnull 15
13: .line 189
aload 5 /* 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
14: .line 190
goto 16
15: .line 192
StackMap locals: java.lang.StringBuilder
StackMap stack:
aload 5 /* 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
16: .line 194
StackMap locals:
StackMap stack:
aload 5 /* sb */
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 5 // java.lang.StringBuilder sb
17: .line 197
StackMap locals:
StackMap stack:
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
18: .line 198
aload 0 /* this */
iconst_1
putfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.closed:Z
19: .line 199
aconst_null
areturn
20: .line 201
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.closed:Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
areturn
21: .line 203
StackMap locals:
StackMap stack:
aload 3 /* args */
iconst_0
aaload
checkcast java.lang.Class
aload 1 /* proxy */
invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
ifeq 25
22: .line 204
aload 1 /* proxy */
areturn
23: .line 208
StackMap locals:
StackMap stack:
aload 3 /* args */
iconst_0
aaload
checkcast java.lang.Class
aload 1 /* proxy */
invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
ifeq 25
24: .line 209
iconst_1
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
areturn
25: .line 214
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
ifnonnull 32
26: .line 215
aload 2 /* method */
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "getWarnings"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 27
aload 2 /* method */
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "clearWarnings"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 28
27: .line 217
StackMap locals:
StackMap stack:
aconst_null
areturn
28: .line 219
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.closed:Z
ifeq 30
29: .line 220
new java.sql.SQLException
dup
ldc "Connection handle already closed"
invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;)V
athrow
30: .line 222
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 32
31: .line 223
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;
32: .line 226
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
astore 5 /* actualTarget */
start local 5 // java.sql.Connection actualTarget
33: .line 227
aload 5 /* actualTarget */
ifnonnull 35
34: .line 228
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 5 /* actualTarget */
35: .line 231
StackMap locals: org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler java.lang.Object java.lang.reflect.Method java.lang.Object[] top 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 37
36: .line 233
aload 5 /* actualTarget */
areturn
37: .line 238
StackMap locals:
StackMap stack:
aload 2 /* method */
aload 5 /* actualTarget */
aload 3 /* args */
invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
astore 6 /* retVal */
start local 6 // java.lang.Object retVal
38: .line 242
aload 6 /* retVal */
instanceof java.sql.Statement
ifeq 40
39: .line 243
aload 6 /* 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
40: .line 246
StackMap locals: java.lang.Object
StackMap stack:
aload 6 /* retVal */
astore 8
41: .line 252
aload 5 /* actualTarget */
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
if_acmpeq 43
42: .line 253
aload 5 /* 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
43: .line 246
StackMap locals: org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler java.lang.Object java.lang.reflect.Method java.lang.Object[] top java.sql.Connection java.lang.Object top java.lang.Object
StackMap stack:
aload 8
areturn
end local 6 // java.lang.Object retVal
44: .line 248
StackMap locals: org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler java.lang.Object java.lang.reflect.Method java.lang.Object[] top java.sql.Connection
StackMap stack: java.lang.reflect.InvocationTargetException
astore 6 /* ex */
start local 6 // java.lang.reflect.InvocationTargetException ex
45: .line 249
aload 6 /* ex */
invokevirtual java.lang.reflect.InvocationTargetException.getTargetException:()Ljava/lang/Throwable;
athrow
end local 6 // java.lang.reflect.InvocationTargetException ex
46: .line 251
StackMap locals:
StackMap stack: java.lang.Throwable
astore 7
47: .line 252
aload 5 /* actualTarget */
aload 0 /* this */
getfield org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.target:Ljava/sql/Connection;
if_acmpeq 49
48: .line 253
aload 5 /* 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
49: .line 255
StackMap locals: org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler java.lang.Object java.lang.reflect.Method java.lang.Object[] top java.sql.Connection top java.lang.Throwable
StackMap stack:
aload 7
athrow
end local 5 // 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 50 0 this Lorg/springframework/jdbc/datasource/TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler;
0 50 1 proxy Ljava/lang/Object;
0 50 2 method Ljava/lang/reflect/Method;
0 50 3 args [Ljava/lang/Object;
12 17 5 sb Ljava/lang/StringBuilder;
33 50 5 actualTarget Ljava/sql/Connection;
38 44 6 retVal Ljava/lang/Object;
45 46 6 ex Ljava/lang/reflect/InvocationTargetException;
Exception table:
from to target type
37 41 44 Class java.lang.reflect.InvocationTargetException
37 41 46 any
44 46 46 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