org.apache.jackrabbit.core.config
Class RepositoryConfigurationParser

java.lang.Object
  extended by org.apache.jackrabbit.core.config.ConfigurationParser
      extended by org.apache.jackrabbit.core.config.RepositoryConfigurationParser

public class RepositoryConfigurationParser
extends ConfigurationParser

Configuration parser. This class is used to parse the repository and workspace configuration files.

The following code sample outlines the usage of this class:

     Properties variables = ...; // parser variables
     RepositoryConfigurationParser parser =
         new RepositoryConfigurationParser(variables);
     RepositoryConfig rc = parser.parseRepositoryConfig(...);
     WorkspaceConfig wc = parser.parseWorkspaceConfig(...);
 

Note that the configuration objects returned by this parser are not initialized. The caller needs to initialize the configuration objects before using them.


Field Summary
static String ACCESS_MANAGER_ELEMENT
          Name of the access manager configuration element.
static String APP_NAME_ATTRIBUTE
          Name of the application name configuration attribute.
static String CLUSTER_ELEMENT
          Name of the cluster configuration element.
static String CLUSTERED_ATTRIBUTE
          Name of the clustered configuration attribute.
static String CONFIG_ROOT_PATH_ATTRIBUTE
          Name of the config root path configuration attribute.
protected  ConnectionFactory connectionFactory
          The repositories ConnectionFactory.
static String DATA_STORE_ELEMENT
          Name of the data store configuration element.
static String DATASOURCE_ELEMENT
          Name of the data source configuration element.
static String DATASOURCES_ELEMENT
          Name of the data source configuration element.
static String DEFAULT_QUERY_HANDLER
          Name of the default search index implementation class.
static String DEFAULT_SYNC_DELAY
          Default synchronization delay, in milliseconds.
static String DEFAULT_WORKSPACE_ATTRIBUTE
          Name of the default workspace configuration attribute.
static String FILE_SYSTEM_ELEMENT
          Name of the file system configuration element.
static String ID_ATTRIBUTE
          Name of the id configuration attribute.
static String ISM_LOCKING_ELEMENT
          Name of the ism locking configuration element.
static String JOURNAL_ELEMENT
          Name of the journal configuration element.
static String LOGIN_MODULE_ELEMENT
          Name of the login module configuration element.
static String MAX_IDLE_TIME_ATTRIBUTE
          Name of the maximum idle time configuration attribute.
static String PERSISTENCE_MANAGER_ELEMENT
          Name of the persistence manager configuration element.
static String REPOSITORY_CONF_VARIABLE
          Name of the repository configuration file parser variable.
static String REPOSITORY_HOME_VARIABLE
          Name of the repository home directory parser variable.
static String REPOSITORY_LOCK_MECHANISM_ELEMENT
          Name of the repository lock mechanism configuration element.
static String ROOT_PATH_ATTRIBUTE
          Name of the root path configuration attribute.
static String SEARCH_INDEX_ELEMENT
          Name of the search index configuration element.
static String SECURITY_ELEMENT
          Name of the security configuration element.
static String SECURITY_MANAGER_ELEMENT
          Name of the security manager configuration element.
static String SYNC_DELAY_ATTRIBUTE
          Name of the syncDelay configuration attribute.
static String VERSIONING_ELEMENT
          Name of the versioning configuration element.
static String WORKSPACE_ELEMENT
          Name of the workspace configuration element.
static String WORKSPACE_HOME_VARIABLE
          Name of the workspace home directory parser variable.
static String WORKSPACE_NAME_VARIABLE
          Name of the repository name parser variable.
static String WORKSPACES_ELEMENT
          Name of the general workspace configuration element.
static String WSP_NAME_ATTRIBUTE
          Name of the workspace conaining security data.
 
Fields inherited from class org.apache.jackrabbit.core.config.ConfigurationParser
CLASS_ATTRIBUTE, NAME_ATTRIBUTE, PARAM_ELEMENT, VALUE_ATTRIBUTE
 
Constructor Summary
  RepositoryConfigurationParser(Properties variables)
          Creates a new configuration parser with the given parser variables.
protected RepositoryConfigurationParser(Properties variables, ConnectionFactory connectionFactory)
          Creates a new configuration parser with the given parser variables and connection factory.
 
