public interface RepositoryBuilder
Repository
instance. All repository implementations should be constructable
via a builder that implements this interface. Builders should follow a
pattern where configuration is supplied via property access methods. With
this design, each item can have extensive documentation and optional
configuration can be ignored.
A builder design also offers advantages over constructors in that a different repository can be built depending on the specific configuration. This logic is hidden, making it easier to use repositories that would otherwise require complex steps to construct.
RepositoryBuilders are not expected to be thread-safe, but the Repositories they build are thread-safe.
Modifier and Type | Method and Description |
---|---|
boolean |
addTriggerFactory(TriggerFactory factory)
Optionally add a TriggerFactory which will be called upon to create an
initial trigger for each Storable type that the Repository supports.
|
Repository |
build()
Builds a repository instance.
|
Repository |
build(java.util.concurrent.atomic.AtomicReference<Repository> rootReference)
Builds a repository instance.
|
java.lang.String |
getName()
Returns the name of the repository.
|
java.lang.Iterable<TriggerFactory> |
getTriggerFactories()
Returns all the TriggerFactories which were added.
|
boolean |
isMaster()
Returns true if repository should assume the role of master, which is
true by default.
|
boolean |
removeTriggerFactory(TriggerFactory factory)
Remove a TriggerFactory which was added earlier.
|
void |
setMaster(boolean b)
Set to false if repository should not assume the role of master.
|
void |
setName(java.lang.String name)
Set name for the repository, which is required.
|
Repository build() throws ConfigurationException, RepositoryException
ConfigurationException
- if there is a problem in the builder's configurationRepositoryException
- if there is a general problem opening the repositoryRepository build(java.util.concurrent.atomic.AtomicReference<Repository> rootReference) throws ConfigurationException, RepositoryException
If the repository is being wrapped by a parent repository, the child repository will need to know this fact for some operations to work correctly. Since the parent repository is not built yet, a reference is used instead.
rootReference
- reference to root parent repository, to be set by
parent repository upon being builtConfigurationException
- if there is a problem in the builder's configurationRepositoryException
- if there is a general problem opening the repositoryjava.lang.String getName()
void setName(java.lang.String name)
boolean isMaster()
A master repository is responsible for version
and
sequence
properties. For insert operations, a master
repository must set these properties if they are uninitialized. For
updates, the version property is checked to see if an OptimisticLockException
should be thrown.
ReplicatedRepositoryBuilder
void setMaster(boolean b)
A master repository is responsible for version
and
sequence
properties. For insert operations, a master
repository must set these properties if they are uninitialized. For
updates, the version property is checked to see if an OptimisticLockException
should be thrown.
ReplicatedRepositoryBuilder
boolean addTriggerFactory(TriggerFactory factory)
boolean removeTriggerFactory(TriggerFactory factory)
java.lang.Iterable<TriggerFactory> getTriggerFactories()
Copyright © 2006-2013 Amazon Technologies, Inc.. All Rights Reserved.