Package org.apache.jackrabbit.core
Class TransientRepository
- java.lang.Object
-
- org.apache.jackrabbit.commons.AbstractRepository
-
- org.apache.jackrabbit.core.TransientRepository
-
- All Implemented Interfaces:
Repository
,JackrabbitRepository
,SessionListener
public class TransientRepository extends AbstractRepository implements JackrabbitRepository, SessionListener
A repository proxy that automatically initializes and shuts down the underlying repository instance when the first session is opened or the last one closed. As long as all sessions are properly closed when no longer used, this class can be used to avoid having to explicitly shut down the repository.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
TransientRepository.RepositoryFactory
Factory interface for creatingRepositoryImpl
instances.
-
Field Summary
-
Fields inherited from interface org.apache.jackrabbit.api.JackrabbitRepository
OPTION_PRINCIPAL_MANAGEMENT_SUPPORTED, OPTION_PRIVILEGE_MANAGEMENT_SUPPORTED, OPTION_USER_MANAGEMENT_SUPPORTED
-
Fields inherited from interface javax.jcr.Repository
IDENTIFIER_STABILITY, IDENTIFIER_STABILITY_INDEFINITE_DURATION, IDENTIFIER_STABILITY_METHOD_DURATION, IDENTIFIER_STABILITY_SAVE_DURATION, IDENTIFIER_STABILITY_SESSION_DURATION, LEVEL_1_SUPPORTED, LEVEL_2_SUPPORTED, NODE_TYPE_MANAGEMENT_AUTOCREATED_DEFINITIONS_SUPPORTED, NODE_TYPE_MANAGEMENT_INHERITANCE, NODE_TYPE_MANAGEMENT_INHERITANCE_MINIMAL, NODE_TYPE_MANAGEMENT_INHERITANCE_MULTIPLE, NODE_TYPE_MANAGEMENT_INHERITANCE_SINGLE, NODE_TYPE_MANAGEMENT_MULTIPLE_BINARY_PROPERTIES_SUPPORTED, NODE_TYPE_MANAGEMENT_MULTIVALUED_PROPERTIES_SUPPORTED, NODE_TYPE_MANAGEMENT_ORDERABLE_CHILD_NODES_SUPPORTED, NODE_TYPE_MANAGEMENT_OVERRIDES_SUPPORTED, NODE_TYPE_MANAGEMENT_PRIMARY_ITEM_NAME_SUPPORTED, NODE_TYPE_MANAGEMENT_PROPERTY_TYPES, NODE_TYPE_MANAGEMENT_RESIDUAL_DEFINITIONS_SUPPORTED, NODE_TYPE_MANAGEMENT_SAME_NAME_SIBLINGS_SUPPORTED, NODE_TYPE_MANAGEMENT_UPDATE_IN_USE_SUPORTED, NODE_TYPE_MANAGEMENT_VALUE_CONSTRAINTS_SUPPORTED, OPTION_ACCESS_CONTROL_SUPPORTED, OPTION_ACTIVITIES_SUPPORTED, OPTION_BASELINES_SUPPORTED, OPTION_JOURNALED_OBSERVATION_SUPPORTED, OPTION_LIFECYCLE_SUPPORTED, OPTION_LOCKING_SUPPORTED, OPTION_NODE_AND_PROPERTY_WITH_SAME_NAME_SUPPORTED, OPTION_NODE_TYPE_MANAGEMENT_SUPPORTED, OPTION_OBSERVATION_SUPPORTED, OPTION_QUERY_SQL_SUPPORTED, OPTION_RETENTION_SUPPORTED, OPTION_SHAREABLE_NODES_SUPPORTED, OPTION_SIMPLE_VERSIONING_SUPPORTED, OPTION_TRANSACTIONS_SUPPORTED, OPTION_UNFILED_CONTENT_SUPPORTED, OPTION_UPDATE_MIXIN_NODE_TYPES_SUPPORTED, OPTION_UPDATE_PRIMARY_NODE_TYPE_SUPPORTED, OPTION_VERSIONING_SUPPORTED, OPTION_WORKSPACE_MANAGEMENT_SUPPORTED, OPTION_XML_EXPORT_SUPPORTED, OPTION_XML_IMPORT_SUPPORTED, QUERY_FULL_TEXT_SEARCH_SUPPORTED, QUERY_JOINS, QUERY_JOINS_INNER, QUERY_JOINS_INNER_OUTER, QUERY_JOINS_NONE, QUERY_LANGUAGES, QUERY_STORED_QUERIES_SUPPORTED, QUERY_XPATH_DOC_ORDER, QUERY_XPATH_POS_INDEX, REP_NAME_DESC, REP_VENDOR_DESC, REP_VENDOR_URL_DESC, REP_VERSION_DESC, SPEC_NAME_DESC, SPEC_VERSION_DESC, WRITE_SUPPORTED
-
-
Constructor Summary
Constructors Constructor Description TransientRepository()
Creates a transient repository proxy that will use the repository configuration file and home directory specified in system propertiesorg.apache.jackrabbit.repository.conf
andorg.apache.jackrabbit.repository.home
.TransientRepository(File dir)
Creates a transient repository proxy based on the given repository home directory and the repository configuration file "repository.xml" contained in that directory.TransientRepository(File xml, File dir)
Creates a transient repository proxy that will use the given repository configuration file and home directory paths to initialize the underlying repository instances.TransientRepository(String config, String home)
Creates a transient repository proxy that will use the given repository configuration file and home directory paths to initialize the underlying repository instances.TransientRepository(Properties properties)
TransientRepository(RepositoryConfig config)
Creates a transient repository proxy that will use a copy of the given repository configuration to initialize the underlying repository instance.TransientRepository(TransientRepository.RepositoryFactory factory, String home)
Creates a transient repository proxy that will use the given repository factory to initialize the underlying repository instances.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description String
getDescriptor(String key)
Returns the identified repository descriptor.String[]
getDescriptorKeys()
Returns the available descriptor keys.Value
getDescriptorValue(String key)
Value[]
getDescriptorValues(String key)
String
getHomeDir()
boolean
isSingleValueDescriptor(String key)
void
loggedOut(SessionImpl session)
Removes the given session from the set of open sessions.void
loggingOut(SessionImpl session)
Ignored.Session
login(Credentials credentials, String workspaceName)
Logs in to the content repository.void
shutdown()
Forces all active sessions to logout.-
Methods inherited from class org.apache.jackrabbit.commons.AbstractRepository
isStandardDescriptor, login, login, login, login
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.jackrabbit.api.JackrabbitRepository
login
-
Methods inherited from interface javax.jcr.Repository
isStandardDescriptor, login, login, login
-
-
-
-
Constructor Detail
-
TransientRepository
public TransientRepository(TransientRepository.RepositoryFactory factory, String home)
Creates a transient repository proxy that will use the given repository factory to initialize the underlying repository instances.- Parameters:
factory
- repository factoryhome
- the path to the repository home directory.
-
TransientRepository
public TransientRepository()
Creates a transient repository proxy that will use the repository configuration file and home directory specified in system propertiesorg.apache.jackrabbit.repository.conf
andorg.apache.jackrabbit.repository.home
. If these properties are not found, then the default values "repository.xml
" and "repository
" are used.
-
TransientRepository
public TransientRepository(RepositoryConfig config)
Creates a transient repository proxy that will use a copy of the given repository configuration to initialize the underlying repository instance.- Parameters:
config
- repository configuration
-
TransientRepository
public TransientRepository(String config, String home)
Creates a transient repository proxy that will use the given repository configuration file and home directory paths to initialize the underlying repository instances.- Parameters:
config
- repository configuration filehome
- repository home directory- See Also:
TransientRepository(File, File)
-
TransientRepository
public TransientRepository(File dir)
Creates a transient repository proxy based on the given repository home directory and the repository configuration file "repository.xml" contained in that directory.- Parameters:
dir
- repository home directory- Since:
- Apache Jackrabbit 1.6
-
TransientRepository
public TransientRepository(File xml, File dir)
Creates a transient repository proxy that will use the given repository configuration file and home directory paths to initialize the underlying repository instances. The repository configuration file is reloaded whenever the repository is restarted, so it is safe to modify the configuration when all sessions have been closed.If the given repository configuration file does not exist, then a default configuration file is copied to the given location when the first session starts. Similarly, if the given repository home directory does not exist, it is automatically created when the first session starts. This is a convenience feature designed to reduce the need for manual configuration.
- Parameters:
xml
- repository configuration filedir
- repository home directory- Since:
- Apache Jackrabbit 1.6
-
TransientRepository
public TransientRepository(Properties properties) throws ConfigurationException, IOException
- Throws:
ConfigurationException
IOException
-
-
Method Detail
-
getHomeDir
public String getHomeDir()
- Returns:
- the path to the repository home directory.
-
getDescriptorKeys
public String[] getDescriptorKeys()
Returns the available descriptor keys. If the underlying repository is initialized, then the call is proxied to it, otherwise the static descriptor keys are returned.- Specified by:
getDescriptorKeys
in interfaceRepository
- Returns:
- descriptor keys
-
getDescriptor
public String getDescriptor(String key)
Returns the identified repository descriptor. If the underlying repository is initialized, then the call is proxied to it, otherwise the static descriptors are used.- Specified by:
getDescriptor
in interfaceRepository
- Parameters:
key
- descriptor key- Returns:
- descriptor value
- See Also:
Repository.getDescriptor(String)
-
getDescriptorValue
public Value getDescriptorValue(String key)
- Specified by:
getDescriptorValue
in interfaceRepository
-
getDescriptorValues
public Value[] getDescriptorValues(String key)
- Specified by:
getDescriptorValues
in interfaceRepository
-
isSingleValueDescriptor
public boolean isSingleValueDescriptor(String key)
- Specified by:
isSingleValueDescriptor
in interfaceRepository
-
login
public Session login(Credentials credentials, String workspaceName) throws RepositoryException
Logs in to the content repository. Initializes the underlying repository instance if needed. The opened session is added to the set of open sessions and a session listener is added to track when the session gets closed.- Specified by:
login
in interfaceRepository
- Parameters:
credentials
- login credentialsworkspaceName
- workspace name- Returns:
- new session
- Throws:
RepositoryException
- if the session could not be created- See Also:
Repository.login(Credentials,String)
-
shutdown
public void shutdown()
Forces all active sessions to logout. Once the last session has logged out, the underlying repository instance will automatically be shut down.- Specified by:
shutdown
in interfaceJackrabbitRepository
- See Also:
Session.logout()
-
loggedOut
public void loggedOut(SessionImpl session)
Removes the given session from the set of open sessions. If no open sessions remain, then the underlying repository instance is shut down.- Specified by:
loggedOut
in interfaceSessionListener
- Parameters:
session
- closed session- See Also:
SessionListener.loggedOut(SessionImpl)
-
loggingOut
public void loggingOut(SessionImpl session)
Ignored. Called when aSession
is about to be 'closed' by calling
. At this moment the session is still valid.Session.logout()
- Specified by:
loggingOut
in interfaceSessionListener
- Parameters:
session
- theSession
that is about to be 'closed'
-
-