org.apache.jackrabbit.core
Class TransientRepository

java.lang.Object
  extended by org.apache.jackrabbit.commons.AbstractRepository
      extended by 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
static interface TransientRepository.RepositoryFactory
          Factory interface for creating RepositoryImpl instances.
 
Field Summary
 
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
TransientRepository()
          Creates a transient repository proxy that will use the repository configuration file and home directory specified in system properties org.apache.jackrabbit.repository.conf and org.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(Properties properties)
           
TransientRepository(RepositoryConfig config)
          Creates a transient repository proxy that will use the given repository configuration to initialize the underlying repository instance.
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(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
 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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
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 factory
home - 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 properties org.apache.jackrabbit.repository.conf and org.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 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 file
home - 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 file
dir - 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 interface Repository
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 interface Repository
Parameters:
key - descriptor key
Returns:
descriptor value
See Also:
Repository.getDescriptor(String)

getDescriptorValue

public Value getDescriptorValue(String key)
Specified by:
getDescriptorValue in interface Repository

getDescriptorValues

public Value[] getDescriptorValues(String key)
Specified by:
getDescriptorValues in interface Repository

isSingleValueDescriptor

public boolean isSingleValueDescriptor(String key)
Specified by:
isSingleValueDescriptor in interface Repository

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 interface Repository
Parameters:
credentials - login credentials
workspaceName - 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 interface JackrabbitRepository
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 interface SessionListener
Parameters:
session - closed session
See Also:
SessionListener.loggedOut(SessionImpl)

loggingOut

public void loggingOut(SessionImpl session)
Ignored. Called when a Session is about to be 'closed' by calling Session.logout()
Specified by:
loggingOut in interface SessionListener
Parameters:
session - the Session that is about to be 'closed'


Copyright © 2004-2010 The Apache Software Foundation. All Rights Reserved.