org.firebirdsql.gds.ng

## Interface FbTransaction

All Superinterfaces:
  ExceptionListenable

All Known Subinterfaces:
  FbWireTransaction

All Known Implementing Classes:
  AbstractFbTransaction, JnaTransaction, V10Transaction

    public interface FbTransaction
    extends ExceptionListenable

Handle for a transaction.

All methods defined in this interface are required to notify all `SQLException` thrown from the methods defined in this interface.

Since:
  3.0
Author:
  Mark Rotteveel

### Method Summary

Methods
`void` `addTransactionListener(TransactionListener listener)` Adds a `TransactionListener` to the list of strongly referenced listeners.
`void` `addWeakTransactionListener(TransactionListener listener)` Adds a `TransactionListener` to the list of weakly referenced listeners.
`void` `commit()` Commit the transaction
`int` `getHandle()`
`TransactionState` `getState()`
`long` `getTransactionId()` Retrieves the transaction id.
`byte[]` `getTransactionInfo(byte[] requestItems, int maxBufferLength)` Performs a transaction info request.
`<T> T` `getTransactionInfo(byte[] requestItems, int bufferLength, InfoProcessor<T> infoProcessor)` Request transaction info.
`void` `prepare(byte[] recoveryInformation)` Prepare the transaction for two-phase commit/rollback.
`void` `removeTransactionListener(TransactionListener listener)` Removes the `TransactionListener` from the list of listeners.
`void` `rollback()` Roll back the transaction

### Methods inherited from interface org.firebirdsql.gds.ng.listeners.ExceptionListenable

`addExceptionListener, removeExceptionListener`

### Method Detail

#### getState

    TransactionState getState()

Returns:
  Current transaction state

#### getHandle

    int getHandle()

Returns:
  The Firebird transaction handle identifier

#### addTransactionListener

    void addTransactionListener(TransactionListener listener)

Adds a `TransactionListener` to the list of strongly referenced listeners.

Parameters:
  `listener` - TransactionListener to register

#### addWeakTransactionListener

    void addWeakTransactionListener(TransactionListener listener)

Adds a `TransactionListener` to the list of weakly referenced listeners.

If the listener is already strongly referenced, this call will be ignored

Parameters:
  `listener` - TransactionListener to register

#### removeTransactionListener

    void removeTransactionListener(TransactionListener listener)

Removes the `TransactionListener` from the list of listeners.

Parameters:
  `listener` - TransactionListener to remove

#### commit

    void commit()
                throws java.sql.SQLException

Commit the transaction

Throws:
  `java.sql.SQLException`

#### rollback

    void rollback()
                  throws java.sql.SQLException

Roll back the transaction

Throws:
  `java.sql.SQLException`

#### prepare

    void prepare(byte[] recoveryInformation)
                 throws java.sql.SQLException

Prepare the transaction for two-phase commit/rollback.

Parameters:
  `recoveryInformation` - Transaction recovery information (stored in RDB$TRANSACTION_DESCRIPTION of RDB$TRANSACTIONS), or `null` to prepare without recovery information.
Throws:
  `java.sql.SQLException`

#### getTransactionInfo

    <T> T getTransactionInfo(byte[] requestItems,
                           int bufferLength,
                           InfoProcessor<T> infoProcessor)
                         throws java.sql.SQLException

Request transaction info.

Parameters:
  `requestItems` - Array of info items to request
  `bufferLength` - Response buffer length to use
  `infoProcessor` - Implementation of `InfoProcessor` to transform the info response
Returns:
  Transformed info response of type T
Throws:
  `java.sql.SQLException` - For errors retrieving or transforming the response.

#### getTransactionInfo

    byte[] getTransactionInfo(byte[] requestItems,
                            int maxBufferLength)
                              throws java.sql.SQLException

Performs a transaction info request.

Parameters:
  `requestItems` - Information items to request
  `maxBufferLength` - Maximum response buffer length to use
Returns:
  The response buffer (note: length is the actual length of the response, not `maxBufferLength`
Throws:
  `java.sql.SQLException` - For errors retrieving the information.

#### getTransactionId

    long getTransactionId()
                          throws java.sql.SQLException

Retrieves the transaction id.

The transaction id is the database transaction id, not to be confused with the attachment level transaction handle provided by `getHandle()`.

Returns:
  Database transaction id.
Throws:
  `java.sql.SQLException`