Method Summary
protected  RepositoryConfigurationParser createSubParser(Properties variables)
          Creates a new instance of a configuration parser but with overlayed variables and the same connection factory as this parser.
protected  DataStoreFactory getDataStoreFactory(Element parent, String directory)
          Parses data store configuration.
protected  FileSystemFactory getFileSystemFactory(Element parent, String name)
          Creates and returns a factory object that creates FileSystem instances based on the bean configuration at the named element.
protected  ISMLockingFactory getISMLockingFactory(Element parent)
          Returns an ISM locking factory that creates ISMLocking instances based on the given configuration.
protected  JournalFactory getJournalFactory(Element cluster, File home, String id)
          Parses journal configuration.
protected  QueryHandlerFactory getQueryHandlerFactory(Element parent)
          Parses search index configuration.
protected  RepositoryLockMechanismFactory getRepositoryLockMechanismFactory(Element root)
          Parses repository lock mechanism configuration.
 AccessManagerConfig parseAccessManagerConfig(Element security)
          Parses the access manager configuration.
protected  BeanConfig parseBeanConfig(Element element)
          Parses a named bean configuration from the given element.
protected  BeanConfig parseBeanConfig(Element parent, String name)
          Parses a named bean configuration from the given element.
protected  ClusterConfig parseClusterConfig(Element parent, File home)
          Parses cluster configuration.
protected  DataSourceConfig parseDataSourceConfig(Element parent)
          Parses the DataSources configuration under the given parent.
 ImportConfig parseImportConfig(Element parent)
          Read the optional Import Element of Workspace's configuration.
 LoginModuleConfig parseLoginModuleConfig(Element security)
          Parses the login module configuration.
protected  PersistenceManagerConfig parsePersistenceManagerConfig(Element parent)
          Parses the PersistenceManager config.
 RepositoryConfig parseRepositoryConfig(InputSource xml)
          Parses repository configuration.
 SecurityConfig parseSecurityConfig(Element security)
          Parses security configuration.
 SecurityManagerConfig parseSecurityManagerConfig(Element security)
          Parses the security manager configuration.
protected  VersioningConfig parseVersioningConfig(Element parent)
          Parses versioning configuration.
protected  WorkspaceConfig parseWorkspaceConfig(Element root)
          Parse workspace config.
 WorkspaceConfig parseWorkspaceConfig(InputSource xml)
          Parses workspace configuration.
 WorkspaceSecurityConfig parseWorkspaceSecurityConfig(Element parent)
          Read the optional WorkspaceSecurity Element of Workspace's configuration.
 
Methods inherited from class org.apache.jackrabbit.core.config.ConfigurationParser
getAttribute, getAttribute, getElement, getElement, getEntityResolver, getErrorHandler, getVariables, parseParameters, parseXML, parseXML, postParseModificationHook, replaceVariables
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

REPOSITORY_HOME_VARIABLE

public static final String REPOSITORY_HOME_VARIABLE
Name of the repository home directory parser variable.

See Also:
Constant Field Values

REPOSITORY_CONF_VARIABLE

public static final String REPOSITORY_CONF_VARIABLE
Name of the repository configuration file parser variable.

See Also:
Constant Field Values

WORKSPACE_HOME_VARIABLE

public static final String WORKSPACE_HOME_VARIABLE
Name of the workspace home directory parser variable.

See Also:
Constant Field Values

WORKSPACE_NAME_VARIABLE

public static final String WORKSPACE_NAME_VARIABLE
Name of the repository name parser variable.

See Also:
Constant Field Values

SECURITY_ELEMENT

public static final String SECURITY_ELEMENT
Name of the security configuration element.

See Also:
Constant Field Values

SECURITY_MANAGER_ELEMENT

public static final String SECURITY_MANAGER_ELEMENT
Name of the security manager configuration element.

See Also:
Constant Field Values

ACCESS_MANAGER_ELEMENT

public static final String ACCESS_MANAGER_ELEMENT
Name of the access manager configuration element.

See Also:
Constant Field Values

LOGIN_MODULE_ELEMENT

public static final String LOGIN_MODULE_ELEMENT
Name of the login module configuration element.

