public abstract class ForwardingDataStore extends ForwardingObject implements DataStore
DataStore
forwarding all its method calls to another DataStore
.
This class provides a starting point for implementing the decorator pattern on top of the
DataStore
interface. Subclasses must implement method delegate()
and override
the methods of DataStore
they want to decorate.
SUPPORTED_TYPES
Constructor and Description |
---|
ForwardingDataStore() |
Modifier and Type | Method and Description |
---|---|
DataTransaction |
begin(boolean readOnly)
Begins a new read-only / read-write
DataStore transaction. |
void |
close()
Closes this
Component object. |
protected abstract DataStore |
delegate() |
void |
init()
Initializes the
Component with the supplied Runtime object. |
toString
protected abstract DataStore delegate()
delegate
in class ForwardingObject
public void init() throws IOException
Component
Component
with the supplied Runtime
object. This method is
called after the instantiation of a Component
and before any other instance method
is called. It provides a Runtime
that can be used to access runtime services such
as locking, serialization and filesystem access. The Component
is allowed to
perform any initialization operation that is necessary in order to become functional; on
failure, these operations may result in a IOException
being thrown.init
in interface Component
IOException
- in case initialization failspublic DataTransaction begin(boolean readOnly) throws IOException, IllegalStateException
DataStore
DataStore
transaction. All the accesses to a
DataStore
must occur in the scope of a transaction, that must be ended (possibly
committing the modifications done) as soon as possible to allow improving throughput.begin
in interface DataStore
readOnly
- true if the transaction is not allowed to modify the contents of the
DataStore
(this allows for optimizing accesses).DataCorruptedException
- in case a transaction cannot be started due to the DataStore
persistent
data being damaged or non-existing (this may trigger some external recovery
procedure)IOException
- if another IO error occurs while starting the transactionIllegalStateException
- if the DataStore
object has been already closedpublic void close()
Component
Component
object. If the component has been initialized, closing a it
causes any allocated resource to be freed and any operation or transaction ongoing within
the component being aborted; in case the component has not been initialized yet, or
close()
has already being called, calling this method has no effect. Note that the
operation affects only the local Component
object and not any remote service this
object may rely on to implement its functionalities; in particular, such a remote service
is not shutdown by the operation, so that it can be accessed by other Component
instances possibly running in other (virtual) machines. Similarly, closing a
Component
object has no impact on stored data, that continues to be persisted and
will be accessed unchanged (provided no external modification occurs) the next time a
similarly configured Component
is created.Copyright © 2015–2016 FBK-irst. All rights reserved.