You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by un...@apache.org on 2005/11/25 15:43:33 UTC

svn commit: r348959 [1/2] - in /incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc: ./ arch/ doc/ doc/arch/ doc/arch/deploy/ doc/arch/operate/ doc/arch/overview/ images/arch/

Author: uncled
Date: Fri Nov 25 06:43:06 2005
New Revision: 348959

URL: http://svn.apache.org/viewcvs?rev=348959&view=rev
Log:
initial documentation re-org and brush-up

Added:
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/about.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-client.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model1.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model2.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model3.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/index.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/index.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/query.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/startup.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview/
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview/jcrlevels.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/download.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/firststeps.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/index.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/images/arch/thumb_ism.jpg   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/images/arch/thumb_jcr.jpg   (with props)
Removed:
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/arch/
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/firststeps.xml
Modified:
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/navigation.xml

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/about.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/about.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/about.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/about.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>Overview</title>
+ </properties>
+ <body>
+
+<section name="Apache Jackrabbit">
+<p>
+<a href="http://www.apachecon.com/2005/US/index.html"
+   class="externalLink" title="External Link"><img
+   src="http://www.apache.org/images/ac2005us_white_184x80.jpg"
+   width="184" height="80" border="0" title="ApacheCon US 2005"
+   align="right" valign="top" alt="ApacheCon 2005 US"></img></a>
+The Apache Jackrabbit Project has been formed to develop an open source
+implementation of the Content Repository for Java Technology API (JCR),
+as specified within the Java Community Process as
+<a href="http://www.jcp.org/en/jsr/detail?id=170">JSR 170</a> and
+<a href="http://www.jcp.org/en/jsr/detail?id=170">JSR 283</a>.
+<a href="http://www.day.com/">Day Software</a>, the JCR specification lead,
+has licensed an initial implementation of the JCR reference implementation for
+use as seed code for this project.  JCR specifies an API for application
+developers (and application frameworks) to use for interaction with modern
+content repositories that provide content services such as searching,
+versioning, transactions, etc.
+</p>
+<p>
+Jackrabbit's implementation began as a proposal within the
+<a href="http://jakarta.apache.org/slide/index.html">Jakarta Slide</a>project,
+but has since attracted interest from multiple projects with the
+<a href="http://www.apache.org/">Apache Software Foundation</a>, including
+Slide, Cocoon, Lenya, XML Indexing, Axion, and Derby.  We are also looking at
+integration with projects such as Beehive, Maven, and Portals.
+</p>
+<p>
+The purpose of this incubation period is to attract additional contributors
+from other Apache projects and from the various expert group companies,
+learn the Apache way of doing things, and allow the developers to focus on this
+interface/implementation rather than all of the existing projects that might
+want to use it.  We hope to improve collaboration on the code base by moving
+all of the active developers and authors to Apache, bring in as many of the
+Apache veterans as wish to get involved, and open it up to all of the 22 expert
+group companies.  Development of the JCR RI and TCK will occur in this project
+-- Day Software plans to continue participation in Jackrabbit and use the code
+in the official (binary) RI and TCK releases, allowing developers to beta test
+against the open source versions as well as the official versions.
+</p>
+</section>
+<section name="Releases">
+<p>
+See the <a href="downloads.html">downloads</a> page for information on
+obtaining releases.
+</p>
+</section>
+
+<section name="Documentation">
+<p>
+The <a href="apidocs/index.html">JavaDoc API documents</a> are available online.
+</p>
+</section>
+
+</body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/about.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,146 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>Jackrabbit Deployment Models</title>
+ </properties>
+ <body>
+
+<section name="Jackrabbit Example Deployment Models">
+<p>
+JSR-170 explicitly allows for numerous different deployment models, meaning 
+that it is entirely up to the repository implementation to suggest certain 
+models.
+</p>
+<p>
+Jackrabbit is built to support a variety of different deployment models, 
+some of the possibilities on how to deploy Jackrabbit will be outlined here.
+</p>
+</section>
+
+<section name="Model 1: The (Web-) Application Bundle">
+<p>
+For many applications, usually applications that run in a closed 
+context without interacting with other applications or data sources, 
+it might be desirable to bundle a content repository with the 
+application itself.
+</p>
+<p>
+Jackrabbit is built for this lightweight model and allows obviously 
+through the abstraction provided by JSR-170 to move at any point in 
+time to a different deployment model in case this should be desirable 
+for the context that the application runs in.
+</p>
+<p>
+This makes Jackrabbit ideal to be packaged as a lightweight out-of-the-box 
+content repository that allows an application vendor to make sure that there 
+are no dependencies to a pre-installed content repository.
+</p>
+<p>
+The instance of Jackrabbit that is package with the application is running 
+in-proc inside the same JVM and cannot be accessed by any other application.
+</p>
+<p>
+This deployment model is particularly lightweight and does not require a 
+network layer.
+</p>
+<p>
+The individual repository instances are started and stopped with their 
+containing applications, which means that the application is not only 
+connecting to the repository but is also in charge of starting and 
+stopping the repository.
+</p>
+<p>
+As an example of this deployment model we assume a WebApplication packaged 
+into a .war file which is deployed into a WebContainer, which not only 
+contains the application but also the actual content repository.
+</p>
+<p>
+<img src="../images/arch/deploy-1.png" />
+</p>
+<p>
+Application1 and Application2 both contain their own instances of a Content 
+Repository distributed as a part of their .war file and therefore loaded 
+with the web application's class loader which makes it invisible to other 
+applications.
+</p>
+<p>
+This deplyoment model of course also works for any stand-alone application 
+and not just for web applications.
+</p>
+</section>
+
+<section name="Model 2: Shared J2EE Resource">
+<p>
+A second way to deploy a repository is to make it visible as a resource to 
+all the web applications that are running inside a Servlet Container by 
+registering the Repository as a Resource Adapter to the Application Server.
+</p>
+<p>
+Similar to the first deployment model this deployment model does also not 
+require a network layer and therefore would be considered in-proc and is 
+running inside the same JVM.
+</p>
+<p>
+The repository is started and stopped with the Application Server but is 
+visible to all the applications to connect to.
+</p>
+<p>
+<img src="../images/arch/deploy-2.png" />
+</p>
+<p>
+This setup also allows to take advantage of the XA facilities of the 
+Application Server and could use the application servers single sign-on 
+mechanisms that are provided as part of the J2EE framework.
+</p>
+</section>
+
+<section name="Model 3: The Repository Server">
+<p>
+In enterprise environments the client/server deployment model is widely used 
+for relational databases. While with relational databases this is probably the 
+only deployment model that is supported by most RDBMS vendors for repositories, 
+in particular for Jackrabbit, this is only on various options.
+</p>
+<p>
+The client/server deployment model will certainly be very popular in 
+environments that where it is desirable to physically separate the 
+content repository (or data) layer from the application 
+or presentation layer, so the content repository can be 
+used from many different applications, physically and can be scaled 
+individually.
+</p>
+<img src="../images/arch/deploy-3.png" />
+<p>
+This deployment model assumes that there is a network layer between the 
+content repository server and the respective content repository client.
+</p>
+<p>
+While the applications communicate through the JSR-170 API with the content 
+repository client. The content repository client then communicates through 
+any form of transport protocol with the stand-alone content repository server.
+</p>
+<p>
+The transport protocol between the client and the server is subject to 
+implementation and not mandated by JSR-170. Popular choices might include RMI 
+over JRMP or IIOP or WebDAV and its extensions.
+</p>
+</section>
+
+</body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-client.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-client.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-client.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-client.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,97 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+  <properties>
+    <title>JCR application HOWTO</title>
+  </properties>
+  <body>
+    <section name="JCR client application HOWTO">
+      <p>
+        This document describes the common configuration and initialization
+        code of a client application that uses a JCR content repository. The
+        application setup does not depend on the underlying deployment model,
+        implementation, or configuration of the content repository.
+      </p>
+      <p>
+        The instructions in this document apply to a J2EE web application
+        that uses JNDI to access the content repository. It should however
+        be easy to modify the instructions for other container environments.
+      </p>
+    </section>
+    <section name="J2EE web application instructions">
+      <p>
+        Follow the steps below to access a JNDI-bound content repository
+        within a J2EE web application. Example code is included after
+        this overview. See the deployment model howtos for instructions on
+        how to create the JNDI bindings for the standard deployment models.
+      </p>
+      <ol>
+        <li>
+          Place the JCR API jar in the <code>WEB-INF/lib</code> subdirectory
+          of your web application.
+        </li>
+        <li>
+          Declare the JNDI address under which you will request the
+          repository instance in the deployment descriptor.
+        </li>
+        <li>
+          Code your application to use the resource.
+        </li>
+      </ol>
+      <p>
+        Note that that none of your code or configuration needs to depend
+        on the underlying repository implementation or deployment model.
+        All those details are handled by the container and can easily be
+        changed without modifying your application. Just make sure that
+        you have documented the JCR repository level and optional features
+        your application requires so that your application can be deployed
+        in an appropriate environment.
+      </p>
+      <subsection name="Step 2 - Deployment descriptor">
+        <p>
+          Add the following snippet in your <code>web.xml</code>
+          deployment descriptor to declare your application's use of
+          a content repository resource.
+        </p>
+        <source><![CDATA[
+<resource-env-ref>
+  <description>Content Repository</description>
+  <resource-env-ref-name>jcr/repository</resource-env-ref-name>
+  <resource-env-ref-type>javax.jcr.Repository</resource-env-ref-type>
+</resource-env-ref>
+]]></source>
+        <p>
+          Note that the <code>java:comp/env/jcr</code> subcontext
+          is the preferred naming contxt for JCR content repository
+          resources.
+        </p>
+      </subsection>
+      <subsection name="Step 3 - Java code">
+        <p>
+          Use the following Java code snippet to get a reference to the
+          configured content repository instance.
+        </p>
+        <source><![CDATA[
+InitialContext context = new InitialContext();
+Context environment = (Context) context.lookup("java:comp/env");
+Repository repository = (Repository) environment.lookup("jcr/repository");
+]]></source>
+      </subsection>
+    </section>
+  </body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-client.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model1.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model1.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model1.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model1.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,121 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+  <properties>
+    <title>Model 1: The (Web-) Application Bundle HOWTO</title>
+  </properties>
+  <body>
+    <section name="Model 1: The (Web-) Application Bundle HOWTO">
+      <p>
+        This document describes how to setup a Jackrabbit content repository
+        in the deployment model 1; The (Web-) Application Bunde. In this
+        deployment model, each application bundle uses its own local content
+        repository that is not visible to other applications. See the
+        <a href="howto-client.html">JCR client application HOWTO</a> for
+        instructions on how to use the configured content repository.
+      </p>
+      <p>
+        Note that it is also possible to bypass the JNDI mechanism by
+        including all the Jackrabbit startup and configuration code directly
+        in your application. This approach however makes a strong binding
+        between your application and the underlying repository implementation.
+      </p>
+      <p>
+        The instructions in this document apply to
+        <a href="http://jakarta.apache.org/tomcat/">Tomcat</a>
+        versions 4.x and 5.x. It should be easy to modify the
+        instructions for other container environments. 
+      </p>
+      <p>
+        <strong>Important:</strong> remember that two Jackrabbit instances
+        should never read from/write to the same physical storage.
+        This setup is not supported and will lead to corrupt data.
+      </p>
+    </section>
+    <section name="Tomcat instructions">
+      <p>
+        Follow the steps below to setup a model 1 Jackrabbit deployment
+        for your web application in Tomcat 4.x or 5.x. Example code for
+        both versions of Tomcat is included after this overview.
+      </p>
+      <ol>
+        <li>
+          Place the Jackrabbit jar file and all the dependencies (including
+          the JCR API jar file) under
+          <code>[Tomcat folder]/webapps/[your app]/WEB-INF/lib</code>.
+        </li>
+        <li>
+          Register a bindable repository factory in the context
+          scope. Configure the Java class name of the factory
+          implementation, as well as the repository configuration
+          file path and the repository home directory path. Use the
+          full path in both cases.
+        </li>
+      </ol>
+      <p>
+        <strong>Limitations:</strong> the application should not be
+        redeployed during the same JVM process to avoid creating duplicate
+        Jackrabbit instances with the same configuration. In case you want
+        to redeploy your application be sure to shutdown the repository
+        when your application is undeployed. It can be done by calling 
+        RepositoryImpl.shutdown() (e.g. in the destroy() method of a 
+        servlet).
+      </p>
+      <subsection name="Step 2 - Context configuration">
+        <p>
+          In Tomcat 4.x and 5.0, add the following snippet in
+          <code>server.xml</code> under the <code>Context</code> element
+          of your web application.
+        </p>
+        <source><![CDATA[
+<Resource name="jcr/repository"
+          auth="Container"
+          type="javax.jcr.Repository"/>
+
+<ResourceParams name="jcr/repository">
+  <parameter>
+    <name>factory</name>
+    <value>org.apache.jackrabbit.core.jndi.BindableRepositoryFactory</value>
+  </parameter>
+  <parameter>
+    <name>configFilePath</name>
+    <value>[full path to repository.xml]</value>
+  </parameter>
+  <parameter>
+    <name>repHomeDir</name>
+    <value>[full path to the repository home folder]</value>
+  </parameter>
+</ResourceParams>
+]]></source>
+        <p>
+          In Tomcat 5.5, add the following snippet in your application's
+          <code>context.xml</code> file (or in the <code>server.xml</code>
+          file if you prefer central configuration).
+        </p>
+        <source><![CDATA[
+<Resource name="jcr/repository"
+          auth="Container"
+          type="javax.jcr.Repository"
+          factory="org.apache.jackrabbit.core.jndi.BindableRepositoryFactory"
+          configFilePath="[full path to repository.xml"
+          repHomeDir="[full path to the repository home folder]"/>
+]]></source>
+      </subsection>
+    </section>
+  </body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model1.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model2.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model2.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model2.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model2.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,120 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+  <properties>
+    <title>Model 2: Shared J2EE Resource HOWTO</title>
+  </properties>
+  <body>
+    <section name="Model 2: Shared J2EE Resource HOWTO">
+      <p>
+        This document describes how to use a Jackrabbit content repository
+        in the deployment model 2: Shared J2EE Resource. In this deployment
+        model, a central content repository resource managed by an application
+        server is used by multiple different applications. See the
+        <a href="howto-client.html">JCR client application HOWTO</a> for
+        instructions on how to use the configured content repository.
+      </p>
+      <p>
+        This how-to contains instructions for
+        <a href="http://jakarta.apache.org/tomcat/">Tomcat</a>
+        versions 4.x and 5.x. It should be easy to modify the
+        instructions for other container environments.
+      </p>
+    </section>
+    <section name="Tomcat instructions">
+      <p>
+        Follow the steps below to setup a model 2 Jackrabbit deployment
+        for your Tomcat 4.x or 5.x installation. Example code for
+        both versions of Tomcat is included after this overview.
+      </p>
+      <ol>
+        <li>
+          Place the Jackrabbit jar file and all the dependencies (including
+          the JCR API jar file) under <code>[Tomcat folder]/common/lib</code>.
+        </li>
+        <li>
+          Register the bindable repository factory as a global resource.
+        </li>
+        <li>
+          Link the global resource to a context scoped JNDI address.
+        </li>
+      </ol>
+      <subsection name="Step 2 - Resource configuration">
+        <p>
+          <strong>Note:</strong> This step is essentially the same as
+          step 2 in the <a href="howto-model1.html">Model 1 HOWTO</a>.
+          The only differences are in the (arbitrary) naming of the resource
+          and placing of the configuration elements. The difference in
+          the end result is that the configured repository is bound to
+          the global JNDI context instead of a local one.
+        </p>
+        <p>
+          In Tomcat 4.x and 5.0, add the following snippet in
+          <code>server.xml</code> under the <code>GlobalNamingResources</code>
+          element.
+        </p>
+        <source><![CDATA[
+<Resource name="jcr/globalRepository"
+          auth="Container"
+          type="javax.jcr.Repository"/>
+
+<ResourceParams name="jcr/globalRepository">
+  <parameter>
+    <name>factory</name>
+    <value>org.apache.jackrabbit.core.jndi.BindableRepositoryFactory</value>
+  </parameter>
+  <parameter>
+    <name>configFilePath</name>
+    <value>[full path to repository.xml]</value>
+  </parameter>
+  <parameter>
+    <name>repHomeDir</name>
+    <value>[full path to the repository home folder]</value>
+  </parameter>
+</ResourceParams>
+]]></source>
+        <p>
+          In Tomcat 5.5, add the following snippet in <code>server.xml</code>
+          under the <code>GlobalNamingResources</code> element.
+        </p>
+        <source><![CDATA[
+<Resource name="jcr/globalRepository"
+          auth="Container"
+          type="javax.jcr.Repository"
+          factory="org.apache.jackrabbit.core.jndi.BindableRepositoryFactory"
+          configFilePath="[full path to repository.xml"
+          repHomeDir="[full path to the repository home folder]"/>
+]]></source>
+      </subsection>
+      <subsection name="Step 3 - Resource link">
+        <p>
+          In Tomcat versions 4.x and 5.0, add the following snippet
+          in <code>server.xml</code> under the <code>Context</code> element
+          of your web application. In Tomcat version 5.5, add the snippet
+          in your application's <code>context.xml</code> file (or in the
+          <code>server.xml</code> file if you prefer central configuration).
+        </p>
+        <source><![CDATA[
+<ResourceLink name="jcr/repository"
+              global="jcr/globalRepository"
+              type="javax.jcr.Repository"/>
+]]></source>
+      </subsection>
+    </section>
+  </body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model2.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model3.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model3.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model3.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model3.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+  <properties>
+    <title>Model 3: The Repository Server HOWTO</title>
+  </properties>
+  <body>
+    <section name="Model 3: The Repository Server HOWTO">
+      <p>
+        This document describes how to use a Jackrabbit content repository
+        in the deployment model 3: The Repository Server. In this deployment
+        model, a separate repository server is running outside the virtual
+        machine the client application is running in. A repository server
+        can serve multiple applications running on separate JVMs on separate
+        network hosts. See the <a href="howto-client.html">JCR client
+        application HOWTO</a> for instructions on how to use the configured
+        content repository server.
+      </p>
+      <p>
+        Note that JCR specification defines no standard communication
+        protocol for inter-JVM repository access, and that Jackrabbit
+        supports no such protocol by default. However, the Jackrabbit
+        <code>contrib</code> subdirectory contains tools for using JCR
+        content repositories over the RMI and Webdav protocols (see the
+        <code>jcr-rmi</code> and <code>jcr-server</code> contrib packages).
+      </p>
+      <p>
+        This how-to contains instructions for accessing a JCR-RMI server
+        in <a href="http://jakarta.apache.org/tomcat/">Tomcat</a>
+        versions 4.x and 5.x. It should be easy to modify the instructions
+        for other container environments and communication protocols.
+      </p>
+      <p>
+        In addition to the following the instructions in this document,
+        you also need to have an already running JCR-RMI server. See the
+        JCR-RMI javadocs for instructions on how to setup such a server.
+      </p>
+      <p>
+        <strong>Warning:</strong> The current JCR-RMI library is designed
+        for simplicity, not performance. You will probably experience major
+        performance issues if you try running any non-trivial applications
+        on top of JCR-RMI.
+      </p>
+    </section>
+    <section name="Tomcat instructions">
+      <p>
+        Follow the steps below to setup a model 3 JCR-RMI client deployment
+        for your web application in Tomcat 4.x or 5.x. Example code for
+        both versions of Tomcat is included after this overview.
+      </p>
+      <p>
+        Note that these instructions closely follow the
+        <a href="howto-model1.html">Model 1 HOWTO</a> instructions. By making
+        similar changes (change the factory class and parameters of the
+        repository) to the <a href="howto-model2.html">Model 2 HOWTO</a>
+        instructions, you can setup a shared JCR-RMI client deployment for
+        all applications in the container.
+      </p>
+      <ol>
+        <li>
+          Place the JCR-RMI jar file and its dependencies (including the
+          JCR API jar) under
+          <code>[Tomcat folder]/webapps/[your app]/WEB-INF/lib</code>.
+          You can find the jcr-rmi implementation under the contrib 
+          folder of the Jackrabbit source distribution. 
+        </li>
+        <li>
+          Register the JCR-RMI client repository factory in the context scope.
+        </li>
+      </ol>
+      <subsection name="Step 2 - Context configuration">
+        <p>
+          In Tomcat 4.x and 5.0, add the following snippet in
+          <code>server.xml</code> under the <code>Context</code> element
+          of your web application.
+        </p>
+        <source><![CDATA[
+<Resource name="jcr/repository"
+          auth="Container"
+          type="javax.jcr.Repository"/>
+
+<ResourceParams name="jcr/repository">
+  <parameter>
+    <name>factory</name>
+    <value>org.apache.jackrabbit.rmi.client.ClientRepositoryFactory</value>
+  </parameter>
+  <parameter>
+    <name>url</name>
+    <value>[The RMI URL of the repository]</value>
+  </parameter>
+</ResourceParams>
+]]></source>
+        <p>
+          In Tomcat 5.5, add the following snippet in your application's
+          <code>context.xml</code> file (or in the <code>server.xml</code>
+          file if you prefer central configuration).
+        </p>
+        <source><![CDATA[
+<Resource name="jcr/repository"
+          auth="Container"
+          type="javax.jcr.Repository"
+          factory="org.apache.jackrabbit.rmi.client.ClientRepositoryFactory"
+          url="[The RMI URL of the repository]"/>
+]]></source>
+      </subsection>
+    </section>
+  </body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/deploy/howto-model3.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/index.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/index.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/index.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/index.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>Architecture Documentation</title>
+ </properties>
+ <body>
+<section name="Architecture Documentation">
+<p>
+<a href="overview.html">Jackrabbit Architecture Overview</a><br />
+What fits where? JSR-170 and Jackrabbit? Where does my Application fit into the
+picture? <a href="overview.html">more...</a>
+</p>
+<p>
+<a href="deploy.html">Jackrabbit Deployment Models</a><br />
+Embedded or stand-alone? J2EE? Server or Client? <a href="deploy.html">more...</a>
+</p>
+</section>
+</body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/index.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/index.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/index.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/index.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/index.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>Jackrabbit operations explained</title>
+ </properties>
+ <body>
+<section name="How Jackrabbit works">
+<p>
+The diagram on the left explains which components of the Jackrabbit
+are used when a user of the JCR API modified content in the content
+repository. This is a simple and very common operation, that touches 
+a large portion of the components in the Jackrabbit implementation.
+Please keep in mind that this implementation architecture is not
+mandated by JCR, but has been designed from scratch based on JCR.
+</p>
+<p>
+<img src="../../../images/arch/jackrabbit-ism_small.jpg" /><br/>
+The used components and their respective functions in the order
+of their appearance in the use case of writing or modifying 
+content in the content repository:
+<ul>
+<li><b>Transient Item State Manager</b>
+Once content items are read by a session they are cached in
+the Transient Item State Manager. When those items are modified
+the modification is only visible to that same session, in the 
+so-called "transient" space.</li>
+
+<li><b>Transactional Item State Manager</b>
+When the Application perists the modified items using the 
+JCR <code>Item.save()</code> or <code>Session.save()</code> the
+transient Items are promoted into the Transactional ISM.
+The modifications are still only visible within the scope
+of this transaction, meaning that other sessions will not
+see the modification until they are committed. The commit
+may haven implicitely in case the Content Repository is not 
+running in an XA environment.
+</li>
+
+<li><b>Shared Item State Manager</b>
+Once a transaction is committed the Shared Item State Manager
+receives the changelog and publishes the changes to all the sessions 
+logged into the same workspace. This means that all the Item States
+that are cached and referenced by other sessions are notified 
+and possibly updated or invalidated.
+The Shared Item State Manager also triggers the observation and
+hands the changelog over to the persistence manager that is 
+configured for this workspace.</li>
+
+<li><b>Persistence Manager</b>
+The Persistence Manager persists all the Item States in the 
+changelog passed by the Shared ISM. The persistence manager
+is a very simple, fast and transactional interface that is
+very low-level and does not need to understand the complexities
+of the repository operations, but basically just needs to be 
+able persist and retrieve a given item based on its item id.
+</li>
+
+<li><b>Observation</b>
+When a transcation is committed the Shared Item State Manager
+triggers the Observation mechanism. This allows applications
+to asynchronously subscribe changes in the workspace. 
+Jackrabbit also non-standard offers a synchronous observation.
+</li>
+
+<li><b>Query Manager / Index</b>
+Through a synchronous observation event the Query Manager is
+instructed to index the new or modified items. A content 
+repository index is much more complex than a classical RDB
+index since it deals with content repository features like 
+the item hierarchy, nodetype inheritance or fulltext 
+searches.</li>
+
+</ul>
+</p>
+</section>
+</body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/index.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/query.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/query.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/query.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/query.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,134 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>Query implementation</title>
+ </properties>
+ <body>
+<section name="Overview">
+<p>
+Jackrabbit implements both the mandatory XPath and optional SQL 
+query syntax. Its design follows the goal of the JSR-170 specification
+that all the mandatory query features can be expressed either in
+XPath or in SQL. Thus, the actual implementation of the query engine
+is independent of the query syntax used, though Jackrabbit's query
+internals are closer to XPath than SQL, because of the hierarchical
+structure of a JCR.
+</p>
+<p>
+The major parts of the query implementation are:
+<ul>
+<li>XPath Parser</li>
+<li>SQL Parser</li>
+<li>Abstract Query Tree</li>
+<li>Query engine</li>
+<li>Utilities</li>
+</ul>
+</p>
+</section>
+
+<section name="XPath Parser">
+<p>
+The XPath query parser is based on the W3C XQuery grammar definition which
+is not yet final but can be downloaded as draft
+<a href="http://www.w3.org/2005/02/applets/xgrammar.zip">here</a>.
+The reason why Jackrabbit uses the XQuery grammar, rather than the XPath
+grammer, is, that JSR-170 specifies an 'order by' clause for the XPath
+query syntax. This 'order by' clause is borrowed from the
+<a href="http://www.w3.org/TR/xquery/#id-flwor-expressions">XQuery FLWOR</a>
+expression syntax. Befor parsing the XPath query in Jackrabbit, the statement
+is surrounded with dummy code, to form a valid XQuery FLWOR expression and
+is then passed to the XQuery parser.
+</p>
+<p>
+The actual parser is a class generated by JavaCC, which uses the grammar
+that can be found in <code>src/grammar/xpath</code>.
+</p>
+<p>
+The parsed XPath statement is then translated into an Abstract Query Tree.
+See class:
+<code>org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder</code>
+</p>
+</section>
+
+<section name="SQL Parser">
+<p>
+The SQL query parser is generated from a grammar definition located in
+<code>src/grammar/sql</code>. After parsing, the Abstract Syntax Tree
+is translated into the Jackrabbit internal Abstract Query Tree.
+See class:
+<code>org.apache.jackrabbit.core.query.sql.JCRSQLQueryBuilder</code>
+</p>
+</section>
+
+<section name="Abstract Query Tree">
+<p>
+The Abstract Query Tree (AQT) is the common query description format that
+allows Jackrabbit to implement a query engine which is (to a certain
+extent) independent of the query syntax used (XPath or SQL).
+The AQT consists of the classes that are derived from:
+<code>org.apache.jackrabbit.core.query.QueryNode</code>
+</p>
+</section>
+
+<section name="Query Engine">
+<p>
+Now this is where the meat is. The actual implementation of the query engine
+is configurable. One needs to implement the interface:
+<code>org.apache.jackrabbit.core.query.QueryHandler</code>. Jackrabbit comes
+with an implementation that uses a <a href="http://lucene.apache.org/">Lucene</a>
+index: <code>org.apache.jackrabbit.core.query.lucene.SearchIndex</code> This
+index is independent of the persistence manager in use. However
+it is also possible to write a <code>QueryHandler</code> implementation which is
+aware of the underlying storage (e.g. a database) and executes the query on
+the 'native' storage.
+</p>
+<p>
+The class <code>org.apache.core.query.lucene.LuceneQueryBuilder</code> translates
+the Abstract Query Tree into a query that can be executed against the Lucene
+index. Jackrabbit implements a couple of extensions to the standard Lucene
+classes, primarily to improve performance in an environment with incremental
+indexing like Jackrabbit. Instead of a single index, Jackrabbit uses generations
+of indexes to circumvent costly IndexReader / IndexWriter creation. See:
+<code>org.apache.jackrabbit.core.query.lucene.MultiIndex</code>. The most
+recent generation of the search index is held completely in memory. See:
+<code>org.apache.jackrabbit.core.query.lucene.VolatileIndex</code>. It is
+comparable with the garbage collection in Java, where generations are used to
+move living objects from the young into the old generation over time. Queries
+are then executed on a MultiReader that spans all the indexes. Every now and
+then (depending on the configuration parameters in workspace.xml) indexes
+are merged and nodes marked as deleted in the index are removed. This happens
+similar to how Lucene merges its internal segments.
+</p>
+</section>
+
+<section name="Utilities">
+<p>
+The class <code>org.apache.jackrabbit.core.query.QueryParser</code> allows you
+to translate a query statement into an Abstract Query Tree and vice versa. It's
+a nice tool to see how a query in XPath looks like in SQL or the other way round.
+</p>
+<p>
+The class <code>org.apache.jackrabbit.core.query.PropertyTypeRegistry</code>
+provides fast access to the type information based on property names. The
+Jackrabbit QueryHandler implementation uses this class to coerce value literals
+into other value types.
+</p>
+</section>
+</body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/query.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/startup.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/startup.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/startup.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/startup.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>Core operations: Startup, Initialize and Configuration</title>
+ </properties>
+ <body>
+
+<section name="Core Content Repository Operations: Startup, Initialize and Configuration">
+<p>
+The lifecycle of any Jackrabbit Content Repository starts with a call to one of 
+the <code>RepositoryFactory.create()</code> methods passing optionally the source 
+of a repository configuration file (which by convention is called <code>config.xml</code>) 
+and the RepositoryFactoryHome, which points to a directory from which the 
+Repository will continue reading further information for start-up and in 
+many cases will store the actual data that is persisted in the repository and 
+its workspaces.
+</p>
+<p>
+Not supplying the <code>RepositoryFactoryHome</code> will default to the 
+users home dir from the System property <code>user.dir</code>.
+</p>
+<p>
+Not supplying the configuration file parameter will default to the value of 
+<code>Repository.factory.config</code> System Property and if that is not set 
+it will default to the <code>config.xml</code> in the 
+<code>RepositoryFactoryHome</code>.
+</p>
+<p>
+Calling the <code>create()</code> method will instantiate the 
+<code>RepositoryFactory</code> singleton that will then, through the 
+<code>getRepository(String name)</code> method, serve as the factory for 
+Repository instances.
+</p>
+<p>
+As per the <code>config.xml</code> a repository are started up with the 
+respectively configured <code>RepositoryStore</code>, the <code>RepositoryStore</code> 
+defines where the repository stores information that is visible for the entire 
+Repository which includes things like the uuid of the root node, repository 
+properties, the namespace registry, node type definitions or the version 
+backing store in a file structure as follows.
+</p>
+<p>
+<source>
+./meta:
+rep.properties
+rootUUID
+
+./namespaces:
+ns_reg.properties
+
+./nodetypes:
+custom_nodetypes.xml
+
+./versions:
+</source>
+</p>
+<p>
+The RepositoryStore normally points to a regular (i.e. local) file system but is abstracted through an abstract FileSystem that can be configured to point to a different FileSystem implementation, in case the above information should be stored in a different data container.
+</p>
+<p>
+... to be continued ...
+</p>
+</section>
+</body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/operate/startup.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,124 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>Jackrabbit Architecture Overview</title>
+ </properties>
+ <body>
+
+<section name="General Architecture Overview">
+<p>
+The general architecture of Jackrabbit can be described in three Layers:
+A Content Application Layer, an API Layer and a Content Repository 
+Implementation Layer.<br />
+<img src="../../images/arch/overview.png"/>
+</p>
+</section>
+
+<section name="Content Applications">
+<p>
+Content Applications interact through the JSR-170 API with the Content Repository Implementation.
+There are numerous applications that are available for JSR-170 repositories, some of them are very 
+generic (like a WebDAV server) other applications can be very specific and make 
+use of the content repository as a store for the information that is used by 
+the applications.
+Java Applications can use a JSR-170 content repository as a replacement 
+for anything from property-files, XML-configuration, certain portions of 
+relational database functionality to straight file system or 
+blob-management. Using a content repository allows an application 
+to deal with an arbitrarily large hierarchical space in a 
+scalable manner automatically profiting from the repository services such as 
+versioning, query, transactions or namespaces which make a content 
+repository an ideal data store for many applications.
+</p>
+<p>
+A "Generic Content Application" (an application that has no particular 
+functional focus but just allows for generic introspection and manipulation 
+of the repository) uses the capabilities of the node types, access control 
+and other facilities to display a user interface or a network protocol 
+to the end user, seemingly independent from the content that is stored 
+in the repository. Examples of such generic applications are 
+"The Content Explorer", "WebDAV Server" or a "Subversion Server". (Or 
+generic Portal, CMS or DMS applications).
+</p>
+<p>
+A "Specialized Content Application" operates under the assumption that there 
+are certain node types that it operates on, and that it is familiar at least 
+partially with the data model exposed by defined node types. Mostly these node 
+types are defined by the application itself and ship with the application.
+These applications use a content repository as their persistence layer as a 
+natural evolution from the use of an RDBMS or a file system.
+Examples of "Specialized Content Applications" have a very wide range from 
+a "DVD Collection Management", to a "Message Board", to "Workflow and BPM" 
+but also possibly complete next generation "Enterprise Resource Planning 
+Systems".
+</p>
+</section>
+
+<section name="Content Repository API">
+<p>
+The Content Repository API Layer is split into two major sections.
+<ul>
+<li><a href="overview/jcrlevels.html">The Content Repository API defined by JSR-170</a></li>
+<li>A number features of a content repository, that have been removed from the JSR-170 specification since they are difficult to implement on existing non-java-based content repositories and administrational Repository tasks that have also been deliberately excluded from JSR-170</li>
+</ul>
+</p>
+<p>
+There are only very few (mostly administrational) applications which make use of the non-JSR-170 APIs provided by Jackrabbit.
+</p>
+<p>
+The boxes in the architecture chart do not symbolize package names or class names directly but mostly semantically grouped blocks of functionality.
+</p>
+</section>
+
+<section name="Content Repository Implementation">
+<p>
+The content Repository Implementation portion of the architecture chart reflects the major building blocks of the jackrabbit content repository implementation.
+</p>
+<p>
+The size of the blocks symbolizes roughly the amount of code and therefore the complexity of the individual functional block. Again the functional blocks do not directly map to package or class names.
+</p>
+<p>
+There are three scopes in a content repository: A repository scope, a workspace scope and a session scope.
+</p>
+<p>
+Every function that is operated against a repository can be attributed to at least one of these scopes, some functions can operate on more than one scope.
+<ul>
+<li>Repository</li>
+<li>Nodetype</li>
+<li>Version</li>
+<li>NamspaceRegistry</li>
+<li>Workspace</li>
+<li>Query</li>
+<li>Observation</li>
+<li>State</li>
+<li>Xml</li>
+<li>Session</li>
+<li>Path</li>
+<li>HierarchyManager</li>
+<li>QName</li>
+<li>ItemImpl, PropertyImpl, NodeImpl</li>
+<li>ItemId, PropertyId, NodeId</li>
+<li>ItemManager</li>
+</ul>
+This is not a complete list but includes some of the most important component of the content repository implementation.
+</p>
+</section>
+
+</body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview/jcrlevels.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview/jcrlevels.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview/jcrlevels.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview/jcrlevels.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,113 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>Levels of Content Repository API for Java Technology (JSR-170)</title>
+ </properties>
+ <body>
+
+<section name="Content Repository API for Java Technology">
+<p>
+Jackrabbit is a complete, and fully compliant implementation of 
+the Content Repository API for Java Technology (JCR) and therefore
+its primary API is defined by JCR. For a developer this means that
+most operations required are defined by the JCR API:
+</p>
+<p>
+Browse JCR v1.0 Javadoc: <a href="http://www.day.com/maven/jsr170/javadocs/jcr-1.0/">http://www.day.com/maven/jsr170/javadocs/jcr-1.0/</a><br />
+Download zipped JCR v1.0 Javadoc:<a href="http://www.day.com/maven/jsr170/javadocs/jcr-1.0.javadoc">http://www.day.com/maven/jsr170/javadocs/jcr-1.0.javadoc</a>
+</p>
+<p>
+Beyond the JCR API Jackrabbit features numerous extensions and
+admistrational features that are needed to run a repository 
+but are not (yet) specified by JCR. (see <a href="arch\overview.html">Architecture Overview</a>)
+</p>
+<p>
+Browse current Jackrabbit API: <a href="http://incubator.apache.org/jackrabbit/apidocs/index.html">http://incubator.apache.org/jackrabbit/apidocs/index.html</a>
+</p>
+</section>
+<section name="JSR-170 Levels">
+<p>
+The Content Repository API for Java Technology (JSR-170) is split into different
+Levels of compliancy, to allow Repository Vendors to gradually adopt JSR-170
+and to avoid that the overhead is unnecessarily high for repository vendors
+that only want to expose portions of their repository functionality through
+a JSR-170 compliant Interface.
+</p>
+<p>
+JSR-170 specifies a Level 1, a Level 2 and a set of advanced repository 
+feature blocks. Jackrabbit is fully JSR-170 compliant and therefore
+supports Level 1, Level 2 and all the optional blocks.
+</p>
+</section>
+
+<section name="Level 1 : Ease of Adoption, Covering many usecases">
+<p>
+The Scope of Level 1 of JSR-170 to cover a large number of simple 
+Applications, that need to search repositories and need to read 
+from repositories.
+Level 1 specifies a read-only API that allows to 
+introspect Node and Property-types and offers hierarchical
+read access to content stored in a repository.
+</p>
+<img src="../../../images/arch/level-1.jpg"/>
+<p>
+Level 1 of JSR-170 is geared to allow people to write 
+applications such as search and display Portlets, 
+CMS-Templates, Reports, Exports or other applications 
+that harvest, search, present or display information 
+from one or multiple repositories.
+</p>
+</section>
+
+<section name="Level 2 : Writeable Repository">
+<p>
+Level 2 of JSR-170 specifies all the writing 
+capabilities need to bi-directionally interact with a
+content repository in a fine and coarse grained 
+fashion.
+</p>
+<img src="../../../images/arch/level-2.jpg"/>
+<p>
+Applications written against Level 2 of JSR-170 include
+management applications or generally speaking any 
+application that generates data, information or content
+for both structured and unstrcutured information.
+</p>
+</section>
+
+<section name="Advanced Options">
+<p>
+On top of Level 1 or Level 2 a number of functional 
+block serve for more advanced repository functionality.
+This includes functions like: Versioning, 
+(JTA) Transactions, Query using SQL, Explicit 
+Locking and Content Observation.
+</p>
+<img src="../../../images/arch/level-adv.jpg" />
+<p>
+A fully JSR-170 compliant repository like Jackrabbit
+encompasses all the functionalities and therefore
+lends itself as general purpose, off-the-shelf 
+infrastructure for Content-, Document- and
+Source Code Management or for just about any 
+other application that persists content.
+</p>
+</section>
+</body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/arch/overview/jcrlevels.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/download.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/download.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/download.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/download.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>Download and Install</title>
+ </properties>
+ <body>
+
+<section name="Download and Install">
+<p>
+The Jackrabbit source code is available via Subversion at
+<a href="https://svn.apache.org/repos/asf/incubator/jackrabbit/trunk">https://svn.apache.org/repos/asf/incubator/jackrabbit/trunk</a>
+</p>
+<p>
+and anonymous access is available at
+<a href="http://svn.apache.org/repos/asf/incubator/jackrabbit/trunk">http://svn.apache.org/repos/asf/incubator/jackrabbit/trunk</a>
+</p>
+<p>or with viewcvs at
+<a href="http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/">http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/</a>
+</p>
+<p>The Jackrabbit main project is located in the "jackrabbit" subdirectory
+and the "contrib" subdirectory contains various additional modules and
+contributed projects.</p>
+
+<p>To checkout the main Jackrabbit source tree, run
+<source>
+   svn checkout http://svn.apache.org/repos/asf/incubator/jackrabbit/trunk/jackrabbit
+</source>
+</p>
+<p>
+Once you have a copy of the source code tree, you can use Apache Maven
+
+   <a href="http://maven.apache.org/">http://maven.apache.org/</a>
+
+to build the project.  After installing Maven 1.0, be sure to download the
+latest release of the Ant plugin (1.8.1 or later) using a command like
+<source>
+   maven plugin:download -DgroupId=maven \
+         -DartifactId=maven-ant-plugin -Dversion=1.8.1
+</source>
+
+before running one of the maven commands listed at
+
+   <a href="http://maven.apache.org/start/use.html">http://maven.apache.org/start/use.html</a>
+
+to build the Jackrabbit project and/or documentation.
+</p>
+<p>
+<b>NOTE:</b> Java 5 users need to download the xalan.jar and serializer.jar
+libraries from the Xalan-Java binary distribution at 
+http://xml.apache.org/xalan-j/downloads.html and place them in
+$MAVEN_HOME/lib/endorsed (or $JRE/lib/endorsed if using Maven 1.1)
+to build the Jackrabbit sources. The reason for this workaround is
+explained in
+   <a href="http://issues.apache.org/jira/browse/JCR-46">http://issues.apache.org/jira/browse/JCR-46</a>
+</p>
+</section>
+
+</body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/download.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/firststeps.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/firststeps.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/firststeps.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/firststeps.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,409 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>First Steps</title>
+ </properties>
+
+ <body>
+  <section name="Download and Build Jackrabbit">
+   <p>Please refer to the <a href="http://svn.apache.org/repos/asf/incubator/jackrabbit/trunk/jackrabbit/README.txt">README.txt</a>
+      to find details on how to build Jackrabbit using Maven.
+   </p>
+  </section>
+  <section name="Run Jackrabbit">
+   <p>
+    The following code provides a brief introduction to using Jackrabbit
+    in a simple application.  Please note that this example is meant to
+    be as short and simple as possible, rather than usable as a real
+    application, and should not be interpreted as best practice.
+   </p>
+   <p>
+    JCRTest.java
+    <source>
+import java.util.Hashtable;
+
+import javax.jcr.*;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import org.apache.jackrabbit.core.jndi.RegistryHelper;
+
+public class JCRTest {
+
+  public static void main(String[] args) {
+    try {
+      String configFile = "<b>repotest/repository.xml</b>";
+      String repHomeDir = "<b>repotest</b>";
+      
+      Hashtable env = new Hashtable();
+      env.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory");
+      env.put(Context.PROVIDER_URL, "localhost");
+      InitialContext ctx = new InitialContext(env);
+      
+      RegistryHelper.registerRepository(ctx, "repo", configFile, repHomeDir, true);
+      Repository r = (Repository) ctx.lookup("repo");
+      Session session = r.login(new SimpleCredentials("userid", "".toCharArray()), null);
+      Node rn=session.getRootNode();
+      
+      System.out.println(rn.getPrimaryNodeType().getName());
+      
+      
+    } catch (Exception e){
+      System.err.println(e);
+    }
+  }
+}
+    </source>
+   </p>
+   <p>
+    The <code>configFile</code> variable points to a file, named
+    <code>repository.xml</code> by convention, that contains
+    the repository configuration.  
+    An example <code>repository.xml</code> might look like this:
+    <source>
+&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
+&lt;Repository&gt;
+    &lt;FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"&gt;
+        &lt;param name="path" value="${rep.home}/repository"/&gt;
+    &lt;/FileSystem&gt;
+    &lt;Security appName="Jackrabbit"&gt;
+        &lt;AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager"/&gt;
+    &lt;/Security&gt;
+    &lt;Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default" /&gt;
+    &lt;Workspace name="${wsp.name}"&gt;
+        &lt;FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"&gt;
+            &lt;param name="path" value="${wsp.home}"/&gt;
+        &lt;/FileSystem&gt;
+        &lt;PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" /&gt;
+        &lt;SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"&gt;
+            &lt;param name="path" value="${wsp.home}/index"/&gt;
+        &lt;/SearchIndex&gt;
+    &lt;/Workspace&gt;
+    &lt;Versioning rootPath="${rep.home}/versions"&gt;
+        &lt;FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"&gt;
+            &lt;param name="path" value="${rep.home}/versions"/&gt;
+        &lt;/FileSystem&gt;
+        &lt;PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" /&gt;
+    &lt;/Versioning&gt;
+&lt;/Repository&gt;   
+    </source>
+   </p>
+   <p>
+    The keyword <code>${rep.home}</code> refers to the repository home
+    directory, which is used as the root directory for all of the
+    information that the repository persists. The directory can be
+    empty; after initial startup, the repository will be filled with
+    file structure similar to this:
+    <source>
+repository.xml
+
+repository/
+   meta/
+   namespaces/
+   nodetypes/
+   versions/
+
+tx/
+
+workspaces/
+   default/
+      workspace.xml
+      blobs/
+      data/
+      index/
+    </source>
+   </p>
+   <p>
+     In addition to the repository configuration file, you also need to
+     create a
+     <a href="http://java.sun.com/security/jaas/doc/api.html">JAAS configuration</a>
+     file used for Jackrabbit login settings. The contents of a simple
+     configuration file named <code>jaas.config</code> is shown below. The
+     configuration for the SimpleLoginModule also contains an optional module
+     option to configure the user id of the anonymous user with read-only access
+     to the repository. If the option is omitted the anoymous user id default to
+     'anonymous'.
+     <source>
+Jackrabbit {
+org.apache.jackrabbit.core.security.SimpleLoginModule required anonymousId="anonymous";
+};
+     </source>
+   </p>
+   <p>
+    Make sure that all of the <a href="dependencies.html">dependencies</a> 
+    are added to your classpath, as well as the Jackrabbit
+    repository implementation (named something like 
+    <code>jackrabbit-x.xx-xxx-dev.jar</code>) that has been built by Maven
+    into the <code>target</code> directory of your checkout.
+    By executing <code>maven copy-deps</code> all dependencies are
+    being copied to the <code>target/lib</code> directory. In addition
+    to setting up the classpath, you need to include the JAAS configuration
+    option <code>-Djava.security.auth.login.config==jaas.config</code>
+    (note the double equal sign <code>==</code>) to the <code>java</code>
+    command when running the example code.
+   </p>
+   <p>
+    Now you should be ready to compile the above <code>JCRTest</code>
+    class and run it, which should produce the following output:
+    <source>
+rep:root
+    </source>
+   </p>
+  </section>
+  <section name="Adding Content">
+   <p>
+    Since an empty repository is not very useful, add the following
+    code to the above test class <code>JCRTest</code> to create 
+    content inside Jackrabbit.
+   </p>
+   <p>
+    JCRTest.java
+    <source>
+import java.util.Hashtable;
+
+import javax.jcr.*;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import org.apache.jackrabbit.core.jndi.RegistryHelper;
+
+public class JCRTest {
+
+  public static void main(String[] args) {
+    try {
+      String configFile = "repotest/repository.xml";
+      String repHomeDir = "repotest";
+      
+      Hashtable env = new Hashtable();
+      env.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory");
+      env.put(Context.PROVIDER_URL, "localhost");
+      InitialContext ctx = new InitialContext(env);
+      
+      RegistryHelper.registerRepository(ctx, "repo", configFile, repHomeDir, true);
+      Repository r = (Repository) ctx.lookup("repo");
+      Session session = r.login(new SimpleCredentials("userid", "".toCharArray()), null);
+      Node rn=session.getRootNode();
+      
+      System.out.println(rn.getPrimaryNodeType().getName());
+<b>        
+      if (!rn.hasNode("testnode")) {
+        System.out.println("creating testnode");
+        Node n=rn.addNode("testnode", "nt:unstructured");
+        n.setProperty("testprop", session.getValueFactory().createValue("Hello, World."));
+        session.save();
+      }
+
+      System.out.println(rn.getProperty("testnode/testprop").getString());
+</b>      
+    } catch (Exception e){
+      System.err.println(e);
+    }
+  }
+}
+    </source>
+    which should produce the following output (possibly surrounded by log
+    messages, depending on settings) when started for the first time:
+    <source>
+rep:root
+creating testnode
+Hello, World.   
+    </source>
+   </p>
+   <p>
+    To add content a bit more efficiently, you may want to try
+    JCR's import facilities, such as <code>Session.importXML</code>.
+    The following <a href="http://www.cafeconleche.org/slides/xmlone/london2002/namespaces/10.html">XML document by Elliotte Rusty Harold</a>
+    provides an interesting example that demonstrates a repository's
+    namespace capabilities:
+    <source><!--  Copyright 2001, 2002 Elliotte Rusty Harold -->
+&lt;xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"
+            xmlns:mathml="http://www.w3.org/1998/Math/MathML"&gt;
+  &lt;xhtml:head&gt;&lt;xhtml:title&gt;Three Namespaces&lt;/xhtml:title&gt;&lt;/xhtml:head&gt;
+  &lt;xhtml:body&gt;
+    &lt;xhtml:h1 align="center"&gt;An Ellipse and a Rectangle&lt;/xhtml:h1&gt;
+    &lt;svg:svg xmlns:svg="http://www.w3.org/2000/svg" 
+             width="12cm" height="10cm"&gt;
+      &lt;svg:ellipse rx="110" ry="130" /&gt;
+      &lt;svg:rect x="4cm" y="1cm" width="3cm" height="6cm" /&gt;
+    &lt;/svg:svg&gt;
+    &lt;xhtml:p&gt;The equation for ellipses&lt;/xhtml:p&gt;
+&lt;mathml:math&gt;
+  &lt;mathml:apply&gt;
+    &lt;mathml:eq/&gt;
+    &lt;mathml:cn&gt; 1 &lt;/mathml:cn&gt;
+    &lt;mathml:apply&gt;
+      &lt;mathml:plus/&gt;
+      &lt;mathml:apply&gt;
+        &lt;mathml:divide/&gt;
+        &lt;mathml:apply&gt;
+          &lt;mathml:power/&gt;
+          &lt;mathml:ci&gt; x &lt;/mathml:ci&gt;
+          &lt;mathml:cn&gt; 2 &lt;/mathml:cn&gt;
+        &lt;/mathml:apply&gt;
+        &lt;mathml:apply&gt;
+          &lt;mathml:power/&gt;
+          &lt;mathml:ci&gt; a &lt;/mathml:ci&gt;
+          &lt;mathml:cn&gt; 2 &lt;/mathml:cn&gt;
+        &lt;/mathml:apply&gt;
+      &lt;/mathml:apply&gt;
+      &lt;mathml:apply&gt;
+        &lt;mathml:divide/&gt;
+        &lt;mathml:apply&gt;
+          &lt;mathml:power/&gt;
+          &lt;mathml:ci&gt; y &lt;/mathml:ci&gt;
+          &lt;mathml:cn&gt; 2 &lt;/mathml:cn&gt;
+        &lt;/mathml:apply&gt;
+        &lt;mathml:apply&gt;
+          &lt;mathml:power/&gt;
+          &lt;mathml:ci&gt; b &lt;/mathml:ci&gt;
+          &lt;mathml:cn&gt; 2 &lt;/mathml:cn&gt;
+        &lt;/mathml:apply&gt;        
+      &lt;/mathml:apply&gt;
+    &lt;/mathml:apply&gt;
+ &lt;/mathml:apply&gt;
+&lt;/mathml:math&gt;
+    &lt;xhtml:hr/&gt;
+    &lt;xhtml:p&gt;Last Modified January 10, 2002&lt;/xhtml:p&gt;    
+  &lt;/xhtml:body&gt;
+&lt;/xhtml:html&gt;
+    </source>
+   </p>
+   <p>
+    The <code>JCRTest</code> class is then extended with
+    <code>Session.importXml()</code> to import the XML file named
+    <code>repotest/test.xml</code>, and a simple <code>dump()</code>
+    method is added to display the content of the repository.
+    <source>
+import java.io.FileInputStream;
+import java.util.Hashtable;
+
+import javax.jcr.*;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import org.apache.jackrabbit.core.jndi.RegistryHelper;
+
+public class JCRTest {
+
+  public static void main(String[] args) {
+    try {
+      String configFile = "repotest/repository.xml";
+      String repHomeDir = "repotest";
+
+      Hashtable env = new Hashtable();
+      env.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory");
+      env.put(Context.PROVIDER_URL, "localhost");
+      InitialContext ctx = new InitialContext(env);
+
+      RegistryHelper.registerRepository(ctx, "repo", configFile, repHomeDir, true);
+      Repository r = (Repository) ctx.lookup("repo");
+      Session session = r.login(new SimpleCredentials("userid", "".toCharArray()), null);
+      Node rn=session.getRootNode();
+
+      System.out.println(rn.getPrimaryNodeType().getName());
+      
+      if (!rn.hasNode("testnode")) {
+        System.out.println("creating testnode");
+        Node n=rn.addNode("testnode", "nt:unstructured");
+        n.setProperty("testprop", session.getValueFactory().createValue("Hello, World."));
+        session.save();
+      }
+      
+      if (!rn.hasNode("importxml")) {
+        System.out.println("importing xml");
+        Node n=rn.addNode("importxml", "nt:unstructured");
+        session.importXML("/importxml", new FileInputStream("<b>repotest/test.xml</b>"), ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
+        session.save();
+      }
+      dump(rn);
+    } catch (Exception e){
+      System.err.println(e);
+    }
+  }
+  public static void dump (Node n) throws RepositoryException {
+    System.out.println(n.getPath());
+    PropertyIterator pit=n.getProperties();
+    while (pit.hasNext()) {
+      Property p=pit.nextProperty();
+      System.out.print(p.getPath() + "=");
+      if (p.getDefinition().isMultiple()) {
+        Value[] values = p.getValues();
+        for (int i = 0; i &lt; values.length; i++) {
+          if (i &gt; 0) System.out.println(",");
+          System.out.println(values[i].getString());
+        }
+      } else {
+        System.out.print(p.getString());
+      }
+      System.out.println();
+    }
+    NodeIterator nit=n.getNodes();
+    while (nit.hasNext()) {
+      Node cn=nit.nextNode();
+      dump (cn);
+    }
+  }
+}
+    </source>
+    Which should output something along the lines of:
+    <source>
+rep:root
+/
+/jcr:primaryType=rep:root
+/jcr:system
+/jcr:system/jcr:primaryType=rep:system
+/jcr:system/jcr:versionStorage
+/jcr:system/jcr:versionStorage/jcr:primaryType=rep:versionStorage
+/jcr:system/jcr:versionStorage/jcr:mixinTypes=
+/testnode
+/testnode/jcr:primaryType=nt:unstructured
+/testnode/testprop=Hello, World.
+/importxml
+/importxml/jcr:primaryType=nt:unstructured
+/importxml/xhtml:html
+/importxml/xhtml:html/jcr:primaryType=nt:unstructured
+/importxml/xhtml:html/xhtml:head
+/importxml/xhtml:html/xhtml:head/jcr:primaryType=nt:unstructured
+/importxml/xhtml:html/xhtml:head/xhtml:title
+/importxml/xhtml:html/xhtml:head/xhtml:title/jcr:primaryType=nt:unstructured
+/importxml/xhtml:html/xhtml:head/xhtml:title/jcr:xmltext
+/importxml/xhtml:html/xhtml:head/xhtml:title/jcr:xmltext/jcr:primaryType=nt:unstructured
+/importxml/xhtml:html/xhtml:head/xhtml:title/jcr:xmltext/jcr:xmlcharacters=Three Namespaces
+/importxml/xhtml:html/xhtml:body
+/importxml/xhtml:html/xhtml:body/jcr:primaryType=nt:unstructured
+/importxml/xhtml:html/xhtml:body/xhtml:h1
+/importxml/xhtml:html/xhtml:body/xhtml:h1/jcr:primaryType=nt:unstructured
+/importxml/xhtml:html/xhtml:body/xhtml:h1/align=center
+/importxml/xhtml:html/xhtml:body/xhtml:h1/jcr:xmltext
+/importxml/xhtml:html/xhtml:body/xhtml:h1/jcr:xmltext/jcr:primaryType=nt:unstructured
+/importxml/xhtml:html/xhtml:body/xhtml:h1/jcr:xmltext/jcr:xmlcharacters=An Ellipse and a Rectangle
+/importxml/xhtml:html/xhtml:body/svg:svg
+/importxml/xhtml:html/xhtml:body/svg:svg/jcr:primaryType=nt:unstructured
+/importxml/xhtml:html/xhtml:body/svg:svg/width=12cm
+/importxml/xhtml:html/xhtml:body/svg:svg/height=10cm
+.
+.
+.   
+    </source>
+   </p>
+  </section>
+ </body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/firststeps.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/index.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/index.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/index.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/index.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>Documentation</title>
+ </properties>
+ <body>
+
+<section name="Getting Started">
+<p>
+Since Jackrabbit is currently not yet released the quickest way to get 
+your hands on a running Jackrabbit instance are found in the 
+<a href="download.html">Download and Install</a> section.
+Once Jackrabbit is up and running you may try your 
+<a href="firststeps.html">first Steps</a> with JCR.
+</p>
+</section>
+<section name="Content Repository for Java Technology API (JCR)">
+<p>
+<a href="arch\overview\jcrlevels.html"><img align="left" style="margin:10px;padding:1px;border:1px solid black" src="../images/arch/thumb_jcr.jpg" /></a>
+Jackrabbit is a complete implementation of the JCR API, so the
+primary API for Jackrabbit application developers is to be found
+in the <a href="arch\overview\jcrlevels.html">JCR section</a> of the 
+Documentation.<br clear="all"/>
+</p>
+</section>
+<section name="Jackrabbit architecture and Deployment Models">
+<p>
+<a href="arch\operate\index.html"><img align="left" style="margin:10px;padding:1px;border:1px solid black" src="../images/arch/thumb_ism.jpg" /></a>
+Find out more about the <a href="arch\overview.html">Jackrabbit Architecture</a> or
+learn more about the <a href="arch\deploy.html">Jackrabbit deployment Options</a> be
+it as an <a href="arch\deploy\howto-model1.html">embedded content repository</a> to be 
+delivered with you are application, a <a href="arch\deploy\howto-model2.html">shared repository</a> 
+for example in a J2EE environment or a classical <a href="arch\deploy\howto-model3.html">content repository server</a> setup.
+<br clear="all"/>
+</p>
+</section>
+<section name="Nodetype Modelling Guide">
+<p>
+</p>
+</section>
+</body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/index.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype.xml?rev=348959&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype.xml Fri Nov 25 06:43:06 2005
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+ <properties>
+  <title>Nodetype Modelling</title>
+ </properties>
+ <body>
+
+<section name="Nodetype Modelling Guidelines">
+<p>
+... under construction ...
+</p>
+</section>
+
+</body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/images/arch/thumb_ism.jpg
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/images/arch/thumb_ism.jpg?rev=348959&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/images/arch/thumb_ism.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/images/arch/thumb_jcr.jpg
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/images/arch/thumb_jcr.jpg?rev=348959&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/images/arch/thumb_jcr.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg