Class SQLErrorCodesFactory

java.lang.Object
org.springframework.jdbc.support.SQLErrorCodesFactory

public class SQLErrorCodesFactory extends Object
Factory for creating SQLErrorCodes based on the "databaseProductName" taken from the DatabaseMetaData.

Returns SQLErrorCodes populated with vendor codes defined in a configuration file named "sql-error-codes.xml". Reads the default file in this package if not overridden by a file in the root of the class path (for example in the "/WEB-INF/classes" directory).

Author:
Thomas Risberg, Rod Johnson, Juergen Hoeller
See Also:
  • Field Details

    • SQL_ERROR_CODE_OVERRIDE_PATH

      public static final String SQL_ERROR_CODE_OVERRIDE_PATH
      The name of custom SQL error codes file, loading from the root of the class path (e.g. from the "/WEB-INF/classes" directory).
      See Also:
    • SQL_ERROR_CODE_DEFAULT_PATH

      public static final String SQL_ERROR_CODE_DEFAULT_PATH
      The name of default SQL error code files, loading from the class path.
      See Also:
  • Constructor Details

    • SQLErrorCodesFactory

      protected SQLErrorCodesFactory()
      Create a new instance of the SQLErrorCodesFactory class.

      Not public to enforce Singleton design pattern. Would be private except to allow testing via overriding the loadResource(String) method.

      Do not subclass in application code.

      See Also:
  • Method Details

    • getInstance

      public static SQLErrorCodesFactory getInstance()
      Return the singleton instance.
    • loadResource

      @Nullable protected Resource loadResource(String path)
      Load the given resource from the class path.

      Not to be overridden by application developers, who should obtain instances of this class from the static getInstance() method.

      Protected for testability.

      Parameters:
      path - resource path; either a custom path or one of either SQL_ERROR_CODE_DEFAULT_PATH or SQL_ERROR_CODE_OVERRIDE_PATH.
      Returns:
      the resource, or null if the resource wasn't found
      See Also:
    • getErrorCodes

      public SQLErrorCodes getErrorCodes(String databaseName)
      Return the SQLErrorCodes instance for the given database.

      No need for a database meta-data lookup.

      Parameters:
      databaseName - the database name (must not be null)
      Returns:
      the SQLErrorCodes instance for the given database (never null; potentially empty)
      Throws:
      IllegalArgumentException - if the supplied database name is null
    • getErrorCodes

      public SQLErrorCodes getErrorCodes(DataSource dataSource)
      Return SQLErrorCodes for the given DataSource, evaluating "databaseProductName" from the DatabaseMetaData, or an empty error codes instance if no SQLErrorCodes were found.
      Parameters:
      dataSource - the DataSource identifying the database
      Returns:
      the corresponding SQLErrorCodes object (never null; potentially empty)
      See Also:
    • resolveErrorCodes

      @Nullable public SQLErrorCodes resolveErrorCodes(DataSource dataSource)
      Return SQLErrorCodes for the given DataSource, evaluating "databaseProductName" from the DatabaseMetaData, or null if case of a JDBC meta-data access problem.
      Parameters:
      dataSource - the DataSource identifying the database
      Returns:
      the corresponding SQLErrorCodes object, or null in case of a JDBC meta-data access problem
      Since:
      5.2.9
      See Also:
    • registerDatabase

      public SQLErrorCodes registerDatabase(DataSource dataSource, String databaseName)
      Associate the specified database name with the given DataSource.
      Parameters:
      dataSource - the DataSource identifying the database
      databaseName - the corresponding database name as stated in the error codes definition file (must not be null)
      Returns:
      the corresponding SQLErrorCodes object (never null)
      See Also:
    • unregisterDatabase

      @Nullable public SQLErrorCodes unregisterDatabase(DataSource dataSource)
      Clear the cache for the specified DataSource, if registered.
      Parameters:
      dataSource - the DataSource identifying the database
      Returns:
      the corresponding SQLErrorCodes object that got removed, or null if not registered
      Since:
      4.3.5
      See Also: