org.openrdf.sail.helpers
Class SailBase

java.lang.Object
  extended by org.openrdf.sail.helpers.SailBase
All Implemented Interfaces:
Sail
Direct Known Subclasses:
NotifyingSailBase, RdbmsStore

public abstract class SailBase
extends Object
implements Sail

SailBase is an abstract Sail implementation that takes care of common sail tasks, including proper closing of active connections and a grace period for active connections during shutdown of the store.

Author:
Herko ter Horst, jeen, Arjohn Kampman

Field Summary
protected  long connectionTimeOut
          Connection timeout on shutdown (in ms).
protected static long DEFAULT_CONNECTION_TIMEOUT
          Default connection timeout on shutdown: 20,000 milliseconds.
protected  ReentrantReadWriteLock initializationLock
          Lock used to synchronize the initialization state of a sail.
protected  Logger logger
           
 
Constructor Summary
SailBase()
           
 
Method Summary
protected  void connectionClosed(SailConnection connection)
          Signals to the store that the supplied connection has been closed; called by SailConnectionBase.close().
protected static boolean debugEnabled()
           
 SailConnection getConnection()
          Opens a connection on the Sail which can be used to query and update data.
protected abstract  SailConnection getConnectionInternal()
          Returns a store-specific SailConnection object.
 File getDataDir()
          Gets the Sail's data directory.
 void initialize()
          Initializes the Sail.
protected  void initializeInternal()
          Do store-specific operations to initialize the store.
protected  boolean isInitialized()
          Checks whether the Sail has been initialized.
 void setDataDir(File dataDir)
          Sets the data directory for the Sail.
 void shutDown()
          Shuts down the Sail, giving it the opportunity to synchronize any stale data.
protected abstract  void shutDownInternal()
          Do store-specific operations to ensure proper shutdown of the store.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.openrdf.sail.Sail
getValueFactory, isWritable
 

Field Detail

DEFAULT_CONNECTION_TIMEOUT

protected static final long DEFAULT_CONNECTION_TIMEOUT
Default connection timeout on shutdown: 20,000 milliseconds.

See Also:
Constant Field Values

logger

protected final Logger logger

initializationLock

protected final ReentrantReadWriteLock initializationLock
Lock used to synchronize the initialization state of a sail.


connectionTimeOut

protected volatile long connectionTimeOut
Connection timeout on shutdown (in ms). Defaults to DEFAULT_CONNECTION_TIMEOUT.

Constructor Detail

SailBase

public SailBase()
Method Detail

debugEnabled

protected static boolean debugEnabled()

setDataDir

public void setDataDir(File dataDir)
Description copied from interface: Sail
Sets the data directory for the Sail. The Sail can use this directory for storage of data, parameters, etc. This directory must be set before the Sail is initialized.

Specified by:
setDataDir in interface Sail

getDataDir

public File getDataDir()
Description copied from interface: Sail
Gets the Sail's data directory.

Specified by:
getDataDir in interface Sail
See Also:
Sail.setDataDir(File)

toString

public String toString()
Overrides:
toString in class Object

isInitialized

protected boolean isInitialized()
Checks whether the Sail has been initialized. Sails are initialized from initialization until shutdown.

Returns:
true if the Sail has been initialized, false otherwise.

initialize

public void initialize()
                throws SailException
Description copied from interface: Sail
Initializes the Sail. Care should be taken that required initialization parameters have been set before this method is called. Please consult the specific Sail implementation for information about the relevant parameters.

Specified by:
initialize in interface Sail
Throws:
SailException - If the Sail could not be initialized.

initializeInternal

protected void initializeInternal()
                           throws SailException
Do store-specific operations to initialize the store. The default implementation of this method does nothing.

Throws:
SailException

shutDown

public void shutDown()
              throws SailException
Description copied from interface: Sail
Shuts down the Sail, giving it the opportunity to synchronize any stale data. Care should be taken that all initialized Sails are being shut down before an application exits to avoid potential loss of data. Once shut down, a Sail can no longer be used until it is re-initialized.

Specified by:
shutDown in interface Sail
Throws:
SailException - If the Sail object encountered an error or unexpected situation internally.

shutDownInternal

protected abstract void shutDownInternal()
                                  throws SailException
Do store-specific operations to ensure proper shutdown of the store.

Throws:
SailException

getConnection

public SailConnection getConnection()
                             throws SailException
Description copied from interface: Sail
Opens a connection on the Sail which can be used to query and update data. Depending on how the implementation handles concurrent access, a call to this method might block when there is another open connection on this Sail.

Specified by:
getConnection in interface Sail
Throws:
SailException - If no transaction could be started, for example because the Sail is not writable.

getConnectionInternal

protected abstract SailConnection getConnectionInternal()
                                                 throws SailException
Returns a store-specific SailConnection object.

Returns:
A connection to the store.
Throws:
SailException

connectionClosed

protected void connectionClosed(SailConnection connection)
Signals to the store that the supplied connection has been closed; called by SailConnectionBase.close().

Parameters:
connection - The connection that has been closed.


Copyright © 2001-2010 Aduna. All Rights Reserved.