org.apache.jackrabbit.core
Class TransientRepository

java.lang.Object
  extended byorg.apache.jackrabbit.core.TransientRepository
All Implemented Interfaces:
Repository, SessionListener

public class TransientRepository
extends Object
implements Repository, 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
LEVEL_1_SUPPORTED, LEVEL_2_SUPPORTED, OPTION_LOCKING_SUPPORTED, OPTION_OBSERVATION_SUPPORTED, OPTION_QUERY_SQL_SUPPORTED, OPTION_TRANSACTIONS_SUPPORTED, OPTION_VERSIONING_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
 
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(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)
          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.
 void loggedOut(SessionImpl session)
          Removes the given session from the set of open sessions.
 void loggingOut(SessionImpl session)
          Ignored.
 Session login()
          Calls login(Credentials, String) with null login credentials and a null workspace name.
 Session login(Credentials credentials)
          Calls login(Credentials, String) with a null workspace name.
 Session login(Credentials credentials, String workspaceName)
          Logs in to the content repository.
 Session login(String workspaceName)
          Calls login(Credentials, String) with null login credentials.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TransientRepository

public TransientRepository(TransientRepository.RepositoryFactory factory)
                    throws IOException
Creates a transient repository proxy that will use the given repository factory to initialize the underlying repository instances.

Parameters:
factory - repository factory
Throws:
IOException - if the static repository descriptors cannot be loaded

TransientRepository

public TransientRepository()
                    throws IOException
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.

Throws:
IOException - if the static repository descriptors cannot be loaded

TransientRepository

public TransientRepository(RepositoryConfig config)
                    throws IOException
Creates a transient repository proxy that will use the given repository configuration to initialize the underlying repository instance.

Parameters:
config - repository configuration
Throws:
IOException - if the static repository descriptors cannot be loaded

TransientRepository

public TransientRepository(String config,
                           String home)
                    throws IOException
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:
config - repository configuration file
home - repository home directory
Throws:
IOException - if the static repository descriptors cannot be loaded
Method Detail

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
See Also:
Repository.getDescriptorKeys()

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)

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)

login

public Session login(Credentials credentials)
              throws RepositoryException
Calls login(Credentials, String) with a null workspace name.

Specified by:
login in interface Repository
Parameters:
credentials - login credentials
Returns:
new session
Throws:
RepositoryException - if the session could not be created
See Also:
Repository.login(Credentials)

login

public Session login(String workspaceName)
              throws RepositoryException
Calls login(Credentials, String) with null login credentials.

Specified by:
login in interface Repository
Parameters:
workspaceName - workspace name
Returns:
new session
Throws:
RepositoryException - if the session could not be created
See Also:
Repository.login(String)

login

public Session login()
              throws RepositoryException
Calls login(Credentials, String) with null login credentials and a null workspace name.

Specified by:
login in interface Repository
Returns:
new session
Throws:
RepositoryException - if the session could not be created
See Also:
Repository.login(Credentials)

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-2006 The Apache Software Foundation. All Rights Reserved.