<?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)>

    <!--
        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="repository2"/>
    <!--
        workspace configuration template:
        used to create the initial workspace if there's no workspace yet
    -->
	<Workspace name="${wsp.name}">
	    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
	        <param name="path" value="${wsp.home}"/>
	    </FileSystem>
	    <PersistenceManager class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
	        <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
	        <param name="schemaObjectPrefix" value="${wsp.name}_"/>
	    </PersistenceManager>
	    <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
	        <param name="path" value="${wsp.home}/index"/>
	        <param name="useCompoundFile" value="true"/>
	        <param name="minMergeDocs" value="100"/>
	        <param name="volatileIdleTime" value="3"/>
	        <param name="maxMergeDocs" value="100000"/>
	        <param name="mergeFactor" value="10"/>
	        <param name="bufferSize" value="10"/>
	        <param name="cacheSize" value="1000"/>
	        <param name="forceConsistencyCheck" value="false"/>
	        <param name="autoRepair" value="true"/>
	        <param name="analyzer" value="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
   
   			<!-- Add to support search term highlighting -->
   			<!-- 
   			<param name="supportHighlighting" value="true"/>
   			<param name="excerptProviderClass" value="org.apache.jackrabbit.core.query.lucene.DefaultXMLExcerpt" />
   			 -->	        
	    </SearchIndex>
	</Workspace>    

    <!--
        Configures the versioning
    -->
	<Versioning rootPath="${rep.home}/version">
	    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
	        <param name="path" value="${rep.home}/version"/>
	    </FileSystem>
	    <PersistenceManager class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
	        <param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/>
	        <param name="schemaObjectPrefix" value="version_"/>
	    </PersistenceManager>
	</Versioning>    
</Repository>
