org.apache.jackrabbit.core
Class TransientRepository

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

public class TransientRepository
extends Object
implements Repository, 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
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(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(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.
 Value getDescriptorValue(String key)
          The value of a single-value descriptor is found by passing the key for that descriptor to this method.
 Value[] getDescriptorValues(String key)
          The value array of a multi-value descriptor is found by passing the key for that descriptor to this method.
 boolean isSingleValueDescriptor(String key)
          Returns true if key is a valid single-value descriptor; otherwise returns false.
 boolean isStandardDescriptor(String key)
          Returns true if key is a standard descriptor defined by the string constants in this interface and false if it is either a valid implementation-specific key or not a valid key.
 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.
 void shutdown()
          Forces all active sessions to logout.
 
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)
Creates a transient repository proxy that will use the given repository factory to initialize the underlying repository instances.

Parameters:
factory - repository factory

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 - not thrown, to be removed in Jackrabbit 2.0

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 - not thrown, to be removed in Jackrabbit 2.0

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.

Parameters:
config - repository configuration file
home - repository home directory
Throws:
IOException - not thrown, to be removed in Jackrabbit 2.0
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
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)

getDescriptorValue

public Value getDescriptorValue(String key)
Description copied from interface: Repository
The value of a single-value descriptor is found by passing the key for that descriptor to this method. If key is the key of a multi-value descriptor or not a valid key this method returns null.

Parameters:
key - a descriptor key.
Returns:
The value of the indicated descriptor

getDescriptorValues

public Value[] getDescriptorValues(String key)
Description copied from interface: Repository
The value array of a multi-value descriptor is found by passing the key for that descriptor to this method. If key is the key of a single-value descriptor then this method returns that value as an array of size one. If key is not a valid key this method returns null.

Parameters:
key - a descriptor key.
Returns:
the value array for the indicated descriptor

isSingleValueDescriptor

public boolean isSingleValueDescriptor(String key)
Description copied from interface: Repository
Returns true if key is a valid single-value descriptor; otherwise returns false.

Parameters:
key - a descriptor key.
Returns:
whether the specified desdfriptor is multi-valued.

isStandardDescriptor

public boolean isStandardDescriptor(String key)
Description copied from interface: Repository
Returns true if key is a standard descriptor defined by the string constants in this interface and false if it is either a valid implementation-specific key or not a valid key.

Parameters:
key - a descriptor key.
Returns:
whether key is a standard descriptor.

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