<?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.xml.XMLPersistenceManager"/>

    </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>
