<?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"/>
        <!--
            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"/>
        </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>