See Also:
Constant Field Values

WORKSPACES_ELEMENT

public static final String WORKSPACES_ELEMENT
Name of the general workspace configuration element.

See Also:
Constant Field Values

WORKSPACE_ELEMENT

public static final String WORKSPACE_ELEMENT
Name of the workspace configuration element.

See Also:
Constant Field Values

VERSIONING_ELEMENT

public static final String VERSIONING_ELEMENT
Name of the versioning configuration element.

See Also:
Constant Field Values

FILE_SYSTEM_ELEMENT

public static final String FILE_SYSTEM_ELEMENT
Name of the file system configuration element.

See Also:
Constant Field Values

CLUSTER_ELEMENT

public static final String CLUSTER_ELEMENT
Name of the cluster configuration element.

See Also:
Constant Field Values

DATASOURCES_ELEMENT

public static final String DATASOURCES_ELEMENT
Name of the data source configuration element.

See Also:
Constant Field Values

DATASOURCE_ELEMENT

public static final String DATASOURCE_ELEMENT
Name of the data source configuration element.

See Also:
Constant Field Values

JOURNAL_ELEMENT

public static final String JOURNAL_ELEMENT
Name of the journal configuration element.

See Also:
Constant Field Values

DATA_STORE_ELEMENT

public static final String DATA_STORE_ELEMENT
Name of the data store configuration element.

See Also:
Constant Field Values

REPOSITORY_LOCK_MECHANISM_ELEMENT

public static final String REPOSITORY_LOCK_MECHANISM_ELEMENT
Name of the repository lock mechanism configuration element.

See Also:
Constant Field Values

PERSISTENCE_MANAGER_ELEMENT

public static final String PERSISTENCE_MANAGER_ELEMENT
Name of the persistence manager configuration element.

See Also:
Constant Field Values

SEARCH_INDEX_ELEMENT

public static final String SEARCH_INDEX_ELEMENT
Name of the search index configuration element.

See Also:
Constant Field Values

ISM_LOCKING_ELEMENT

public static final String ISM_LOCKING_ELEMENT
Name of the ism locking configuration element.

See Also:
Constant Field Values

APP_NAME_ATTRIBUTE

public static final String APP_NAME_ATTRIBUTE
Name of the application name configuration attribute.

See Also:
Constant Field Values

WSP_NAME_ATTRIBUTE

public static final String WSP_NAME_ATTRIBUTE
Name of the workspace conaining security data.

See Also:
Constant Field Values

ROOT_PATH_ATTRIBUTE

public static final String ROOT_PATH_ATTRIBUTE
Name of the root path configuration attribute.

See Also:
Constant Field Values

CONFIG_ROOT_PATH_ATTRIBUTE

public static final String CONFIG_ROOT_PATH_ATTRIBUTE
Name of the config root path configuration attribute.

See Also:
Constant Field Values

MAX_IDLE_TIME_ATTRIBUTE

public static final String MAX_IDLE_TIME_ATTRIBUTE
Name of the maximum idle time configuration attribute.

See Also:
Constant Field Values

DEFAULT_WORKSPACE_ATTRIBUTE

public static final String DEFAULT_WORKSPACE_ATTRIBUTE
Name of the default workspace configuration attribute.

See Also:
Constant Field Values

ID_ATTRIBUTE

public static final String ID_ATTRIBUTE
Name of the id configuration attribute.

See Also:
Constant Field Values

SYNC_DELAY_ATTRIBUTE

public static final String SYNC_DELAY_ATTRIBUTE
Name of the syncDelay configuration attribute.

See Also:
Constant Field Values

DEFAULT_QUERY_HANDLER

public static final String DEFAULT_QUERY_HANDLER
Name of the default search index implementation class.

See Also:
Constant Field Values

CLUSTERED_ATTRIBUTE

public static final String CLUSTERED_ATTRIBUTE
Name of the clustered configuration attribute.

See Also:
Constant Field Values

DEFAULT_SYNC_DELAY

public static final String DEFAULT_SYNC_DELAY
Default synchronization delay, in milliseconds.

See Also:
Constant Field Values

connectionFactory

protected final ConnectionFactory connectionFactory
The repositories ConnectionFactory.

Constructor Detail

