<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Repository [
    <!--
        the Repository element configures a repository instance;
        individual workspaces of the repository are configured through
        separate configuration files called workspace.xml which are
        located in a subfolder of the workspaces root directory
        (see Workspaces element).

        it consists of

            a FileSystem element (the virtual file system
            used by the repository to persist global state such as
            registered namespaces, custom node types, etc..

            a Security element that specifies the name of the app-entry
            in the JAAS config and the access manager

            a Workspaces element that specifies to the location of
            workspaces root directory and the name of default workspace

            a Workspace element that is used as a workspace configuration
            template; it is used to create the initial workspace if there's
            no workspace yet and for creating additional workspaces through
            the api

            a SearchIndex element that is used for configuring per workspace
            Indexing-related settings

            a Versioning element that is used for configuring
            versioning-related settings
    -->
    <!ELEMENT Repository (FileSystem,Security,Workspaces,Workspace,Versioning,SearchIndex?)>

    <!--
        a virtual file system
    -->
    <!ELEMENT FileSystem (param*)>
    <!ATTLIST FileSystem
      class CDATA #REQUIRED>

    <!--
        the Security element specifies the name (appName attribute)
        of the JAAS configuration app-entry for this repository. 

        it also specifies the access manager to be used (AccessManager element).
    -->
    <!ELEMENT Security (AccessManager, LoginModule?)>
    <!ATTLIST Security
      appName CDATA #REQUIRED>

    <!--
        the AccessManager element configures the access manager to be used by
        this repository instance; the class attribute specifies the FQN of the
        class implementing the AccessManager interface
    -->
    <!ELEMENT AccessManager (param*)>
    <!ATTLIST AccessManager
      class CDATA #REQUIRED>

    <!--
        generic parameter (name/value pair)
    -->
    <!ELEMENT param EMPTY>
    <!ATTLIST param
      name CDATA #REQUIRED
      value CDATA #REQUIRED>

     <!--
        the LoginModule element optionally specifies a JAAS login module to
        authenticate users. This feature allows the use of Jackrabbit in a
        non-JAAS environment.
    -->
    <!ELEMENT LoginModule (param*)>
    <!ATTLIST LoginModule
      class CDATA #REQUIRED>

   <!--
        the Workspaces element specifies the workspaces root directory
        (rootPath attribute) and the name of the default workspace
        (defaultWorkspace attribute).

        individual workspaces are configured through individual workspace.xml
        files located in a subfolder each of the workspaces root directory.
    -->
    <!ELEMENT Workspaces EMPTY>
    <!ATTLIST Workspaces
      rootPath CDATA #REQUIRED
      defaultWorkspace CDATA #REQUIRED>

    <!--
        the Workspace element serves as a workspace configuration template;
        it is used to create the initial workspace if there's no workspace yet
        and for creating additional workspaces through the api
    -->
    <!ELEMENT Workspace (FileSystem,PersistenceManager,SearchIndex?)>
    <!ATTLIST Workspace
      name CDATA #REQUIRED>

    <!--
        the PersistenceManager element configures the persistence manager
        to be used for the workspace; the class attribute specifies the
        FQN of the class implementing the PersistenceManager interface
    -->
    <!ELEMENT PersistenceManager (param*)>
    <!ATTLIST PersistenceManager
      class CDATA #REQUIRED>

    <!--
        the SearchIndex element specifies the locaction of the search index
        (used by the QueryHandler); the class attribute specifies the
        FQN of the class implementing the QueryHandler interface.
    -->
    <!ELEMENT SearchIndex (param*,FileSystem?)>
    <!ATTLIST SearchIndex
      class CDATA #REQUIRED>

    <!--
        the Versioning element configures the persistence manager
        to be used for persisting version state
    -->
    <!ELEMENT Versioning (FileSystem, PersistenceManager)>
    <!ATTLIST Versioning
      rootPath CDATA #REQUIRED
    >
]>
<!-- Example Repository Configuration File -->
<Repository>
    <!--
        virtual file system where the repository stores global state
        (e.g. registered namespaces, custom node types, etc.)
    -->
    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
        <param name="path" value="${rep.home}/repository"/>
    </FileSystem>

    <!--
        security configuration
    -->
    <Security appName="Jackrabbit">
        <!--
            access manager:
            class: FQN of class implementing the AccessManager interface
        -->
        <AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager">
            <!-- <param name="config" value="${rep.home}/access.xml"/> -->
        </AccessManager>

        <LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule">
           <!-- anonymous user name ('anonymous' is the default value) -->
           <param name="anonymousId" value="anonymous"/>
        </LoginModule>
    </Security>

    <!--
        location of workspaces root directory and name of default workspace
    -->
    <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
    <!--
        workspace configuration template:
        used to create the initial workspace if there's no workspace yet
    -->
    <Workspace name="${wsp.name}">
        <!--
            virtual file system of the workspace:
            class: FQN of class implementing the FileSystem interface
        -->
        <FileSystem class="com.day.jackrabbit.fs.cq.CQFileSystem">
            <param name="path" value="${wsp.home}/wspStore.dat"/>
            <param name="autoRepair" value="false"/>
            <param name="blockSize" value="128"/>
            <param name="autoSync" value="false"/>
        </FileSystem>
        <!--
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${wsp.home}"/>
        </FileSystem>
        -->
        <!--
            persistence manager of the workspace:
            class: FQN of class implementing the PersistenceManager interface
        -->
        <!--
        <PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager"/>
        -->
        <!--
        <PersistenceManager class="org.apache.jackrabbit.core.state.mem.InMemPersistenceManager">
            <param name="initialCapacity" value="100000"/>
            <param name="loadFactor" value="0.3"/>
            <param name="persistent" value="true"/>
        </PersistenceManager>
        -->
        <!-- <PersistenceManager class="org.apache.jackrabbit.core.state.obj.ObjectPersistenceManager"/> -->
        <PersistenceManager class="org.apache.jackrabbit.core.state.orm.ojb.OJBPersistenceManager" />
        <!--PersistenceManager class="org.apache.jackrabbit.core.state.orm.hibernate.HibernatePersistenceManager" /-->

        <!--
            Search index and the file system it uses.
            class: FQN of class implementing the QueryHandler interface
        -->
        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
            <param name="path" value="${wsp.home}/index"/>
            <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
                <param name="path" value="${wsp.home}/index"/>
            </FileSystem>
        </SearchIndex>
    </Workspace>

    <!--
        Configures the versioning
    -->
    <Versioning rootPath="${rep.home}/version">
        <!--
            Configures the filesystem to use for versioning for the respective
            persistence manager
        -->
        <FileSystem class="com.day.jackrabbit.fs.cq.CQFileSystem">
            <param name="path" value="${rep.home}/version/version.dat"/>
            <param name="autoRepair" value="false"/>
            <param name="blockSize" value="128"/>
            <param name="autoSync" value="false"/>
        </FileSystem>
    
        <!--
            <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
                <param name="path" value="${rep.home}/version"/>
            </FileSystem>
        -->
        
        <!--
            Configures the perisistence manager to be used for persisting version state.
            Please note that the current versioning implementation is based on
            a 'normal' persistence manager, but this could change in future
            implementations.
        -->
        <PersistenceManager class="org.apache.jackrabbit.core.state.obj.ObjectPersistenceManager"/>

    </Versioning>

    <!--
        Search index for content that is shared repository wide
        (/jcr:system tree, contains mainly versions)
        
        The same parameters are supported as in the search index configuration
        inside the workspace definition element.
        
        This element is optional. If omitted, the /jcr:system tree will not be
        indexed and no results will be returned for that tree!
    -->
    <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
        <param name="path" value="${rep.home}/repository/index"/>
    </SearchIndex>
</Repository>
