Class ObjectStore

java.lang.Object
com.arjuna.ats.arjuna.objectstore.ObjectStore
All Implemented Interfaces:
BaseStore, ObjectStoreAPI, ParticipantStore, RecoveryStore, TxLog
Direct Known Subclasses:
FileSystemStore, TwoPhaseVolatileStore, VolatileStore

public abstract class ObjectStore extends Object implements ObjectStoreAPI
The object store interface is the application's route to using a specific object store implementation. The interface dynamically binds to an implementation of the right type. This is the base class from which all object store types are derived. Note that because object store instances are stateless, to improve efficiency we try to only create one instance of each type per process. Therefore, the create and destroy methods are used instead of new and delete. If an object store is accessed via create it *must* be deleted using destroy. Of course it is still possible to make use of new directly.
Since:
JTS 1.0.
Version:
$Id: ObjectStore.java 2342 2006-03-30 13:06:17Z $
Author:
Mark Little (mark@arjuna.com)
  • Field Details

    • shareStatus

      protected final int shareStatus
    • _objectStoreRoot

      protected final String _objectStoreRoot
  • Constructor Details

  • Method Details

    • start

      public void start()
      Specified by:
      start in interface BaseStore
    • stop

      public void stop()
      Specified by:
      stop in interface BaseStore
    • allObjUids

      public boolean allObjUids(String s, InputObjectState buff) throws ObjectStoreException
      Description copied from interface: RecoveryStore
      Obtain all of the Uids for a specified type, regardless of their state.
      Specified by:
      allObjUids in interface RecoveryStore
      Parameters:
      s - The type to scan for.
      buff - The object state in which to store the Uids
      Returns:
      true if no errors occurred, false otherwise.
      Throws:
      ObjectStoreException
    • sync

      public void sync() throws SyncFailedException, ObjectStoreException
      Some object store implementations may be running with automatic sync disabled. Calling this method will ensure that any states are flushed to disk.
      Specified by:
      sync in interface TxLog
      Throws:
      SyncFailedException
      ObjectStoreException
    • locateStore

      public String locateStore(String localOSRoot) throws ObjectStoreException
      Parameters:
      localOSRoot - the root of the store.
      Returns:
      the full path of the store. localOSRoot is always a relative name. NOTE this path always ends in a /
      Throws:
      ObjectStoreException
    • fullCommitNeeded

      public boolean fullCommitNeeded()
      Does this store need to do the full write_uncommitted/commit protocol?
      Specified by:
      fullCommitNeeded in interface ParticipantStore
      Returns:
      true if full commit is needed, false otherwise.
    • isType

      public boolean isType(Uid u, String tn, int st) throws ObjectStoreException
      Is the current state of the object the same as that provided as the last parameter?
      Specified by:
      isType in interface RecoveryStore
      Parameters:
      u - The object to work on.
      tn - The type of the object.
      st - The expected type of the object.
      Returns:
      true if the current state is as expected, false otherwise.
      Throws:
      ObjectStoreException
    • initialise

      public final void initialise(Uid u, String tn)
      Initialise the object store.
    • shareState

      public final int shareState()
    • storeDir

      public final String storeDir()
    • storeRoot

      public final String storeRoot()
    • supressEntry

      protected abstract boolean supressEntry(String name)
      Suppress directories of the specified type from allTypes etc?
    • revealedId

      protected String revealedId(String name)
      Given a type id which is possibly hidden (e.g., has a ! at the end), make it a valid Uid so we can return it.