org.firebirdsql.gds.ng

## Class AbstractFbAttachment<T extends AbstractConnection<? extends IAttachProperties<?>,? extends FbAttachment>>

- java.lang.Object
- - org.firebirdsql.gds.ng.AbstractFbAttachment<T>

- All Implemented Interfaces:
    java.lang.AutoCloseable, FbAttachment, ExceptionListenable
  Direct Known Subclasses:
    AbstractFbDatabase, AbstractFbService

      public abstract class AbstractFbAttachment<T extends AbstractConnection<? extends IAttachProperties<?>,? extends FbAttachment>>
      extends java.lang.Object
      implements FbAttachment

  Common behavior for `AbstractFbService` and `AbstractFbDatabase`.
  Since:
    3.0
  Author:
    Mark Rotteveel

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected T` | `connection`
    `protected ExceptionListenerDispatcher` | `exceptionListenerDispatcher`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractFbAttachment(T connection, DatatypeCoder datatypeCoder)`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addExceptionListener(ExceptionListener listener)` Adds an exception listener to this object.
    `protected abstract void` | `checkConnected()` Checks if the attachment is connected, and throws a `SQLException` if it isn't connected.
    `void` | `forceClose()` Forces the connection to close without proper detach or cleanup.
    `DatatypeCoder` | `getDatatypeCoder()`
    `Encoding` | `getEncoding()`
    `IEncodingFactory` | `getEncodingFactory()`
    `int` | `getNetworkTimeout()` Gets the current network timeout for this attachment.
    `GDSServerVersion` | `getServerVersion()`
    `protected org.firebirdsql.gds.ng.ServerVersionInformation` | `getServerVersionInformation()`
    `boolean` | `isAttached()` Current attachment status.
    `boolean` | `isLockedByCurrentThread()` Queries if the lock is held by the current thread.
    `void` | `removeExceptionListener(ExceptionListener listener)` Removes an exception listener to this object.
    `protected void` | `safelyDetach()` Performs `FbAttachment.close()` suppressing any exception.
    `protected void` | `setAttached()` Called when this attachment is attached.
    `protected void` | `setDetached()` Called when this attachment is detached.
    `protected void` | `setServerVersion(java.lang.String... versionStrings)` Sets the Firebird version from one or more version string elements.
    `LockCloseable` | `withLock()` Locks the lock with `Lock.lock()` (or equivalent).

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

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

    - ### Methods inherited from interface org.firebirdsql.gds.ng.FbAttachment

      `attach, close, getHandle, setNetworkTimeout`

- - ### Field Detail

    - #### exceptionListenerDispatcher

          protected final ExceptionListenerDispatcher exceptionListenerDispatcher

    - #### connection

          protected final T extends AbstractConnection<? extends IAttachProperties<?>,? extends FbAttachment> connection

  - ### Constructor Detail

    - #### AbstractFbAttachment

          protected AbstractFbAttachment(T connection,
                                         DatatypeCoder datatypeCoder)

  - ### Method Detail

    - #### withLock

          public final LockCloseable withLock()

      Description copied from interface: `FbAttachment`
      Locks the lock with `Lock.lock()` (or equivalent).

      The returned `LockClosable` can be used to unlock, preferably for use in a try-with-resources.

      Specified by:
        `withLock` in interface `FbAttachment`
      Returns:
        lock closeable which unlocks the lock on close

    - #### isLockedByCurrentThread

          public final boolean isLockedByCurrentThread()

      Description copied from interface: `FbAttachment`
      Queries if the lock is held by the current thread.
      Specified by:
        `isLockedByCurrentThread` in interface `FbAttachment`
      Returns:
        `true` if current thread holds this lock and `false` otherwise
      See Also:
        `ReentrantLock.isHeldByCurrentThread()`

    - #### forceClose

          public void forceClose()
                          throws java.sql.SQLException

      Forces the connection to close without proper detach or cleanup.

      If a given implementation does not support this, then this method should call `FbAttachment.close()`.

      Default implementation, calls `FbAttachment.close()`

      Specified by:
        `forceClose` in interface `FbAttachment`
      Throws:
        `java.sql.SQLException` - For problems closing the connection.

    - #### getServerVersion

          public GDSServerVersion getServerVersion()

      Specified by:
        `getServerVersion` in interface `FbAttachment`
      Returns:
        Firebird version string

    - #### setServerVersion

          protected final void setServerVersion(java.lang.String... versionStrings)

      Sets the Firebird version from one or more version string elements.

      This method should only be called by this instance.

      Parameters:
        `versionStrings` - Raw version strings

    - #### getServerVersionInformation

          protected org.firebirdsql.gds.ng.ServerVersionInformation getServerVersionInformation()

    - #### setAttached

          protected final void setAttached()

      Called when this attachment is attached.

      Only this `AbstractFbDatabase` instance should call this method.

    - #### isAttached

          public boolean isAttached()

      Description copied from interface: `FbAttachment`
      Current attachment status.
      Specified by:
        `isAttached` in interface `FbAttachment`
      Returns:
        `true` if connected to the server and attached to a database or service, `false` otherwise.

    - #### setDetached

          protected final void setDetached()

      Called when this attachment is detached.

      Only this `AbstractFbAttachment` instance should call this method.

    - #### getEncodingFactory

          public final IEncodingFactory getEncodingFactory()

      Specified by:
        `getEncodingFactory` in interface `FbAttachment`
      Returns:
        The `IEncodingFactory` for this connection

    - #### getEncoding

          public final Encoding getEncoding()

      Specified by:
        `getEncoding` in interface `FbAttachment`
      Returns:
        The connection encoding (should be the same as returned from calling `IEncodingFactory.getDefaultEncoding()` on the result of `FbAttachment.getEncodingFactory()`).

    - #### getDatatypeCoder

          public final DatatypeCoder getDatatypeCoder()

      Specified by:
        `getDatatypeCoder` in interface `FbAttachment`
      Returns:
        The `DatatypeCoder` for this database implementation.

    - #### getNetworkTimeout

          public int getNetworkTimeout()
                                throws java.sql.SQLException

      Description copied from interface: `FbAttachment`
      Gets the current network timeout for this attachment.
      Specified by:
        `getNetworkTimeout` in interface `FbAttachment`
      Returns:
        Timeout in milliseconds, 0 means no timeout
      Throws:
        `java.sql.SQLException` - If this attachment is closed
        `java.sql.SQLFeatureNotSupportedException` - If this attachment doesn't support network timeout

    - #### addExceptionListener

          public final void addExceptionListener(ExceptionListener listener)

      Description copied from interface: `ExceptionListenable`
      Adds an exception listener to this object.

      Implementations use `WeakReference`.

      Specified by:
        `addExceptionListener` in interface `ExceptionListenable`
      Parameters:
        `listener` - Listener to register

    - #### removeExceptionListener

          public final void removeExceptionListener(ExceptionListener listener)

      Description copied from interface: `ExceptionListenable`
      Removes an exception listener to this object.
      Specified by:
        `removeExceptionListener` in interface `ExceptionListenable`
      Parameters:
        `listener` - Listener to remove

    - #### checkConnected

          protected abstract void checkConnected()
                                          throws java.sql.SQLException

      Checks if the attachment is connected, and throws a `SQLException` if it isn't connected.
      Throws:
        `java.sql.SQLException`

    - #### safelyDetach

          protected final void safelyDetach()

      Performs `FbAttachment.close()` suppressing any exception.

Copyright © 2001-2025 Jaybird (Firebird JDBC) team. All rights reserved.