com.amazon.carbonado
Interface RepositoryBuilder

All Known Implementing Classes:
AbstractRepositoryBuilder, BDBRepositoryBuilder, IndexedRepositoryBuilder, JDBCRepositoryBuilder, LoggingRepositoryBuilder, MapRepositoryBuilder, ReplicatedRepositoryBuilder

public interface RepositoryBuilder

Standard interface for building up configuration and opening a 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.

Author:
Brian S O'Neill

Method Summary
 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(AtomicReference<Repository> rootReference)
          Builds a repository instance.
 String getName()
          Returns the name of the repository.
 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(String name)
          Set name for the repository, which is required.
 

Method Detail

build

Repository build()
                 throws ConfigurationException,
                        RepositoryException
Builds a repository instance.

Throws:
ConfigurationException - if there is a problem in the builder's configuration
RepositoryException - if there is a general problem opening the repository

build

Repository build(AtomicReference<Repository> rootReference)
                 throws ConfigurationException,
                        RepositoryException
Builds a repository instance.

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.

Parameters:
rootReference - reference to root parent repository, to be set by parent repository upon being built
Throws:
ConfigurationException - if there is a problem in the builder's configuration
RepositoryException - if there is a general problem opening the repository

getName

String getName()
Returns the name of the repository.


setName

void setName(String name)
Set name for the repository, which is required.


isMaster

boolean isMaster()
Returns true if repository should assume the role of master, which is true by default. Repositories that link different repositories together will designate only one as the master.

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.

See Also:
ReplicatedRepositoryBuilder

setMaster

void setMaster(boolean b)
Set to false if repository should not assume the role of master. By default, this option is true. Repositories that link different repositories together will designate only one as the master.

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.

See Also:
ReplicatedRepositoryBuilder

addTriggerFactory

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. The primary purpose of this method is to allow decorator repositories the opportunity to register custom persistence code for each Storable.

Returns:
true if TriggerFactory was added, false if TriggerFactory was not added because an equal TriggerFactory is already registered

removeTriggerFactory

boolean removeTriggerFactory(TriggerFactory factory)
Remove a TriggerFactory which was added earlier.

Returns:
true if TriggerFactory instance was removed, false if not added

getTriggerFactories

Iterable<TriggerFactory> getTriggerFactories()
Returns all the TriggerFactories which were added.



Copyright © 2006-2009 Amazon Technologies, Inc.. All Rights Reserved.