Module org.hsqldb
Package org.hsqldb.jdbc.pool

## Class JDBCXAConnectionWrapper

- java.lang.Object
- - org.hsqldb.jdbc.JDBCConnection
  - - org.hsqldb.jdbc.pool.JDBCXAConnectionWrapper

- All Implemented Interfaces:
    `java.lang.AutoCloseable`, `java.sql.Connection`, `java.sql.Wrapper`

      public class JDBCXAConnectionWrapper
      extends JDBCConnection

  This is a wrapper class for JDBCConnection objects (not java.sql.XAConnection objects). Purpose of this class is to intercept and handle XA-related operations according to chapter 12 of the JDBC 3.0 specification, by returning this wrapped JDBCConnection to end-users. Global transaction services and XAResources will not use this wrapper.

  The new implementation extends JDBCConnection. A new object is created based on the session / session proxy of the JDBCXAConnection object in the constructor. (fredt)

  Since:
    2.0.0
  Author:
    Blaine Simpson (blaine dot simpson at admc dot com)
  See Also:
    `JDBCConnection`

- - ### Field Summary

    - ### Fields inherited from interface java.sql.Connection

      `TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JDBCXAConnectionWrapper​(JDBCXAResource xaResource, JDBCXAConnection xaConnection, JDBCConnection databaseConnection)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `commit()` | Interceptor method, because this method is prohibited within any global transaction.
    `void` | `rollback()` | Interceptor method, because this method is prohibited within any global transaction.
    `void` | `rollback​(java.sql.Savepoint savepoint)` | Interceptor method, because this method is prohibited within any global transaction.
    `void` | `setAutoCommit​(boolean autoCommit)` | Interceptor method, because this method is prohibited within any global transaction.
    `java.sql.Savepoint` | `setSavepoint()` | Interceptor method, because this method is prohibited within any global transaction.
    `java.sql.Savepoint` | `setSavepoint​(java.lang.String name)` | Interceptor method, because this method is prohibited within any global transaction.
    `void` | `setTransactionIsolation​(int level)` | Interceptor method, because there may be XA implications to calling the method within a global transaction.

    - ### Methods inherited from class org.hsqldb.jdbc.JDBCConnection

      `abort, clearWarnings, close, closeFully, createArrayOf, createBlob, createClob, createNClob, createSQLXML, createStatement, createStatement, createStatement, createStruct, getAutoCommit, getCatalog, getClientInfo, getClientInfo, getHoldability, getMetaData, getNetworkTimeout, getSchema, getSession, getTransactionIsolation, getTypeMap, getWarnings, isClosed, isReadOnly, isValid, isWrapperFor, nativeSQL, prepareCall, prepareCall, prepareCall, prepareStatement, prepareStatement, prepareStatement, prepareStatement, prepareStatement, prepareStatement, releaseSavepoint, reset, setCatalog, setClientInfo, setClientInfo, setHoldability, setNetworkTimeout, setReadOnly, setSchema, setTypeMap, unwrap`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.sql.Connection

      `beginRequest, endRequest, setShardingKey, setShardingKey, setShardingKeyIfValid, setShardingKeyIfValid`

- - ### Constructor Detail

    - #### JDBCXAConnectionWrapper

          public JDBCXAConnectionWrapper​(JDBCXAResource xaResource,
                                         JDBCXAConnection xaConnection,
                                         JDBCConnection databaseConnection)
                                  throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

  - ### Method Detail

    - #### setAutoCommit

          public void setAutoCommit​(boolean autoCommit)
                             throws java.sql.SQLException

      Interceptor method, because this method is prohibited within any global transaction. See section 1.2.4 of the JDBC 3.0 spec.
      Specified by:
        `setAutoCommit` in interface `java.sql.Connection`
      Overrides:
        `setAutoCommit` in class `JDBCConnection`
      Parameters:
        `autoCommit` - mode
      Throws:
        `java.sql.SQLException` - on error
      See Also:
        `JDBCConnection.getAutoCommit()`

    - #### commit

          public void commit()
                      throws java.sql.SQLException

      Interceptor method, because this method is prohibited within any global transaction. See section 1.2.4 of the JDBC 3.0 spec.
      Specified by:
        `commit` in interface `java.sql.Connection`
      Overrides:
        `commit` in class `JDBCConnection`
      Throws:
        `java.sql.SQLException` - on error
      See Also:
        `JDBCConnection.setAutoCommit(boolean)`

    - #### rollback

          public void rollback()
                        throws java.sql.SQLException

      Interceptor method, because this method is prohibited within any global transaction. See section 1.2.4 of the JDBC 3.0 spec.
      Specified by:
        `rollback` in interface `java.sql.Connection`
      Overrides:
        `rollback` in class `JDBCConnection`
      Throws:
        `java.sql.SQLException` - on error
      See Also:
        `JDBCConnection.setAutoCommit(boolean)`

    - #### rollback

          public void rollback​(java.sql.Savepoint savepoint)
                        throws java.sql.SQLException

      Interceptor method, because this method is prohibited within any global transaction. See section 1.2.4 of the JDBC 3.0 spec.
      Specified by:
        `rollback` in interface `java.sql.Connection`
      Overrides:
        `rollback` in class `JDBCConnection`
      Parameters:
        `savepoint` - the `Savepoint` object to roll back to
      Throws:
        `java.sql.SQLException` - on error
      See Also:
        `JDBCSavepoint`, `Savepoint`, `JDBCConnection.rollback()`

    - #### setSavepoint

          public java.sql.Savepoint setSavepoint()
                                          throws java.sql.SQLException

      Interceptor method, because this method is prohibited within any global transaction. See section 1.2.4 of the JDBC 3.0 spec.
      Specified by:
        `setSavepoint` in interface `java.sql.Connection`
      Overrides:
        `setSavepoint` in class `JDBCConnection`
      Returns:
        the new `Savepoint` object
      Throws:
        `java.sql.SQLException` - on error
      See Also:
        `JDBCSavepoint`, `Savepoint`

    - #### setSavepoint

          public java.sql.Savepoint setSavepoint​(java.lang.String name)
                                          throws java.sql.SQLException

      Interceptor method, because this method is prohibited within any global transaction. See section 1.2.4 of the JDBC 3.0 spec.
      Specified by:
        `setSavepoint` in interface `java.sql.Connection`
      Overrides:
        `setSavepoint` in class `JDBCConnection`
      Parameters:
        `name` - a `String` containing the name of the savepoint
      Returns:
        the new `Savepoint` object
      Throws:
        `java.sql.SQLException` - if a database access error occurs, (JDBC4 Clarification:) this method is called while participating in a distributed transaction, this method is called on a closed connection or this `Connection` object is currently in auto-commit mode
        `java.sql.SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      See Also:
        `JDBCSavepoint`, `Savepoint`

    - #### setTransactionIsolation

          public void setTransactionIsolation​(int level)
                                       throws java.sql.SQLException

      Interceptor method, because there may be XA implications to calling the method within a global transaction. See section 1.2.4 of the JDBC 3.0 spec.

      HSQLDB does not allow changing the isolation level inside a transaction of any kind.

      Specified by:
        `setTransactionIsolation` in interface `java.sql.Connection`
      Overrides:
        `setTransactionIsolation` in class `JDBCConnection`
      Parameters:
        `level` - isolation level
      Throws:
        `java.sql.SQLException` - if a database access error occurs, this (JDBC4 Clarification:) method is called on a closed connection (:JDBC4 End Clarification) or the given parameter is not one of the `Connection` constants
      See Also:
        `JDBCDatabaseMetaData.supportsTransactionIsolationLevel(int)`, `JDBCConnection.getTransactionIsolation()`