Class 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 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 containing 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
      • SYNC_DELAY_ATTRIBUTE

        public static final String SYNC_DELAY_ATTRIBUTE
        Name of the syncDelay configuration attribute.
        See Also:
        Constant Field Values
      • STOP_DELAY_ATTRIBUTE

        public static final String STOP_DELAY_ATTRIBUTE
        Name of the stopDelay 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
      • PRIMARY_DATASTORE_ATTRIBUTE

        public static final String PRIMARY_DATASTORE_ATTRIBUTE
        Name of the primary DataStore class attribute.
        See Also:
        Constant Field Values
      • ARCHIVE_DATASTORE_ATTRIBUTE

        public static final String ARCHIVE_DATASTORE_ATTRIBUTE
        Name of the archive DataStore class 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
      • DEFAULT_STOP_DELAY

        public static final String DEFAULT_STOP_DELAY
        Default stop delay, in milliseconds or -1 if the default is derived from the sync delay.
        See Also:
        Constant Field Values
    • 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
      • 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)
      • 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>
         
        Its also possible to configure a multi data store. The configuration uses following format:
           <DataStore class="org.apache.jackrabbit.core.data.MultiDataStore">
             <param name="primary" value="org.apache.jackrabbit.core.data.db.XXDataStore">
                 <param name="..." value="...">
                 ...
             </param>
             <param name="archive" value="org.apache.jackrabbit.core.data.db.XXDataStore">
                 <param name="..." value="...">
                 ...
             </param>
           </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
      • 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
      • setBeanFactory

        public void setBeanFactory​(BeanFactory beanFactory)
      • setConfigVisitor

        public void setConfigVisitor​(BeanConfigVisitor configVisitor)