public class org.springframework.jdbc.support.SQLStateSQLExceptionTranslator extends org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.jdbc.support.SQLStateSQLExceptionTranslator
  super_class: org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator
{
  private static final java.util.Set<java.lang.String> BAD_SQL_GRAMMAR_CODES;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private static final java.util.Set<java.lang.String> DATA_INTEGRITY_VIOLATION_CODES;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private static final java.util.Set<java.lang.String> DATA_ACCESS_RESOURCE_FAILURE_CODES;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private static final java.util.Set<java.lang.String> TRANSIENT_DATA_ACCESS_RESOURCE_CODES;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private static final java.util.Set<java.lang.String> CONCURRENCY_FAILURE_CODES;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 49
            new java.util.HashSet
            dup
            bipush 8
            invokespecial java.util.HashSet.<init>:(I)V
            putstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.BAD_SQL_GRAMMAR_CODES:Ljava/util/Set;
         1: .line 51
            new java.util.HashSet
            dup
            bipush 8
            invokespecial java.util.HashSet.<init>:(I)V
            putstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_INTEGRITY_VIOLATION_CODES:Ljava/util/Set;
         2: .line 53
            new java.util.HashSet
            dup
            bipush 8
            invokespecial java.util.HashSet.<init>:(I)V
            putstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_ACCESS_RESOURCE_FAILURE_CODES:Ljava/util/Set;
         3: .line 55
            new java.util.HashSet
            dup
            bipush 8
            invokespecial java.util.HashSet.<init>:(I)V
            putstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.TRANSIENT_DATA_ACCESS_RESOURCE_CODES:Ljava/util/Set;
         4: .line 57
            new java.util.HashSet
            dup
            iconst_4
            invokespecial java.util.HashSet.<init>:(I)V
            putstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.CONCURRENCY_FAILURE_CODES:Ljava/util/Set;
         5: .line 61
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.BAD_SQL_GRAMMAR_CODES:Ljava/util/Set;
            ldc "07"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         6: .line 62
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.BAD_SQL_GRAMMAR_CODES:Ljava/util/Set;
            ldc "21"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         7: .line 63
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.BAD_SQL_GRAMMAR_CODES:Ljava/util/Set;
            ldc "2A"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         8: .line 64
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.BAD_SQL_GRAMMAR_CODES:Ljava/util/Set;
            ldc "37"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         9: .line 65
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.BAD_SQL_GRAMMAR_CODES:Ljava/util/Set;
            ldc "42"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        10: .line 66
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.BAD_SQL_GRAMMAR_CODES:Ljava/util/Set;
            ldc "65"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        11: .line 68
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_INTEGRITY_VIOLATION_CODES:Ljava/util/Set;
            ldc "01"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        12: .line 69
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_INTEGRITY_VIOLATION_CODES:Ljava/util/Set;
            ldc "02"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        13: .line 70
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_INTEGRITY_VIOLATION_CODES:Ljava/util/Set;
            ldc "22"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        14: .line 71
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_INTEGRITY_VIOLATION_CODES:Ljava/util/Set;
            ldc "23"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        15: .line 72
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_INTEGRITY_VIOLATION_CODES:Ljava/util/Set;
            ldc "27"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        16: .line 73
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_INTEGRITY_VIOLATION_CODES:Ljava/util/Set;
            ldc "44"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        17: .line 75
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_ACCESS_RESOURCE_FAILURE_CODES:Ljava/util/Set;
            ldc "08"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        18: .line 76
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_ACCESS_RESOURCE_FAILURE_CODES:Ljava/util/Set;
            ldc "53"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        19: .line 77
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_ACCESS_RESOURCE_FAILURE_CODES:Ljava/util/Set;
            ldc "54"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        20: .line 78
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_ACCESS_RESOURCE_FAILURE_CODES:Ljava/util/Set;
            ldc "57"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        21: .line 79
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_ACCESS_RESOURCE_FAILURE_CODES:Ljava/util/Set;
            ldc "58"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        22: .line 81
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.TRANSIENT_DATA_ACCESS_RESOURCE_CODES:Ljava/util/Set;
            ldc "JW"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        23: .line 82
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.TRANSIENT_DATA_ACCESS_RESOURCE_CODES:Ljava/util/Set;
            ldc "JZ"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        24: .line 83
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.TRANSIENT_DATA_ACCESS_RESOURCE_CODES:Ljava/util/Set;
            ldc "S1"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        25: .line 85
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.CONCURRENCY_FAILURE_CODES:Ljava/util/Set;
            ldc "40"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        26: .line 86
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.CONCURRENCY_FAILURE_CODES:Ljava/util/Set;
            ldc "61"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        27: .line 87
            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 // org.springframework.jdbc.support.SQLStateSQLExceptionTranslator this
         0: .line 47
            aload 0 /* this */
            invokespecial org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.<init>:()V
            return
        end local 0 // org.springframework.jdbc.support.SQLStateSQLExceptionTranslator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/jdbc/support/SQLStateSQLExceptionTranslator;

  protected org.springframework.dao.DataAccessException doTranslate(java.lang.String, java.lang.String, java.sql.SQLException);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/sql/SQLException;)Lorg/springframework/dao/DataAccessException;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // org.springframework.jdbc.support.SQLStateSQLExceptionTranslator this
        start local 1 // java.lang.String task
        start local 2 // java.lang.String sql
        start local 3 // java.sql.SQLException ex
         0: .line 94
            aload 0 /* this */
            aload 3 /* ex */
            invokevirtual org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.getSqlState:(Ljava/sql/SQLException;)Ljava/lang/String;
            astore 4 /* sqlState */
        start local 4 // java.lang.String sqlState
         1: .line 95
            aload 4 /* sqlState */
            ifnull 17
            aload 4 /* sqlState */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmplt 17
         2: .line 96
            aload 4 /* sqlState */
            iconst_0
            iconst_2
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 5 /* classCode */
        start local 5 // java.lang.String classCode
         3: .line 97
            aload 0 /* this */
            getfield org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 5
         4: .line 98
            aload 0 /* this */
            getfield org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Extracted SQL state class '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* classCode */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' from value '"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* sqlState */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)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
         5: .line 100
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.BAD_SQL_GRAMMAR_CODES:Ljava/util/Set;
            aload 5 /* classCode */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 9
         6: .line 101
            new org.springframework.jdbc.BadSqlGrammarException
            dup
            aload 1 /* task */
            aload 2 /* sql */
            ifnull 7
            aload 2 /* sql */
            goto 8
      StackMap locals: org.springframework.jdbc.support.SQLStateSQLExceptionTranslator java.lang.String java.lang.String java.sql.SQLException java.lang.String java.lang.String
      StackMap stack: new 6 new 6 java.lang.String
         7: ldc ""
      StackMap locals: org.springframework.jdbc.support.SQLStateSQLExceptionTranslator java.lang.String java.lang.String java.sql.SQLException java.lang.String java.lang.String
      StackMap stack: new 6 new 6 java.lang.String java.lang.String
         8: aload 3 /* ex */
            invokespecial org.springframework.jdbc.BadSqlGrammarException.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/sql/SQLException;)V
            areturn
         9: .line 103
      StackMap locals:
      StackMap stack:
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_INTEGRITY_VIOLATION_CODES:Ljava/util/Set;
            aload 5 /* classCode */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 11
        10: .line 104
            new org.springframework.dao.DataIntegrityViolationException
            dup
            aload 0 /* this */
            aload 1 /* task */
            aload 2 /* sql */
            aload 3 /* ex */
            invokevirtual org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.buildMessage:(Ljava/lang/String;Ljava/lang/String;Ljava/sql/SQLException;)Ljava/lang/String;
            aload 3 /* ex */
            invokespecial org.springframework.dao.DataIntegrityViolationException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        11: .line 106
      StackMap locals:
      StackMap stack:
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.DATA_ACCESS_RESOURCE_FAILURE_CODES:Ljava/util/Set;
            aload 5 /* classCode */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 13
        12: .line 107
            new org.springframework.dao.DataAccessResourceFailureException
            dup
            aload 0 /* this */
            aload 1 /* task */
            aload 2 /* sql */
            aload 3 /* ex */
            invokevirtual org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.buildMessage:(Ljava/lang/String;Ljava/lang/String;Ljava/sql/SQLException;)Ljava/lang/String;
            aload 3 /* ex */
            invokespecial org.springframework.dao.DataAccessResourceFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        13: .line 109
      StackMap locals:
      StackMap stack:
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.TRANSIENT_DATA_ACCESS_RESOURCE_CODES:Ljava/util/Set;
            aload 5 /* classCode */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 15
        14: .line 110
            new org.springframework.dao.TransientDataAccessResourceException
            dup
            aload 0 /* this */
            aload 1 /* task */
            aload 2 /* sql */
            aload 3 /* ex */
            invokevirtual org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.buildMessage:(Ljava/lang/String;Ljava/lang/String;Ljava/sql/SQLException;)Ljava/lang/String;
            aload 3 /* ex */
            invokespecial org.springframework.dao.TransientDataAccessResourceException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        15: .line 112
      StackMap locals:
      StackMap stack:
            getstatic org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.CONCURRENCY_FAILURE_CODES:Ljava/util/Set;
            aload 5 /* classCode */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 17
        16: .line 113
            new org.springframework.dao.ConcurrencyFailureException
            dup
            aload 0 /* this */
            aload 1 /* task */
            aload 2 /* sql */
            aload 3 /* ex */
            invokevirtual org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.buildMessage:(Ljava/lang/String;Ljava/lang/String;Ljava/sql/SQLException;)Ljava/lang/String;
            aload 3 /* ex */
            invokespecial org.springframework.dao.ConcurrencyFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        end local 5 // java.lang.String classCode
        17: .line 119
      StackMap locals:
      StackMap stack:
            aload 3 /* ex */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "Timeout"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 19
        18: .line 120
            new org.springframework.dao.QueryTimeoutException
            dup
            aload 0 /* this */
            aload 1 /* task */
            aload 2 /* sql */
            aload 3 /* ex */
            invokevirtual org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.buildMessage:(Ljava/lang/String;Ljava/lang/String;Ljava/sql/SQLException;)Ljava/lang/String;
            aload 3 /* ex */
            invokespecial org.springframework.dao.QueryTimeoutException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        19: .line 124
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 4 // java.lang.String sqlState
        end local 3 // java.sql.SQLException ex
        end local 2 // java.lang.String sql
        end local 1 // java.lang.String task
        end local 0 // org.springframework.jdbc.support.SQLStateSQLExceptionTranslator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0       this  Lorg/springframework/jdbc/support/SQLStateSQLExceptionTranslator;
            0   20     1       task  Ljava/lang/String;
            0   20     2        sql  Ljava/lang/String;
            0   20     3         ex  Ljava/sql/SQLException;
            1   20     4   sqlState  Ljava/lang/String;
            3   17     5  classCode  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
      2:
    MethodParameters:
      Name  Flags
      task  
      sql   
      ex    

  private java.lang.String getSqlState(java.sql.SQLException);
    descriptor: (Ljava/sql/SQLException;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=4, args_size=2
        start local 0 // org.springframework.jdbc.support.SQLStateSQLExceptionTranslator this
        start local 1 // java.sql.SQLException ex
         0: .line 137
            aload 1 /* ex */
            invokevirtual java.sql.SQLException.getSQLState:()Ljava/lang/String;
            astore 2 /* sqlState */
        start local 2 // java.lang.String sqlState
         1: .line 138
            aload 2 /* sqlState */
            ifnonnull 5
         2: .line 139
            aload 1 /* ex */
            invokevirtual java.sql.SQLException.getNextException:()Ljava/sql/SQLException;
            astore 3 /* nestedEx */
        start local 3 // java.sql.SQLException nestedEx
         3: .line 140
            aload 3 /* nestedEx */
            ifnull 5
         4: .line 141
            aload 3 /* nestedEx */
            invokevirtual java.sql.SQLException.getSQLState:()Ljava/lang/String;
            astore 2 /* sqlState */
        end local 3 // java.sql.SQLException nestedEx
         5: .line 144
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* sqlState */
            areturn
        end local 2 // java.lang.String sqlState
        end local 1 // java.sql.SQLException ex
        end local 0 // org.springframework.jdbc.support.SQLStateSQLExceptionTranslator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/springframework/jdbc/support/SQLStateSQLExceptionTranslator;
            0    6     1        ex  Ljava/sql/SQLException;
            1    6     2  sqlState  Ljava/lang/String;
            3    5     3  nestedEx  Ljava/sql/SQLException;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      ex    
}
SourceFile: "SQLStateSQLExceptionTranslator.java"