Package org.firebirdsql.ds

## Class FBAbstractCommonDataSource

- java.lang.Object
- - org.firebirdsql.ds.RootCommonDataSource
  - - org.firebirdsql.ds.AbstractConnectionPropertiesDataSource
    - - org.firebirdsql.ds.FBAbstractCommonDataSource

- All Implemented Interfaces:
    `javax.sql.CommonDataSource`, `AttachmentProperties`, `BaseProperties`, `DatabaseConnectionProperties`, `FirebirdConnectionProperties`
  Direct Known Subclasses:
    `FBConnectionPoolDataSource`, `FBXADataSource`

      public abstract class FBAbstractCommonDataSource
      extends AbstractConnectionPropertiesDataSource

  Abstract class for properties and behaviour common to DataSources, XADataSources and ConnectionPoolDataSources
  Since:
    2.2
  Author:
    Mark Rotteveel

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected static java.lang.String` | `REF_DESCRIPTION` |
    `protected static java.lang.String` | `REF_PROPERTIES` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `FBAbstractCommonDataSource()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected abstract void` | `checkNotStarted()` | Method to check if this DataSource has not yet started.
    `java.util.Map<ConnectionProperty,​java.lang.Object>` | `connectionPropertyValues()` | An unmodifiable view on the connection properties held by this BaseProperties implementation.
    `java.lang.Boolean` | `getBooleanProperty​(java.lang.String name)` | Retrieves a `boolean` property value by name.
    `protected FBConnectionProperties` | `getConnectionProperties()` |
    `java.lang.String` | `getDescription()` |
    `java.lang.Integer` | `getIntProperty​(java.lang.String name)` | Retrieves an `int` property value by name.
    `java.lang.String` | `getProperty​(java.lang.String name)` | Retrieves a string property value by name.
    `TransactionParameterBuffer` | `getTransactionParameters​(int isolation)` | Get the transaction parameter buffer corresponding to the current connection request information.
    `void` | `setBooleanProperty​(java.lang.String name, java.lang.Boolean value)` | Sets a `boolean` property by name.
    `protected void` | `setConnectionProperties​(FBConnectionProperties connectionProperties)` |
    `void` | `setDescription​(java.lang.String description)` |
    `void` | `setIntProperty​(java.lang.String name, java.lang.Integer value)` | Sets an `int` property by name.
    `void` | `setNonStandardProperty​(java.lang.String propertyMapping)` | Method that allows setting non-standard property in the form "key=value" form.
    `void` | `setProperty​(java.lang.String name, java.lang.String value)` | Sets a property by name.
    `void` | `setTransactionParameters​(int isolation, TransactionParameterBuffer tpb)` | Set transaction parameters for the specified transaction isolation level.
    `protected static void` | `updateReference​(javax.naming.Reference ref, FBAbstractCommonDataSource instance)` | Updates the supplied reference with RefAddr properties relevant to this class.
    `protected LockCloseable` | `withLock()` |

    - ### Methods inherited from class org.firebirdsql.ds.AbstractConnectionPropertiesDataSource

      `getAuthPlugins, getBlobBufferSize, getBuffersNumber, getCharSet, getConnectTimeout, getDatabase, getDatabaseName, getDataTypeBind, getDbCryptConfig, getDecfloatRound, getDecfloatTraps, getDefaultIsolation, getDefaultTransactionIsolation, getEncoding, getGeneratedKeysEnabled, getLoginTimeout, getPageCacheSize, getPassword, getPortNumber, getProcessId, getProcessName, getRoleName, getScrollableCursor, getServerBatchBufferSize, getServerName, getSessionTimeZone, getSocketBufferSize, getSoTimeout, getSqlDialect, getTpbMapping, getType, getUser, getUserName, getWireCrypt, isColumnLabelForName, isDefaultResultSetHoldable, isIgnoreProcedureType, isTimestampUsesLocalTimezone, isUseFirebirdAutocommit, isUseServerBatch, isUseStreamBlobs, isWireCompression, setAuthPlugins, setBlobBufferSize, setBuffersNumber, setCharSet, setColumnLabelForName, setConnectTimeout, setDatabase, setDatabaseName, setDataTypeBind, setDbCryptConfig, setDecfloatRound, setDecfloatTraps, setDefaultIsolation, setDefaultResultSetHoldable, setDefaultTransactionIsolation, setEncoding, setGeneratedKeysEnabled, setIgnoreProcedureType, setLoginTimeout, setPageCacheSize, setPassword, setPortNumber, setProcessId, setProcessName, setRoleName, setScrollableCursor, setServerBatchBufferSize, setServerName, setSessionTimeZone, setSocketBufferSize, setSoTimeout, setSqlDialect, setTimestampUsesLocalTimezone, setTpbMapping, setType, setUseFirebirdAutocommit, setUser, setUserName, setUseServerBatch, setUseStreamBlobs, setWireCompression, setWireCrypt`

    - ### Methods inherited from class org.firebirdsql.ds.RootCommonDataSource

      `getLogWriter, getParentLogger, setLogWriter`

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

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

    - ### Methods inherited from interface org.firebirdsql.jaybird.props.BaseProperties

      `getBooleanProperty, getIntProperty, getProperty`

    - ### Methods inherited from interface javax.sql.CommonDataSource

      `createShardingKeyBuilder`

    - ### Methods inherited from interface org.firebirdsql.jdbc.FirebirdConnectionProperties

      `getNonStandardProperty, setNonStandardProperty`

- - ### Field Detail

    - #### REF_DESCRIPTION

          protected static final java.lang.String REF_DESCRIPTION

      See Also:
        Constant Field Values

    - #### REF_PROPERTIES

          protected static final java.lang.String REF_PROPERTIES

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### FBAbstractCommonDataSource

          public FBAbstractCommonDataSource()

  - ### Method Detail

    - #### withLock

          protected final LockCloseable withLock()

    - #### checkNotStarted

          protected abstract void checkNotStarted()
                                           throws java.lang.IllegalStateException

      Method to check if this DataSource has not yet started.

      Implementations should throw IllegalStateException when the DataSource is already in use and modifying properties is not allowed.

      Throws:
        `java.lang.IllegalStateException` - When the DataSource is already in use

    - #### getDescription

          public java.lang.String getDescription()

    - #### setDescription

          public void setDescription​(java.lang.String description)

    - #### getTransactionParameters

          public TransactionParameterBuffer getTransactionParameters​(int isolation)

      Description copied from interface: `FirebirdConnectionProperties`
      Get the transaction parameter buffer corresponding to the current connection request information.
      Parameters:
        `isolation` - transaction isolation level for which TPB should be returned.
      Returns:
        instance of `TransactionParameterBuffer`.

    - #### setTransactionParameters

          public void setTransactionParameters​(int isolation,
                                               TransactionParameterBuffer tpb)

      Description copied from interface: `FirebirdConnectionProperties`
      Set transaction parameters for the specified transaction isolation level. The specified TPB is used as a default mapping for the specified isolation level.
      Parameters:
        `isolation` - transaction isolation level.
        `tpb` - instance of `TransactionParameterBuffer` containing transaction parameters.

    - #### setNonStandardProperty

          public final void setNonStandardProperty​(java.lang.String propertyMapping)

      Method that allows setting non-standard property in the form "key=value" form. This method is needed by some containers to specify properties in the configuration.
      Parameters:
        `propertyMapping` - mapping between property name (key) and its value. Name and value are separated with "=", ":" or whitespace character. Whitespace characters on the beginning of the string and between key and value are ignored. No escaping is possible: "\n" is backslash-en, not a new line mark.
      See Also:
        `setProperty(String, String)`

    - #### getProperty

          public java.lang.String getProperty​(java.lang.String name)

      Description copied from interface: `BaseProperties`
      Retrieves a string property value by name.

      For properties with an explicit default, this method should return the string presentation of that default, not `null`. For `int` or `boolean` the string equivalent is returned.

      Parameters:
        `name` - Property name (not `null` or empty)
      Returns:
        Value of the property, or `null` when not set or not a known property

    - #### setProperty

          public void setProperty​(java.lang.String name,
                                  java.lang.String value)

      Description copied from interface: `BaseProperties`
      Sets a property by name.

      This method can be used to set all defined properties, but also properties not known by Jaybird. When setting `int` or `boolean` properties, the appropriate conversions are applied. Using `null` will reset to the default value. For `boolean` properties, an empty string is taken to mean `true`.

      Parameters:
        `name` - Property name (not `null` or empty)
        `value` - Property value (use `null` to apply default)

    - #### getIntProperty

          public java.lang.Integer getIntProperty​(java.lang.String name)

      Description copied from interface: `BaseProperties`
      Retrieves an `int` property value by name.

      For properties with an explicit default, this method should return the integer presentation of that default. For implementation simplicity, it is allowed to convert any string property to `int` instead of checking if something is actually an `int` property

      Parameters:
        `name` - Property name (not `null` or empty)
      Returns:
        Integer with value of the property, or `null` when not set

    - #### setIntProperty

          public void setIntProperty​(java.lang.String name,
                                     java.lang.Integer value)

      Description copied from interface: `BaseProperties`
      Sets an `int` property by name.

      For implementation simplicity, it is allowed to also set string properties. The value set will be the string equivalent.

      Parameters:
        `name` - Property name (not `null` or empty)
        `value` - Property value (use `null` to apply default)

    - #### getBooleanProperty

          public java.lang.Boolean getBooleanProperty​(java.lang.String name)

      Description copied from interface: `BaseProperties`
      Retrieves a `boolean` property value by name.

      For properties with an explicit default, this method should return the boolean presentation of that default. For implementation simplicity, it is allowed to convert any string property to `boolean` instead of checking if something is actually an `int` property

      Parameters:
        `name` - Property name (not `null` or empty)
      Returns:
        Integer with value of the property, or `null` when not set

    - #### setBooleanProperty

          public void setBooleanProperty​(java.lang.String name,
                                         java.lang.Boolean value)

      Description copied from interface: `BaseProperties`
      Sets a `boolean` property by name.

      For implementation simplicity, it is allowed to also set string properties. The value set will be the string equivalent.

      Parameters:
        `name` - Property name (not `null` or empty)
        `value` - Property value (use `null` to apply default)

    - #### connectionPropertyValues

          public java.util.Map<ConnectionProperty,​java.lang.Object> connectionPropertyValues()

      Description copied from interface: `BaseProperties`
      An unmodifiable view on the connection properties held by this BaseProperties implementation.

      Be aware, implementations can have additional properties that are not mapped from `ConnectionProperty`. Such properties will need to be retrieved in an implementation-specific manner.

      Returns:
        An unmodifiable view on the property values held in this properties instance

    - #### setConnectionProperties

          protected final void setConnectionProperties​(FBConnectionProperties connectionProperties)

    - #### getConnectionProperties

          protected final FBConnectionProperties getConnectionProperties()

    - #### updateReference

          protected static void updateReference​(javax.naming.Reference ref,
                                                FBAbstractCommonDataSource instance)
                                         throws javax.naming.NamingException

      Updates the supplied reference with RefAddr properties relevant to this class.
      Parameters:
        `ref` - Reference to update
        `instance` - Instance of this class to obtain values
      Throws:
        `javax.naming.NamingException`