Class DefaultTransaction

Object
DefaultTransaction
All Implemented Interfaces:
Closeable, AutoCloseable, Transaction

public class DefaultTransaction extends Object implements Transaction
Quick implementation of Transaction api.

Please see Transaction interface for an outline of what this class is all about.

Author:
Jody Garnett, Refractions Research
  • Field Details

    • LOGGER

      protected static final Logger LOGGER
      The logger for the data module.
  • Constructor Details

    • DefaultTransaction

      public DefaultTransaction()
    • DefaultTransaction

      public DefaultTransaction(String handle)
  • Method Details

    • putState

      public void putState(Object key, Transaction.State state)
      Remembers Externalized State for a DataSource.

      This is the GOF Momento pattern: a SimpleFeatureSource is able to externalize its internal State required for Transaction support and have this class manage it. It may retrieve this State with getState( key ).

      In addition several SimpleFeatureSource implementations may share State, a common example is JDBCDataSources keeping a shared JDBC connection using the JDBC URL as a key.

      Specified by:
      putState in interface Transaction
      Parameters:
      key - Key used to externalize State
      state - Externalized State (Momeneto)
      Throws:
      IllegalArgumentException - When Transaction already using key
      See Also:
    • removeState

      public void removeState(Object key)
      Removes state from DefaultTransaction's care.

      Currently does not complain if there is no State associated with key to remove - this may change in the future.

      Specified by:
      removeState in interface Transaction
      Parameters:
      key - Key that was used to externalize State
      Throws:
      IllegalArgumentException - If no State was maintained for supplied key
      See Also:
    • getState

      public Transaction.State getState(Object key)
      Returns externalized state or null if not available.

      Used by DataStore implementations to externalize information required for Transaction support using the GOF Momento pattern.

      Specified by:
      getState in interface Transaction
      Returns:
      Previously externalized State.
      See Also:
    • commit

      public void commit() throws IOException
      Commits all modifications against this Transaction.

      This implementation will call commit() on all State managed by this Transaction. This allows DataStores to provide their own implementation of commit().

      Specified by:
      commit in interface Transaction
      Throws:
      IOException - Encountered problem maintaining transaction state
      DataSourceException - See IOException
      See Also:
    • rollback

      public void rollback() throws IOException
      Rollsback all modifications against this Transaction.

      This implementation will call rollback() on all State managed by this Transaction. This allows DataStores to provide their own implementation of rollback().

      Specified by:
      rollback in interface Transaction
      Throws:
      IOException - Encountered problem maintaining transaction State
      DataSourceException - IOException
      See Also:
    • close

      public void close()
      Frees all State held by this Transaction.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface Transaction
    • getAuthorizations

      public Set<String> getAuthorizations()
      The current set of Authorization IDs held by this Transaction.

      This set is reset by the next call to commit or rollback.

      Specified by:
      getAuthorizations in interface Transaction
      Returns:
      Set of Authorization IDs
    • addAuthorization

      public void addAuthorization(String authID) throws IOException
      Provides an authorization ID allowing access to locked Features.

      Remember authorizations are cleared after every commit/rollback.

      Specified by:
      addAuthorization in interface Transaction
      Parameters:
      authID - Provided Authorization ID
      Throws:
      IOException - Encountered problems maintaing Transaction State
      DataSourceException - See IOException
      See Also:
      • Transaction#setAuthorization(java.lang.String)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getProperty

      public Object getProperty(Object key)
      Implementation of getProperty.
      Specified by:
      getProperty in interface Transaction
      See Also:
    • putProperty

      public void putProperty(Object key, Object value) throws IOException
      Implementation of addProperty.
      Specified by:
      putProperty in interface Transaction
      Throws:
      IOException
      See Also:
      • Transaction#addProperty(java.lang.Object, java.lang.Object)
    • finalize

      protected void finalize() throws Throwable
      Overrides:
      finalize in class Object
      Throws:
      Throwable