RepositoryConfigurationParser

protected RepositoryConfigurationParser(Properties variables,
                                        ConnectionFactory connectionFactory)
Creates a new configuration parser with the given parser variables and connection factory.

Parameters:
variables - parser variables
connectionFactory - connection factory

RepositoryConfigurationParser

public RepositoryConfigurationParser(Properties variables)
Creates a new configuration parser with the given parser variables.

Parameters:
variables - parser variables
Method Detail

parseRepositoryConfig

public RepositoryConfig parseRepositoryConfig(InputSource xml)
                                       throws ConfigurationException
Parses repository configuration. Repository configuration uses the following format:
   <Repository>
     <FileSystem ...>
     <Security appName="...">
       <SecurityManager ...>
       <AccessManager ...>
       <LoginModule ... (optional)>
     </Security>
     <Workspaces rootPath="..." defaultWorkspace="..."/>
     <Workspace ...>
     <Versioning ...>
   </Repository>
 

The FileSystem element is a bean configuration element, that specifies the file system implementation for storing global repository information. The Security element contains an AccessManager bean configuration element and the JAAS name of the repository application. The Workspaces element contains general workspace parameters, and the Workspace element is a template for the individual workspace configuration files. The Versioning element contains versioning configuration for the repository.

In addition to the configured information, the returned repository configuration object also contains the repository home directory path that is given as the ${rep.home} parser variable. Note that the variable must be available for the configuration document to be correctly parsed.

Variable replacement is performed on the security application name attribute, the general workspace configuration attributes, and on the file system, access manager, and versioning configuration information.

Note that the returned repository configuration object has not been initialized.

Parameters:
xml - repository configuration document
Returns:
repository configuration
Throws:
ConfigurationException - if the configuration is broken
See Also:
parseBeanConfig(Element, String), parseVersioningConfig(Element)

parseBeanConfig

protected BeanConfig parseBeanConfig(Element parent,
                                     String name)
                              throws ConfigurationException
Parses a named bean configuration from the given element. Bean configuration uses the following format:
   <BeanName class="...">
     <param name="..." value="..."/>
     ...
   </BeanName>
 

The returned bean configuration object contains the configured class name and configuration parameters. Variable replacement is performed on the parameter values.

Overrides:
parseBeanConfig in class ConfigurationParser
Parameters:
parent - parent element
name - name of the bean configuration element
Returns:
bean configuration,
Throws:
ConfigurationException - if the configuration element does not exist or is broken

parseBeanConfig

protected BeanConfig parseBeanConfig(Element element)
                              throws ConfigurationException
Parses a named bean configuration from the given element. Bean configuration uses the following format:
   <BeanName class="...">
     <param name="..." value="..."/>
     ...
   </BeanName>
 

The returned bean configuration object contains the configured class name and configuration parameters. Variable replacement is performed on the parameter values.

Overrides:
parseBeanConfig in class ConfigurationParser
Returns:
bean configuration,
Throws:
ConfigurationException - if the configuration element does not exist or is broken

parseSecurityConfig

public SecurityConfig parseSecurityConfig(Element security)
                                   throws ConfigurationException
Parses security configuration. Security configuration uses the following format:
   <Security appName="...">
     <SecurityManager ...>
     <AccessManager ...>
     <LoginModule ... (optional)>
   </Security>
 

The SecurityManager, the AccessManager and LoginModule are all bean configuration elements.

The login module is an optional feature of repository configuration.

Parameters:
security - the <security> element.
Returns:
the security configuration.
Throws:
ConfigurationException - if the configuration is broken

parseSecurityManagerConfig

public SecurityManagerConfig parseSecurityManagerConfig(Element security)
                                                 throws ConfigurationException
Parses the security manager configuration.

Parameters:
security - the <security> element.
Returns:
the security manager configuration or null.
Throws:
ConfigurationException - if the configuration is broken

parseAccessManagerConfig

public AccessManagerConfig parseAccessManagerConfig(Element security)
                                             throws ConfigurationException
Parses the access manager configuration.

Parameters:
security - the <security> element.
Returns:
the access manager configuration or null.
Throws:
ConfigurationException - if the configuration is broken

parseLoginModuleConfig

