|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface RepositoryFactory
An extension to the standard RepositoryFactory
interface, with ModeShape-specific constants and additional
shutdown()
methods.
ModeShape's RepositoryFactory implementation looks for two parameters:
org.modeshape.jcr.URL
- This parameter specifies the URL of the configuration file for the ModeShape
engine with an optional "repositoryName
" URL parameter specifying which of the repository defined in the
configuration file should be used. Alternatively, if the URL begins with "jndi:
", the object in the JNDI name will
be looked up, and returned if it is a Repository
instance or used to find the Repository instance if the JNDI object is
the ModeShape engine.
org.modeshape.jcr.RepositoryName
- This parameter specifies the name of the repository that is to be
used, and that is an alternative to the "repositoryName
URL parameter.
org.modeshape.jcr.RepositoryName
. If one is
found, then return that Repository instance.org.modeshape.jcr.URL
. If the file had
already been loaded, find the repository and return it; otherwise attempt to load the file, start the engine, and find the
Repository instance with the given name.The best way for your application to use the RepositoryFactory is to use only the JCR API, and load the properties from a file. This way, only the file has implementation-specific information, while your application uses only the standard JCR API:
Properties parameters = new Properties(); parameters.load(...); // Load from a stream or reader Repository repository = null; for (RepositoryFactory factory : ServiceLoader.load(RepositoryFactory.class)) { repository = factory.getRepository(parameters); if (repository != null) break; }
If you'd rather your application programmatically create the parameters to pass to JCR's RepositoryFactory, and your application is already dependent upon the ModeShape public API, you can use the constants in this interface to build your parameter.
The preferred approach is to specify the location of the ModeShape configuration file and the name of the repository using separate parameters:
String configUrl = "file://path/to/configFile.xml"; // URL that points to ModeShape's configuration file String repoName = "MyRepository"; // Name of the repository Map<String, String> parameters = new HashMap<String, String>(); parameters.put(org.modeshape.jcr.api.RepositoryFactory.URL, configUrl); parameters.put(org.modeshape.jcr.api.RepositoryFactory.RepositoryName, repoName); Repository repository = null; for (RepositoryFactory factory : ServiceLoader.load(RepositoryFactory.class)) { repository = factory.getRepository(parameters); if (repository != null) break; }
Note, however, that the repository name could have been specified with a URL parameter:
String configUrl = "file://path/to/configFile.xml?repositoryName=MyRepository"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put(org.modeshape.jcr.api.RepositoryFactory.URL, configUrl); Repository repository = null; for (RepositoryFactory factory : ServiceLoader.load(RepositoryFactory.class)) { repository = factory.getRepository(parameters); if (repository != null) break; }
Field Summary | |
---|---|
static String |
REPOSITORY_NAME
The name of the key for the ModeShape JCR repository name in the parameter map. |
static String |
URL
The name of the key for the ModeShape JCR URL in the parameter map. |
Method Summary | |
---|---|
Repositories |
getRepositories(String jcrUrl)
Returns the Repositories instance referenced by the jcrUrl parameter. |
void |
shutdown()
Begin the shutdown process for all the JcrEngine JcrEngines created by calls to RepositoryFactory.getRepository(Map) . |
boolean |
shutdown(long timeout,
TimeUnit unit)
Begin the shutdown process for all the JcrEngine JcrEngines created by calls to RepositoryFactory.getRepository(Map) . |
Methods inherited from interface javax.jcr.RepositoryFactory |
---|
getRepository |
Field Detail |
---|
static final String URL
For example:
String configUrl = "file://path/to/configFile.xml?repositoryName=myRepository"; // URL that points to your configuration file Map<String, String> parameters = new HashMap<String, String>(); parameters.put(org.modeshape.jcr.api.RepositoryFactory.URL, configUrl); Repository repository = null; for (RepositoryFactory factory : ServiceLoader.load(RepositoryFactory.class)) { repository = factory.getRepository(parameters); if (repository != null) break; }
static final String REPOSITORY_NAME
URL
.
For example:
String configUrl = "file://path/to/configFile.xml"; // URL that points to your configuration file String repoName = "myRepository"; // Name of your repository defined within the configuration file Map<String, String> parameters = new HashMap<String, String>(); parameters.put(org.modeshape.jcr.api.RepositoryFactory.URL, configUrl); parameters.put(org.modeshape.jcr.api.RepositoryFactory.REPOSITORY_NAME, repoName); Repository repository = null; for (RepositoryFactory factory : ServiceLoader.load(RepositoryFactory.class)) { repository = factory.getRepository(parameters); if (repository != null) break; }
Method Detail |
---|
void shutdown()
JcrEngine JcrEngines
created by calls to RepositoryFactory.getRepository(Map)
.
Calling #getRepository(Map)
with a file-based URL parameter causes a new JcrEngine
to be instantiated and
started. Any JcrEngine
created in this manner must be stored by the RepositoryFactory
implementation.
Invoking this method iteratively invokes the shutdown()
method on each JcrEngine
.
This method merely initiates the shutdown process for each JcrEngine
. There is no guarantee that the shutdown
process will have completed prior to this method returning. The shutdown(long, TimeUnit)
method provides the
ability to wait until all engines are shutdown or the given time elapses.
Invoking this method does not preclude creating new JcrEngines
with future calls to RepositoryFactory.getRepository(Map)
.
Any caller using this method as part of an application shutdown process should take care to cease invocations of
RepositoryFactory.getRepository(Map)
prior to invoking this method.
boolean shutdown(long timeout, TimeUnit unit) throws InterruptedException
JcrEngine JcrEngines
created by calls to RepositoryFactory.getRepository(Map)
.
Calling #getRepository(Map)
with a file-based URL parameter causes a new JcrEngine
to be instantiated and
started. Any JcrEngine
created in this manner must be stored by the RepositoryFactory
implementation.
Invoking this method iteratively invokes the shutdown()
method on each JcrEngine
and then iteratively
invokes the awaitTermination(long, TimeUnit)
method to await termination.
Although this method initiates the shutdown process for each JcrEngine
and invokes the awaitTermination
method, there is still no guarantee that the shutdown process will have completed prior to this method returning. It is
possible for the time required to shutdown one or more of the engines to exceed the provided time window.
Invoking this method does not preclude creating new JcrEngines
with future calls to RepositoryFactory.getRepository(Map)
.
Any caller using this method as part of an application shutdown process should take care to cease invocations of
RepositoryFactory.getRepository(Map)
prior to invoking this method.
timeout
- the maximum time per engine to allow for shutdownunit
- the time unit of the timeout argument
InterruptedException
- if interrupted while waitingRepositories getRepositories(String jcrUrl)
Repositories
instance referenced by the jcrUrl
parameter.
If the jcrUrl
parameter contains a valid, ModeShape-compatible URL for a Repositories
instance that has not
yet been started, that Repositories instance
will be created and started as a side effect of this method.
jcrUrl
- the ModeShape-compatible URL that specifies the JcrEngine
to be used; may not be null
Repositories
instance specified by the given url if one exists, otherwise null
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |