The concept of a Repository has been introduced to Adito to deal with the fact that at some point we will want to introduce load balancing and fail-over facilities to the server.
Some key artifacts outside of the {@link com.adito.core.Database} implementations should also be shared amongst all instances that may be running on a network of Adito servers. These include {@link com.adito.boot.KeyStoreManager} instances, {@link com.adito.extensions.store.ExtensionStore} instances and others.
Each repository implementation should be able to handle multiple stores. Each of these named stores then may contain multiple named Entries. Each entry is simply of blob of data that may be written to and read from using I/O streams. @see com.adito.boot.RepositoryFactory @see com.adito.boot.LocalRepository @see com.adito.boot.RepositoryStore
RepositoryRegistry
. The implementing classes should provide the methods for accessing the domain specific data.
@author Shane Isbell
A repository supports the following fundamental operations
{@link #get} retrieves a resource specified by a provided identifier creating a new file .
{@link #put} transfers a file to the repository.
{@link #list} returns a listing of file like objects belonging to a specified parent directory.
A repository holds all objects and refs used for managing source code (could be any type of file, but source code is what SCM's are typically used for).
This class is thread-safe.
GeoTools includes a really simple RepositoryImpl which you can use to manage DataStore in your own application; or if you have your own advanced "catalog" you can make your own implementation.
@source $URL$This interface is here for backwards compatibility with pre-2.2 Lily versions. In Lily 2.2, the functionality has been split out over 2 new interfaces: {@link LRepository} and {@link LTable}, from which Repository extends. New code should be written against either {@link LRepository} or {@link LTable}.
A Repository object represents one specific table within one specific named repository. It is obtained by:
For backwards compatibility, Repository extends from LTable. The methods of LTable will in this case be executed against the table for which this repository has been retrieved: either the default table called "record" or another table in case this Repository instance was cast from a call on {@link Repository#getTable(String)}.
While Repository extends from Closeable, you don't need to call close on it. When using LilyClient, Repositories are closed as part of closing LilyClient, and when embedded in the lily-server process, the lifecycle is also managed automatically.
It also defines HEAD (see below), which identifies the branch or commit the current working tree stemmed from. Lastly, it contains a set of branches and tags, to identify certain commits by name.
@see WorkingTreePlease note that a repository needs to be initialized before it can be used and that it should be shut down before it is discarded/garbage collected. Forgetting the latter can result in loss of data (depending on the Repository implementation)! @author Arjohn Kampman
Repositories may be registered as services and may be used as by a resolve context during resolver operations.
Repositories registered as services may be filtered using standard service properties. @ThreadSafe @noimplement @author $Id: 0ce322be0d7242d30e47b7f972057d90e9b57c5e $
Structured after the model used by Maven and Ivy. @author Stefan Schmidt @since 1.1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|