public LoginModuleConfig parseLoginModuleConfig(Element security)
                                         throws ConfigurationException
Parses the login module configuration.

Parameters:
security - the <security> element.
Returns:
the login module configuration or null.
Throws:
ConfigurationException - if the configuration is broken

parseWorkspaceConfig

public WorkspaceConfig parseWorkspaceConfig(InputSource xml)
                                     throws ConfigurationException
Parses workspace configuration. Workspace configuration uses the following format:
   <Workspace name="...">
     <FileSystem ...>
     <PersistenceManager ...>
     <SearchIndex ...>
     <ISMLocking ...>
     <WorkspaceSecurity ...>
     <ISMLocking ...>
   </Workspace>
 

All the child elements (FileSystem, PersistenceManager, and SearchIndex) are bean configuration elements. In addition to bean configuration, the search element also contains configuration for the search file system.

In addition to the configured information, the returned workspace configuration object also contains the workspace home directory path that is given as the ${wsp.home} parser variable. Note that the variable must be available for the configuration document to be correctly parsed.

Variable replacement is performed on the optional workspace name attribute. If the name is not given, then the name of the workspace home directory is used as the workspace name. Once the name has been determined, it will be added as the ${wsp.name} variable in a temporary configuration parser that is used to parse the contained configuration elements.

The search index configuration element is optional. If it is not given, then the workspace will not have search capabilities.

The ism locking configuration element is optional. If it is not given, then a default implementation is used.

Note that the returned workspace configuration object has not been initialized.

Parameters:
xml - workspace configuration document
Returns:
workspace configuration
Throws:
ConfigurationException - if the configuration is broken
See Also:
parseBeanConfig(Element, String), parseWorkspaceSecurityConfig(Element)

parseWorkspaceConfig

protected WorkspaceConfig parseWorkspaceConfig(Element root)
                                        throws ConfigurationException
Parse workspace config.

Parameters:
root - root element of the workspace configuration
Throws:
ConfigurationException
See Also:
parseWorkspaceConfig(InputSource)

getQueryHandlerFactory

protected QueryHandlerFactory getQueryHandlerFactory(Element parent)
Parses search index configuration. Search index configuration uses the following format:
   <SearchIndex class="...">
     <param name="..." value="...">
     ...
     <FileSystem ...>
   </Search>
 

Both the SearchIndex and FileSystem elements are bean configuration elements. If the search implementation class is not given, then a default implementation is used.

The search index is an optional feature of workspace configuration. If the search configuration element is not found, then this method returns null.

The FileSystem element in a search index configuration is optional. However some implementations may require a FileSystem.

Parameters:
parent - parent of the SearchIndex element
Returns:
query handler factory

parseWorkspaceSecurityConfig

public WorkspaceSecurityConfig parseWorkspaceSecurityConfig(Element parent)
                                                     throws ConfigurationException
Read the optional WorkspaceSecurity Element of Workspace's configuration. It uses the following format:
   <WorkspaceSecurity>
     <AccessControlProvider class="..." (optional)>
   </WorkspaceSecurity>
 

Parameters:
parent - Workspace-Root-Element
Returns:
a new WorkspaceSecurityConfig or null if none is configured.
Throws:
ConfigurationException

parseImportConfig

public ImportConfig parseImportConfig(Element parent)
                               throws ConfigurationException
Read the optional Import Element of Workspace's configuration. It uses the following format:
   <Import>
     <ProtectedNodeImporter class="..." (optional)>
     <ProtectedNodeImporter class="..." (optional)>
     ...
     <ProtectedPropertyImporter class="..." (optional)>
   </Import>
 

Parameters:
parent - Workspace-Root-Element
Returns:
a new ImportConfig or null if none is configured.
Throws:
ConfigurationException

getISMLockingFactory

protected ISMLockingFactory getISMLockingFactory(Element parent)
Returns an ISM locking factory that creates ISMLocking instances based on the given configuration. ISM locking configuration uses the following format:
   <ISMLocking class="...">
     <param name="..." value="...">
     ...
   </ISMLocking>
 

The ISMLocking is a bean configuration element.

ISM locking is an optional part of the workspace configuration. If the ISM locking element is not found, then the returned factory will create instances of the DefaultISMLocking class.

