<?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
    >
]>

<Repository>
	<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
		<param name="path" value="${rep.home}/repository"/>
	</FileSystem>

	<Security appName="Jackrabbit">
		<AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager"/>
		<LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule">
			<param name="anonymousId" value="anonymous"/>
		</LoginModule>
	</Security>

	<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>

	<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.xml.XMLPersistenceManager"/>

		<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
			<param name="path" value="${wsp.home}/index"/>
		</SearchIndex>
	</Workspace>

	<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.xml.XMLPersistenceManager"/>
	</Versioning>

	<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
		<param name="path" value="${rep.home}/repository/index"/>
	</SearchIndex>
</Repository>
