public abstract class org.springframework.jdbc.datasource.DataSourceUtils
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: org.springframework.jdbc.datasource.DataSourceUtils
super_class: java.lang.Object
{
public static final int CONNECTION_SYNCHRONIZATION_ORDER;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 1000
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: ldc Lorg/springframework/jdbc/datasource/DataSourceUtils;
invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
putstatic org.springframework.jdbc.datasource.DataSourceUtils.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 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/jdbc/datasource/DataSourceUtils;
public static java.sql.Connection getConnection(javax.sql.DataSource);
descriptor: (Ljavax/sql/DataSource;)Ljava/sql/Connection;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=2, args_size=1
start local 0 0: aload 0
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection:(Ljavax/sql/DataSource;)Ljava/sql/Connection;
1: areturn
2: StackMap locals:
StackMap stack: java.sql.SQLException
astore 1
start local 1 3: new org.springframework.jdbc.CannotGetJdbcConnectionException
dup
ldc "Failed to obtain JDBC Connection"
aload 1
invokespecial org.springframework.jdbc.CannotGetJdbcConnectionException.<init>:(Ljava/lang/String;Ljava/sql/SQLException;)V
athrow
end local 1 4: StackMap locals:
StackMap stack: java.lang.IllegalStateException
astore 1
start local 1 5: new org.springframework.jdbc.CannotGetJdbcConnectionException
dup
new java.lang.StringBuilder
dup
ldc "Failed to obtain JDBC Connection: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.IllegalStateException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial org.springframework.jdbc.CannotGetJdbcConnectionException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 dataSource Ljavax/sql/DataSource;
3 4 1 ex Ljava/sql/SQLException;
5 6 1 ex Ljava/lang/IllegalStateException;
Exception table:
from to target type
0 1 2 Class java.sql.SQLException
0 1 4 Class java.lang.IllegalStateException
Exceptions:
throws org.springframework.jdbc.CannotGetJdbcConnectionException
MethodParameters:
Name Flags
dataSource
public static java.sql.Connection doGetConnection(javax.sql.DataSource);
descriptor: (Ljavax/sql/DataSource;)Ljava/sql/Connection;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: aload 0
ldc "No DataSource specified"
invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
1: aload 0
invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.springframework.jdbc.datasource.ConnectionHolder
astore 1
start local 1 2: aload 1
ifnull 8
aload 1
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.hasConnection:()Z
ifne 3
aload 1
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.isSynchronizedWithTransaction:()Z
ifeq 8
3: StackMap locals: org.springframework.jdbc.datasource.ConnectionHolder
StackMap stack:
aload 1
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.requested:()V
4: aload 1
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.hasConnection:()Z
ifne 7
5: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
ldc "Fetching resumed JDBC Connection from DataSource"
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
6: aload 1
aload 0
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection:(Ljavax/sql/DataSource;)Ljava/sql/Connection;
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.setConnection:(Ljava/sql/Connection;)V
7: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getConnection:()Ljava/sql/Connection;
areturn
8: StackMap locals:
StackMap stack:
getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
ldc "Fetching JDBC Connection from DataSource"
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
9: aload 0
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection:(Ljavax/sql/DataSource;)Ljava/sql/Connection;
astore 2
start local 2 10: invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isSynchronizationActive:()Z
ifeq 26
11: aload 1
astore 3
start local 3 12: aload 3
ifnonnull 15
13: new org.springframework.jdbc.datasource.ConnectionHolder
dup
aload 2
invokespecial org.springframework.jdbc.datasource.ConnectionHolder.<init>:(Ljava/sql/Connection;)V
astore 3
14: goto 16
15: StackMap locals: java.sql.Connection org.springframework.jdbc.datasource.ConnectionHolder
StackMap stack:
aload 3
aload 2
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.setConnection:(Ljava/sql/Connection;)V
16: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.requested:()V
17: new org.springframework.jdbc.datasource.DataSourceUtils$ConnectionSynchronization
dup
aload 3
aload 0
invokespecial org.springframework.jdbc.datasource.DataSourceUtils$ConnectionSynchronization.<init>:(Lorg/springframework/jdbc/datasource/ConnectionHolder;Ljavax/sql/DataSource;)V
18: invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.registerSynchronization:(Lorg/springframework/transaction/support/TransactionSynchronization;)V
19: aload 3
iconst_1
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.setSynchronizedWithTransaction:(Z)V
20: aload 3
aload 1
if_acmpeq 26
21: aload 0
aload 3
invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
end local 3 22: goto 26
23: StackMap locals: javax.sql.DataSource org.springframework.jdbc.datasource.ConnectionHolder java.sql.Connection
StackMap stack: java.lang.RuntimeException
astore 3
start local 3 24: aload 2
aload 0
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection:(Ljava/sql/Connection;Ljavax/sql/DataSource;)V
25: aload 3
athrow
end local 3 26: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 dataSource Ljavax/sql/DataSource;
2 27 1 conHolder Lorg/springframework/jdbc/datasource/ConnectionHolder;
10 27 2 con Ljava/sql/Connection;
12 22 3 holderToUse Lorg/springframework/jdbc/datasource/ConnectionHolder;
24 26 3 ex Ljava/lang/RuntimeException;
Exception table:
from to target type
11 22 23 Class java.lang.RuntimeException
Exceptions:
throws java.sql.SQLException
MethodParameters:
Name Flags
dataSource
private static java.sql.Connection fetchConnection(javax.sql.DataSource);
descriptor: (Ljavax/sql/DataSource;)Ljava/sql/Connection;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=2, args_size=1
start local 0 0: aload 0
invokeinterface javax.sql.DataSource.getConnection:()Ljava/sql/Connection;
astore 1
start local 1 1: aload 1
ifnonnull 3
2: new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
ldc "DataSource returned null from getConnection(): "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: java.sql.Connection
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 dataSource Ljavax/sql/DataSource;
1 4 1 con Ljava/sql/Connection;
Exceptions:
throws java.sql.SQLException
MethodParameters:
Name Flags
dataSource
public static java.lang.Integer prepareConnectionForTransaction(java.sql.Connection, org.springframework.transaction.TransactionDefinition);
descriptor: (Ljava/sql/Connection;Lorg/springframework/transaction/TransactionDefinition;)Ljava/lang/Integer;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
ldc "No Connection specified"
invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
1: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
istore 2
start local 2 2: aload 1
ifnull 15
aload 1
invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
ifeq 15
3: iload 2
ifeq 5
4: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Setting JDBC Connection ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "] read-only"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
5: StackMap locals: int
StackMap stack:
aload 0
iconst_1
invokeinterface java.sql.Connection.setReadOnly:(Z)V
6: goto 15
7: StackMap locals:
StackMap stack: java.lang.Exception
astore 3
start local 3 8: aload 3
astore 4
start local 4 9: goto 13
10: StackMap locals: java.lang.Exception java.lang.Throwable
StackMap stack:
aload 4
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
ldc "Timeout"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 12
11: aload 3
athrow
12: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
astore 4
13: StackMap locals:
StackMap stack:
aload 4
ifnonnull 10
14: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
ldc "Could not set JDBC Connection read-only"
aload 3
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
end local 4 end local 3 15: StackMap locals:
StackMap stack:
aconst_null
astore 3
start local 3 16: aload 1
ifnull 25
aload 1
invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
iconst_m1
if_icmpeq 25
17: iload 2
ifeq 21
18: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Changing isolation level of JDBC Connection ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "] to "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
19: aload 1
invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
20: invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
21: StackMap locals: java.lang.Integer
StackMap stack:
aload 0
invokeinterface java.sql.Connection.getTransactionIsolation:()I
istore 4
start local 4 22: iload 4
aload 1
invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
if_icmpeq 25
23: iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
astore 3
24: aload 0
aload 1
invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
invokeinterface java.sql.Connection.setTransactionIsolation:(I)V
end local 4 25: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 con Ljava/sql/Connection;
0 26 1 definition Lorg/springframework/transaction/TransactionDefinition;
2 26 2 debugEnabled Z
8 15 3 ex Ljava/lang/Exception;
9 15 4 exToCheck Ljava/lang/Throwable;
16 26 3 previousIsolationLevel Ljava/lang/Integer;
22 25 4 currentIsolation I
Exception table:
from to target type
3 6 7 Class java.sql.SQLException
3 6 7 Class java.lang.RuntimeException
Exceptions:
throws java.sql.SQLException
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
con
definition
public static void resetConnectionAfterTransaction(java.sql.Connection, java.lang.Integer, boolean);
descriptor: (Ljava/sql/Connection;Ljava/lang/Integer;Z)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
ldc "No Connection specified"
invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
1: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
istore 3
start local 3 2: aload 1
ifnull 8
3: iload 3
ifeq 7
4: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Resetting isolation level of JDBC Connection ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
5: aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "] to "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
7: StackMap locals: int
StackMap stack:
aload 0
aload 1
invokevirtual java.lang.Integer.intValue:()I
invokeinterface java.sql.Connection.setTransactionIsolation:(I)V
8: StackMap locals:
StackMap stack:
iload 2
ifeq 15
9: iload 3
ifeq 11
10: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Resetting read-only flag of JDBC Connection ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
11: StackMap locals:
StackMap stack:
aload 0
iconst_0
invokeinterface java.sql.Connection.setReadOnly:(Z)V
12: goto 15
13: StackMap locals:
StackMap stack: java.lang.Throwable
astore 4
start local 4 14: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
ldc "Could not reset JDBC Connection after transaction"
aload 4
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
end local 4 15: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 con Ljava/sql/Connection;
0 16 1 previousIsolationLevel Ljava/lang/Integer;
0 16 2 resetReadOnly Z
2 16 3 debugEnabled Z
14 15 4 ex Ljava/lang/Throwable;
Exception table:
from to target type
2 12 13 Class java.lang.Throwable
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
2:
MethodParameters:
Name Flags
con
previousIsolationLevel
resetReadOnly
public static void resetConnectionAfterTransaction(java.sql.Connection, java.lang.Integer);
descriptor: (Ljava/sql/Connection;Ljava/lang/Integer;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
ldc "No Connection specified"
invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
1: aload 1
ifnull 7
2: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
ifeq 6
3: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Resetting isolation level of JDBC Connection ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
4: aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "] to "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
5: invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
6: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual java.lang.Integer.intValue:()I
invokeinterface java.sql.Connection.setTransactionIsolation:(I)V
7: StackMap locals:
StackMap stack:
aload 0
invokeinterface java.sql.Connection.isReadOnly:()Z
ifeq 14
8: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
ifeq 10
9: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Resetting read-only flag of JDBC Connection ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
10: StackMap locals:
StackMap stack:
aload 0
iconst_0
invokeinterface java.sql.Connection.setReadOnly:(Z)V
11: goto 14
12: StackMap locals:
StackMap stack: java.lang.Throwable
astore 2
start local 2 13: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
ldc "Could not reset JDBC Connection after transaction"
aload 2
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
end local 2 14: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 con Ljava/sql/Connection;
0 15 1 previousIsolationLevel Ljava/lang/Integer;
13 14 2 ex Ljava/lang/Throwable;
Exception table:
from to target type
1 11 12 Class java.lang.Throwable
RuntimeVisibleAnnotations:
java.lang.Deprecated()
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
con
previousIsolationLevel
public static boolean isConnectionTransactional(java.sql.Connection, javax.sql.DataSource);
descriptor: (Ljava/sql/Connection;Ljavax/sql/DataSource;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 1
invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.springframework.jdbc.datasource.ConnectionHolder
astore 2
start local 2 3: aload 2
ifnull 4
aload 2
aload 0
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.connectionEquals:(Lorg/springframework/jdbc/datasource/ConnectionHolder;Ljava/sql/Connection;)Z
ifeq 4
iconst_1
ireturn
StackMap locals: org.springframework.jdbc.datasource.ConnectionHolder
StackMap stack:
4: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 con Ljava/sql/Connection;
0 5 1 dataSource Ljavax/sql/DataSource;
3 5 2 conHolder Lorg/springframework/jdbc/datasource/ConnectionHolder;
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
con
dataSource
public static void applyTransactionTimeout(java.sql.Statement, javax.sql.DataSource);
descriptor: (Ljava/sql/Statement;Ljavax/sql/DataSource;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_m1
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.applyTimeout:(Ljava/sql/Statement;Ljavax/sql/DataSource;I)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 stmt Ljava/sql/Statement;
0 2 1 dataSource Ljavax/sql/DataSource;
Exceptions:
throws java.sql.SQLException
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
stmt
dataSource
public static void applyTimeout(java.sql.Statement, javax.sql.DataSource, int);
descriptor: (Ljava/sql/Statement;Ljavax/sql/DataSource;I)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
ldc "No Statement specified"
invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
1: aconst_null
astore 3
start local 3 2: aload 1
ifnull 4
3: aload 1
invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.springframework.jdbc.datasource.ConnectionHolder
astore 3
4: StackMap locals: org.springframework.jdbc.datasource.ConnectionHolder
StackMap stack:
aload 3
ifnull 7
aload 3
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.hasTimeout:()Z
ifeq 7
5: aload 0
aload 3
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getTimeToLiveInSeconds:()I
invokeinterface java.sql.Statement.setQueryTimeout:(I)V
6: goto 9
7: StackMap locals:
StackMap stack:
iload 2
iflt 9
8: aload 0
iload 2
invokeinterface java.sql.Statement.setQueryTimeout:(I)V
9: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 stmt Ljava/sql/Statement;
0 10 1 dataSource Ljavax/sql/DataSource;
0 10 2 timeout I
2 10 3 holder Lorg/springframework/jdbc/datasource/ConnectionHolder;
Exceptions:
throws java.sql.SQLException
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
2:
MethodParameters:
Name Flags
stmt
dataSource
timeout
public static void releaseConnection(java.sql.Connection, javax.sql.DataSource);
descriptor: (Ljava/sql/Connection;Ljavax/sql/DataSource;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection:(Ljava/sql/Connection;Ljavax/sql/DataSource;)V
1: goto 7
2: StackMap locals:
StackMap stack: java.sql.SQLException
astore 2
start local 2 3: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
ldc "Could not close JDBC Connection"
aload 2
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
end local 2 4: goto 7
5: StackMap locals:
StackMap stack: java.lang.Throwable
astore 2
start local 2 6: getstatic org.springframework.jdbc.datasource.DataSourceUtils.logger:Lorg/apache/commons/logging/Log;
ldc "Unexpected exception on closing JDBC Connection"
aload 2
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
end local 2 7: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 con Ljava/sql/Connection;
0 8 1 dataSource Ljavax/sql/DataSource;
3 4 2 ex Ljava/sql/SQLException;
6 7 2 ex Ljava/lang/Throwable;
Exception table:
from to target type
0 1 2 Class java.sql.SQLException
0 1 5 Class java.lang.Throwable
RuntimeVisibleParameterAnnotations:
0:
org.springframework.lang.Nullable()
1:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
con
dataSource
public static void doReleaseConnection(java.sql.Connection, javax.sql.DataSource);
descriptor: (Ljava/sql/Connection;Ljavax/sql/DataSource;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
ifnonnull 2
1: return
2: StackMap locals:
StackMap stack:
aload 1
ifnull 7
3: aload 1
invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.springframework.jdbc.datasource.ConnectionHolder
astore 2
start local 2 4: aload 2
ifnull 7
aload 2
aload 0
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.connectionEquals:(Lorg/springframework/jdbc/datasource/ConnectionHolder;Ljava/sql/Connection;)Z
ifeq 7
5: aload 2
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.released:()V
6: return
end local 2 7: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection:(Ljava/sql/Connection;Ljavax/sql/DataSource;)V
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 con Ljava/sql/Connection;
0 9 1 dataSource Ljavax/sql/DataSource;
4 7 2 conHolder Lorg/springframework/jdbc/datasource/ConnectionHolder;
Exceptions:
throws java.sql.SQLException
RuntimeVisibleParameterAnnotations:
0:
org.springframework.lang.Nullable()
1:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
con
dataSource
public static void doCloseConnection(java.sql.Connection, javax.sql.DataSource);
descriptor: (Ljava/sql/Connection;Ljavax/sql/DataSource;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
instanceof org.springframework.jdbc.datasource.SmartDataSource
ifeq 1
aload 1
checkcast org.springframework.jdbc.datasource.SmartDataSource
aload 0
invokeinterface org.springframework.jdbc.datasource.SmartDataSource.shouldClose:(Ljava/sql/Connection;)Z
ifeq 2
1: StackMap locals:
StackMap stack:
aload 0
invokeinterface java.sql.Connection.close:()V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 con Ljava/sql/Connection;
0 3 1 dataSource Ljavax/sql/DataSource;
Exceptions:
throws java.sql.SQLException
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
con
dataSource
private static boolean connectionEquals(org.springframework.jdbc.datasource.ConnectionHolder, java.sql.Connection);
descriptor: (Lorg/springframework/jdbc/datasource/ConnectionHolder;Ljava/sql/Connection;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.hasConnection:()Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getConnection:()Ljava/sql/Connection;
astore 2
start local 2 3: aload 2
aload 1
if_acmpeq 6
aload 2
aload 1
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifne 6
4: aload 2
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.getTargetConnection:(Ljava/sql/Connection;)Ljava/sql/Connection;
aload 1
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifne 6
5: iconst_0
ireturn
StackMap locals: java.sql.Connection
StackMap stack:
6: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 conHolder Lorg/springframework/jdbc/datasource/ConnectionHolder;
0 7 1 passedInCon Ljava/sql/Connection;
3 7 2 heldCon Ljava/sql/Connection;
MethodParameters:
Name Flags
conHolder
passedInCon
public static java.sql.Connection getTargetConnection(java.sql.Connection);
descriptor: (Ljava/sql/Connection;)Ljava/sql/Connection;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
astore 1
start local 1 1: goto 3
2: StackMap locals: java.sql.Connection
StackMap stack:
aload 1
checkcast org.springframework.jdbc.datasource.ConnectionProxy
invokeinterface org.springframework.jdbc.datasource.ConnectionProxy.getTargetConnection:()Ljava/sql/Connection;
astore 1
3: StackMap locals:
StackMap stack:
aload 1
instanceof org.springframework.jdbc.datasource.ConnectionProxy
ifne 2
4: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 con Ljava/sql/Connection;
1 5 1 conToUse Ljava/sql/Connection;
MethodParameters:
Name Flags
con
private static int getConnectionSynchronizationOrder(javax.sql.DataSource);
descriptor: (Ljavax/sql/DataSource;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=3, args_size=1
start local 0 0: sipush 1000
istore 1
start local 1 1: aload 0
astore 2
start local 2 2: goto 5
3: StackMap locals: int javax.sql.DataSource
StackMap stack:
iinc 1 -1
4: aload 2
checkcast org.springframework.jdbc.datasource.DelegatingDataSource
invokevirtual org.springframework.jdbc.datasource.DelegatingDataSource.getTargetDataSource:()Ljavax/sql/DataSource;
astore 2
5: StackMap locals:
StackMap stack:
aload 2
instanceof org.springframework.jdbc.datasource.DelegatingDataSource
ifne 3
6: iload 1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 dataSource Ljavax/sql/DataSource;
1 7 1 order I
2 7 2 currDs Ljavax/sql/DataSource;
MethodParameters:
Name Flags
dataSource
}
SourceFile: "DataSourceUtils.java"
NestMembers:
org.springframework.jdbc.datasource.DataSourceUtils$ConnectionSynchronization
InnerClasses:
private ConnectionSynchronization = org.springframework.jdbc.datasource.DataSourceUtils$ConnectionSynchronization of org.springframework.jdbc.datasource.DataSourceUtils