Parameters:
parent - parent of the ISMLocking element
Returns:
ISM locking factory

parseVersioningConfig

protected VersioningConfig parseVersioningConfig(Element parent)
                                          throws ConfigurationException
Parses versioning configuration. Versioning configuration uses the following format:
   <Versioning rootPath="...">
     <FileSystem ...>
     <PersistenceManager ...>
   </Versioning>
 

Both the FileSystem and PersistenceManager elements are bean configuration elements. In addition to the bean parameter values, variable replacement is performed also on the versioning root path attribute.

Parameters:
parent - parent of the Versioning element
Returns:
versioning configuration
Throws:
ConfigurationException - if the configuration is broken

parseClusterConfig

protected ClusterConfig parseClusterConfig(Element parent,
                                           File home)
                                    throws ConfigurationException
Parses cluster configuration. Cluster configuration uses the following format:
   <Cluster>
     <Journal ...>
   </Journal>
 

Cluster is a bean configuration element.

Clustering is an optional feature. If the cluster element is not found, then this method returns null.

Parameters:
parent - parent of the Journal element
home - repository home directory
Returns:
cluster configuration, or null
Throws:
ConfigurationException - if the configuration is broken

getJournalFactory

protected JournalFactory getJournalFactory(Element cluster,
                                           File home,
                                           String id)
                                    throws ConfigurationException
Parses journal configuration. Journal configuration uses the following format:
   <Journal class="...">
     <param name="..." value="...">
     ...
   </Journal>
 

Journal is a bean configuration element.

Parameters:
cluster - parent cluster element
home - repository home directory
id - cluster node id
Returns:
journal factory
Throws:
ConfigurationException - if the configuration is broken

parseDataSourceConfig

protected DataSourceConfig parseDataSourceConfig(Element parent)
                                          throws ConfigurationException
Parses the DataSources configuration under the given parent. It has the following format:
   <DataSources>
     <DataSource name="...">
       <param name="..." value="...">
       ...
     </DataSource>
     <DataSource name="...">
       <param name="..." value="...">
       ...
     </DataSource>
   </DataSources>
 

Parameters:
parent - the parent of the DataSources element
Returns:
a DataSourceConfig for the repository
Throws:
ConfigurationException - on error

getDataStoreFactory

protected DataStoreFactory getDataStoreFactory(Element parent,
                                               String directory)
                                        throws ConfigurationException
Parses data store configuration. Data store configuration uses the following format:
   <DataStore class="...">
     <param name="..." value="...">
     ...
   </DataStore>
 

DataStore is a bean configuration element.

Parameters:
parent - configuration element
directory - the repository directory
Returns:
data store factory
Throws:
ConfigurationException - if the configuration is broken

getRepositoryLockMechanismFactory

protected RepositoryLockMechanismFactory getRepositoryLockMechanismFactory(Element root)
Parses repository lock mechanism configuration. Repository lock mechanism configuration uses the following format:
   <RepositoryLockMechanism class="..." >
     <param name="..." value="...">
     ...
   </RepositoryLockMechanism>
 

RepositoryLockMechanism is a bean configuration element.

Parameters:
root - the root configuration element
Returns:
repository lock mechanism factory
Throws:
ConfigurationException - if the configuration is broken

parsePersistenceManagerConfig

protected PersistenceManagerConfig parsePersistenceManagerConfig(Element parent)
                                                          throws ConfigurationException
Parses the PersistenceManager config.

Parameters:
parent - parent of the PersistenceManager element
Returns:
persistence manager configuration
Throws:
ConfigurationException - if the configuration is broken

createSubParser

protected RepositoryConfigurationParser createSubParser(Properties variables)
Creates a new instance of a configuration parser but with overlayed variables and the same connection factory as this parser.

Parameters:
variables - the variables overlay
Returns:
a new configuration parser instance

getFileSystemFactory

protected FileSystemFactory getFileSystemFactory(Element parent,
                                                 String name)
                                          throws ConfigurationException
Creates and returns a factory object that creates FileSystem instances based on the bean configuration at the named element.

Parameters:
parent - parent element
name - name of the bean configuration element
Returns:
file system factory
Throws:
ConfigurationException - if the bean configuration is invalid


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