You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2012/01/10 19:51:06 UTC

svn commit: r1229679 [9/12] - /jackrabbit/site/trunk/content/

Added: jackrabbit/site/trunk/content/jackrabbit-text-extractors.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/jackrabbit-text-extractors.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/jackrabbit-text-extractors.cwiki (added)
+++ jackrabbit/site/trunk/content/jackrabbit-text-extractors.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,36 @@
+This is the Text Extractors component of the Apache Jackrabbit project. This component contains extractor classes that allow Jackrabbit to extract text content from binary properties for full text indexing.
+
+h3. Supported document formats
+
+The following document formats and MIME types are currently supported:
+
+* Microsoft Word (org.apache.jackrabbit.extractor.MsWordTextExtractor)
+ o application/vnd.ms-word
+ o application/msword
+* Microsoft Excel (org.apache.jackrabbit.extractor.MsExcelTextExtractor)
+ o application/vnd.ms-excel
+* Microsoft PowerPoint (org.apache.jackrabbit.extractor.MsPowerPointTextExtractor)
+ o application/vnd.ms-powerpoint
+ o application/mspowerpoint
+* Portable Document Format (PDF) (org.apache.jackrabbit.extractor.PdfTextExtractor)
+ o application/pdf
+* OpenOffice.org (org.apache.jackrabbit.extractor.OpenOfficeTextExtractor)
+ o application/vnd.oasis.opendocument.database
+ o application/vnd.oasis.opendocument.formula
+ o application/vnd.oasis.opendocument.graphics
+ o application/vnd.oasis.opendocument.presentation
+ o application/vnd.oasis.opendocument.spreadsheet
+ o application/vnd.oasis.opendocument.text
+* Rich Text Format (RTF) (org.apache.jackrabbit.extractor.RTFTextExtractor)
+ o application/rtf
+* HyperText Markup Language (HTML) (org.apache.jackrabbit.extractor.HTMLTextExtractor)
+ o text/html
+* Extensible Markup Language (XML) (org.apache.jackrabbit.extractor.XMLTextExtractor)
+ o text/xml
+
+h3. Using the text extractors
+
+To use these text extractors with the Jackrabbit Core:
+
+# add the jackrabbit-text-extractors jar file and the dependencies defined in the Maven POM in the Jackrabbit classpath, and
+# add the fully qualified class names listed above in the "textFilterClasses" parameter of the "SearchIndex" configuration element of a Jackrabbit workspace configuration file (workspace.xml).
\ No newline at end of file

Propchange: jackrabbit/site/trunk/content/jackrabbit-text-extractors.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/jackrabbit-text-extractors.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/jackrabbit-text-extractors.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/jackrabbit-text-extractors.mdtext (added)
+++ jackrabbit/site/trunk/content/jackrabbit-text-extractors.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,48 @@
+Title: Jackrabbit Text Extractors
+This is the Text Extractors component of the Apache Jackrabbit project.
+This component contains extractor classes that allow Jackrabbit to extract
+text content from binary properties for full text indexing.
+
+<a name="JackrabbitTextExtractors-Supporteddocumentformats"></a>
+### Supported document formats
+
+The following document formats and MIME types are currently supported:
+
+* Microsoft Word (org.apache.jackrabbit.extractor.MsWordTextExtractor)
+ o application/vnd.ms-word
+ o application/msword
+* Microsoft Excel (org.apache.jackrabbit.extractor.MsExcelTextExtractor)
+ o application/vnd.ms-excel
+* Microsoft PowerPoint
+(org.apache.jackrabbit.extractor.MsPowerPointTextExtractor)
+ o application/vnd.ms-powerpoint
+ o application/mspowerpoint
+* Portable Document Format (PDF)
+(org.apache.jackrabbit.extractor.PdfTextExtractor)
+ o application/pdf
+* OpenOffice.org (org.apache.jackrabbit.extractor.OpenOfficeTextExtractor)
+ o application/vnd.oasis.opendocument.database
+ o application/vnd.oasis.opendocument.formula
+ o application/vnd.oasis.opendocument.graphics
+ o application/vnd.oasis.opendocument.presentation
+ o application/vnd.oasis.opendocument.spreadsheet
+ o application/vnd.oasis.opendocument.text
+* Rich Text Format (RTF) (org.apache.jackrabbit.extractor.RTFTextExtractor)
+ o application/rtf
+* HyperText Markup Language (HTML)
+(org.apache.jackrabbit.extractor.HTMLTextExtractor)
+ o text/html
+* Extensible Markup Language (XML)
+(org.apache.jackrabbit.extractor.XMLTextExtractor)
+ o text/xml
+
+<a name="JackrabbitTextExtractors-Usingthetextextractors"></a>
+### Using the text extractors
+
+To use these text extractors with the Jackrabbit Core:
+
+1. add the jackrabbit-text-extractors jar file and the dependencies defined
+in the Maven POM in the Jackrabbit classpath, and
+1. add the fully qualified class names listed above in the
+"textFilterClasses" parameter of the "SearchIndex" configuration element of
+a Jackrabbit workspace configuration file (workspace.xml).

Propchange: jackrabbit/site/trunk/content/jackrabbit-text-extractors.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/jackrabbit-web-application.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/jackrabbit-web-application.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/jackrabbit-web-application.cwiki (added)
+++ jackrabbit/site/trunk/content/jackrabbit-web-application.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,24 @@
+This is the Web Application component of the Apache Jackrabbit project. This component provides servlets used to access a Jackrabbit repository:
+* [RepositoryAccessServlet.java|http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/j2ee/RepositoryAccessServlet.html]
+* [LoggingServlet.java|http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/j2ee/LoggingServlet.html]
+* [RepositoryStartupServlet.java|http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.html]
+
+In addition, the project contains 2 different WebDAV servlets:
+* [SimpleWebdavServlet.java|http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/simple/SimpleWebdavServlet.html]
+* [JCRWebdavServerServlet.java|http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/jcr/JCRWebdavServerServlet.html]
+
+All servlets are configured in the [web.xml|https://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-webapp/src/main/webapp/WEB-INF/web.xml] of the jackrabbit-webapp. It provides a good overview of the available options.
+
+h3. Simple Webdav Server
+
+Adds WebDAV support (DAV 1,2 and DeltaV) to your jackrabbit repository.
+
+The servlet configuration goes along with a [config.xml|https://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-webapp/src/main/webapp/WEB-INF/config.xml] that provides additional configuration options for the WebDAV resources including import and export behaviour for both resources and their properties, mime type and nodetype mappings and simple item filters.
+
+h3. JCR Webdav Server
+
+A servlet used to remote JSR170 calls via webDAV.
+
+IMPORTANT: Please note, that this servlet is not intended to provide common WebDAV support to the repository. Instead the primary goal is to remote JSR170 calls.
+
+For the corresponding JCR client see JCR to SPI and the _SPI to WebDAV_ contribution inside the Jackrabbit sandbox.

Propchange: jackrabbit/site/trunk/content/jackrabbit-web-application.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/jackrabbit-web-application.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/jackrabbit-web-application.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/jackrabbit-web-application.mdtext (added)
+++ jackrabbit/site/trunk/content/jackrabbit-web-application.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,36 @@
+Title: Jackrabbit Web Application
+This is the Web Application component of the Apache Jackrabbit project.
+This component provides servlets used to access a Jackrabbit repository:
+* [RepositoryAccessServlet.java](http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/j2ee/RepositoryAccessServlet.html)
+* [LoggingServlet.java](http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/j2ee/LoggingServlet.html)
+* [RepositoryStartupServlet.java](http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.html)
+
+In addition, the project contains 2 different WebDAV servlets:
+* [SimpleWebdavServlet.java](http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/simple/SimpleWebdavServlet.html)
+* [JCRWebdavServerServlet.java](http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/jcr/JCRWebdavServerServlet.html)
+
+All servlets are configured in the [web.xml](https://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-webapp/src/main/webapp/WEB-INF/web.xml)
+ of the jackrabbit-webapp. It provides a good overview of the available
+options.
+
+<a name="JackrabbitWebApplication-SimpleWebdavServer"></a>
+### Simple Webdav Server
+
+Adds WebDAV support (DAV 1,2 and DeltaV) to your jackrabbit repository.
+
+The servlet configuration goes along with a [config.xml](https://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-webapp/src/main/webapp/WEB-INF/config.xml)
+ that provides additional configuration options for the WebDAV resources
+including import and export behaviour for both resources and their
+properties, mime type and nodetype mappings and simple item filters.
+
+<a name="JackrabbitWebApplication-JCRWebdavServer"></a>
+### JCR Webdav Server
+
+A servlet used to remote JSR170 calls via webDAV.
+
+IMPORTANT: Please note, that this servlet is not intended to provide common
+WebDAV support to the repository. Instead the primary goal is to remote
+JSR170 calls.
+
+For the corresponding JCR client see JCR to SPI and the _SPI to WebDAV_
+contribution inside the Jackrabbit sandbox.

Propchange: jackrabbit/site/trunk/content/jackrabbit-web-application.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/jackrabbit-webdav-library.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/jackrabbit-webdav-library.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/jackrabbit-webdav-library.cwiki (added)
+++ jackrabbit/site/trunk/content/jackrabbit-webdav-library.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,13 @@
+This is the WebDAV Library component of the Apache Jackrabbit project. This component provides interfaces and common utility classes used for building a WebDAV server or client.
+
+The following RFCs have been integrated:
+* [RFC 4918|http://www.webdav.org/specs/rfc4918.html] (WebDAV - HTTP Extensions for Distributed Authoring, obsoleting RFC 2518)
+* [RFC 3253|http://www.webdav.org/specs/rfc3253.html] (DeltaV - Versioning Extensions to WebDAV)
+* [RFC 3648|http://www.webdav.org/specs/rfc3648.html] (Ordered Collections Protocol)
+* [RFC 3744|http://www.webdav.org/specs/rfc3744.html] (Access Control Protocol)
+* [RFC 5323|http://www.webdav.org/specs/rfc5323.html] (WebDAV SEARCH; previously DASL - DAV Searching and Locating)
+* [draft-ietf-webdav-bind|http://greenbytes.de/tech/webdav/draft-ietf-webdav-bind-latest.html] (Binding Extensions to Web Distributed Authoring and Versioning (WebDAV))
+
+In addition this library defines (unspecified)
+* Observation
+* Bundling multiple request with extensions to locking
\ No newline at end of file

Propchange: jackrabbit/site/trunk/content/jackrabbit-webdav-library.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/jackrabbit-webdav-library.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/jackrabbit-webdav-library.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/jackrabbit-webdav-library.mdtext (added)
+++ jackrabbit/site/trunk/content/jackrabbit-webdav-library.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,22 @@
+Title: Jackrabbit WebDAV Library
+This is the WebDAV Library component of the Apache Jackrabbit project. This
+component provides interfaces and common utility classes used for building
+a WebDAV server or client.
+
+The following RFCs have been integrated:
+* [RFC 4918](http://www.webdav.org/specs/rfc4918.html)
+ (WebDAV - HTTP Extensions for Distributed Authoring, obsoleting RFC 2518)
+* [RFC 3253](http://www.webdav.org/specs/rfc3253.html)
+ (DeltaV - Versioning Extensions to WebDAV)
+* [RFC 3648](http://www.webdav.org/specs/rfc3648.html)
+ (Ordered Collections Protocol)
+* [RFC 3744](http://www.webdav.org/specs/rfc3744.html)
+ (Access Control Protocol)
+* [RFC 5323](http://www.webdav.org/specs/rfc5323.html)
+ (WebDAV SEARCH; previously DASL - DAV Searching and Locating)
+* [draft-ietf-webdav-bind](http://greenbytes.de/tech/webdav/draft-ietf-webdav-bind-latest.html)
+ (Binding Extensions to Web Distributed Authoring and Versioning (WebDAV))
+
+In addition this library defines (unspecified)
+* Observation
+* Bundling multiple request with extensions to locking

Propchange: jackrabbit/site/trunk/content/jackrabbit-webdav-library.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/jcr-&-api.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/jcr-%26-api.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/jcr-&-api.cwiki (added)
+++ jackrabbit/site/trunk/content/jcr-&-api.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,46 @@
+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. The classes and interfaces within Apache Jackrabbit are only needed when accessing functionality that is not specified in JCR.
+
+Beyond the JCR API Jackrabbit features numerous extensions and administrational features that are needed to run a repository  but are not (yet) specified by JCR. (see [Jackrabbit Architecture])
+
+See the javadoc documentation of the JCR API and Apache Jackrabbit releases:
+
+* [JCR 2.0|http://www.day.com/maven/javax.jcr/javadocs/jcr-2.0/]
+* [Apache Jackrabbit 2.2|http://jackrabbit.apache.org/api/2.2/]
+* [Apache Jackrabbit 2.1|http://jackrabbit.apache.org/api/2.1/]
+* [Apache Jackrabbit 2.0|http://jackrabbit.apache.org/api/2.0/]
+
+* [JCR 1.0|http://www.day.com/maven/jsr170/javadocs/jcr-1.0/]
+* [Apache Jackrabbit 1.6|http://jackrabbit.apache.org/api/1.6/]
+* [Apache Jackrabbit 1.5|http://jackrabbit.apache.org/api/1.5/]
+* [Apache Jackrabbit 1.4|http://jackrabbit.apache.org/api/1.4/]
+* [Apache Jackrabbit 1.3|http://jackrabbit.apache.org/api/1.3/]
+* [Apache Jackrabbit 1.2|http://jackrabbit.apache.org/api/1.2.3/]
+* [Apache Jackrabbit 1.0|http://jackrabbit.apache.org/api-1/]
+
+h2. JSR-170 Levels
+
+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.   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.
+
+h3. Level 1 : Ease of Adoption, Covering many usecases
+
+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. 
+
+{center}!level-1.jpg!{center}
+
+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.
+
+h3. Level 2 : Writeable Repository
+
+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.
+
+{center}!level-2.jpg!{center}
+
+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 unstructured information.
+
+h3. Advanced Options
+
+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.
+
+{center}!level-adv.jpg!{center}
+
+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.
\ No newline at end of file

Propchange: jackrabbit/site/trunk/content/jcr-&-api.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/jcr-client-application-howto.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/jcr-client-application-howto.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/jcr-client-application-howto.cwiki (added)
+++ jackrabbit/site/trunk/content/jcr-client-application-howto.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,38 @@
+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.
+
+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.
+
+h2. J2EE web application instructions
+
+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.
+
+# Place the JCR API jar in the WEB-INF/lib subdirectory of your web application.
+# Declare the JNDI address under which you will request the repository instance in the deployment descriptor.
+# Code your application to use the resource.
+
+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.
+
+h3. Step 2 - Deployment descriptor
+
+Add the following snippet in your web.xml deployment descriptor to declare your application's use of a content repository resource.
+
+{code}
+<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>
+{code}
+
+Note that the java:comp/env/jcr subcontext is the preferred naming context for JCR content repository resources.
+
+h3. Step 3 - Java code
+
+Use the following Java code snippet to get a reference to the configured content repository instance.
+
+{code}
+InitialContext context = new InitialContext();
+Context environment = (Context) context.lookup("java:comp/env");
+Repository repository = (Repository) environment.lookup("jcr/repository");
+{code}
+

Propchange: jackrabbit/site/trunk/content/jcr-client-application-howto.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/jcr-client-application-howto.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/jcr-client-application-howto.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/jcr-client-application-howto.mdtext (added)
+++ jackrabbit/site/trunk/content/jcr-client-application-howto.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,60 @@
+Title: JCR client application HOWTO
+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.
+
+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.
+
+<a name="JCRclientapplicationHOWTO-J2EEwebapplicationinstructions"></a>
+## J2EE web application instructions
+
+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.
+
+1. Place the JCR API jar in the WEB-INF/lib subdirectory of your web
+application.
+1. Declare the JNDI address under which you will request the repository
+instance in the deployment descriptor.
+1. Code your application to use the resource.
+
+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.
+
+<a name="JCRclientapplicationHOWTO-Step2-Deploymentdescriptor"></a>
+### Step 2 - Deployment descriptor
+
+Add the following snippet in your web.xml deployment descriptor to declare
+your application's use of a content repository resource.
+
+
+    <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>
+
+
+Note that the java:comp/env/jcr subcontext is the preferred naming context
+for JCR content repository resources.
+
+<a name="JCRclientapplicationHOWTO-Step3-Javacode"></a>
+### Step 3 - Java code
+
+Use the following Java code snippet to get a reference to the configured
+content repository instance.
+
+
+    InitialContext context = new InitialContext();
+    Context environment = (Context) context.lookup("java:comp/env");
+    Repository repository = (Repository) environment.lookup("jcr/repository");
+
+

Propchange: jackrabbit/site/trunk/content/jcr-client-application-howto.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/jcr.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/jcr.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/jcr.cwiki (added)
+++ jackrabbit/site/trunk/content/jcr.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,3 @@
+The JCR API library is a core dependency for most of the [Jackrabbit components]. The {{jcr-1.0.jar}} file contains all the [javax.jcr interfaces|http://www.day.com/maven/jsr170/javadocs/jcr-1.0/] specified by [JSR 170|http://jcp.org/en/jsr/detail?id=170].
+
+The JCR API library is available under the [Day Spec License|http://www.day.com/maven/jsr170/licenses/day-spec-license.htm] and can be downloaded either from the [JCP web site|http://jcp.org/aboutJava/communityprocess/final/jsr170/index.html] or the [central Maven repository|http://repo1.maven.org/maven2/javax/jcr/jcr/1.0/].
\ No newline at end of file

Propchange: jackrabbit/site/trunk/content/jcr.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/jcr.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/jcr.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/jcr.mdtext (added)
+++ jackrabbit/site/trunk/content/jcr.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,10 @@
+Title: JCR
+The JCR API library is a core dependency for most of the [Jackrabbit components](jackrabbit-components.html)
+. The *jcr-1.0.jar* file contains all the [javax.jcr interfaces|http://www.day.com/maven/jsr170/javadocs/jcr-1.0/]
+ specified by [JSR 170|http://jcp.org/en/jsr/detail?id=170]
+.
+
+The JCR API library is available under the [Day Spec License](http://www.day.com/maven/jsr170/licenses/day-spec-license.htm)
+ and can be downloaded either from the [JCP web site|http://jcp.org/aboutJava/communityprocess/final/jsr170/index.html]
+ or the [central Maven repository|http://repo1.maven.org/maven2/javax/jcr/jcr/1.0/]
+.

Propchange: jackrabbit/site/trunk/content/jcr.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/mailing-lists.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/mailing-lists.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/mailing-lists.cwiki (added)
+++ jackrabbit/site/trunk/content/mailing-lists.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,32 @@
+Mailing lists are the primary communication channel of the Apache Jackrabbit project. See the Apache [mailing list|http://www.apache.org/foundation/mailinglists.html] and [email contribution|http://www.apache.org/dev/contrib-email-tips.html] pages for general information about mailing list usage and the expected behaviour on the mailing lists.
+
+The following lists are used by the Apache Jackrabbit project:
+
+|| Mailing list || Address || Subscribe || Unsubscribe ||
+| Jackrabbit Announcements List | [announce@jackrabbit.apache.org|mailto:announce@jackrabbit.apache.org] | [subscribe|mailto:announce-subscribe@jackrabbit.apache.org?subject=subscribe] | [unsubscribe|mailto:announce-unsubscribe@jackrabbit.apache.org?subject=unsubscribe] |
+| Jackrabbit Users List | [users@jackrabbit.apache.org|mailto:users@jackrabbit.apache.org] | [subscribe|mailto:users-subscribe@jackrabbit.apache.org?subject=subscribe] | [unsubscribe|mailto:users-unsubscribe@jackrabbit.apache.org?subject=unsubscribe] |
+| Jackrabbit Development List | [dev@jackrabbit.apache.org|mailto:dev@jackrabbit.apache.org] | [subscribe|mailto:dev-subscribe@jackrabbit.apache.org?subject=subscribe] | [unsubscribe|mailto:dev-unsubscribe@jackrabbit.apache.org?subject=unsubscribe] |
+| Jackrabbit Commits List | [commits@jackrabbit.apache.org|mailto:commits@jackrabbit.apache.org] | [subscribe|mailto:commits-subscribe@jackrabbit.apache.org?subject=subscribe] | [unsubscribe|mailto:commits-unsubscribe@jackrabbit.apache.org?subject=unsubscribe] |
+
+See the [ezmlm user manual|http://www.ezmlm.org/ezman/ezman1.html] and especially the sections on [subscribing|http://www.ezmlm.org/ezman/ezman1.html#ss1.3] and [unsubscribing|http://www.ezmlm.org/ezman/ezman1.html#ss1.4] for instructions on how to use the Jackrabbit mailing lists.
+
+h2. Trouble unsubscribing?
+
+If you have trouble unsubscribing from Jackrabbit mailing lists, you probably have subscribed some other address than the one you're trying to unsubscribe. To find out the address you are subscribed with, look for a {{Return-Path}} header in the source of one of the messages you've received from the mailing list. It should contain something like {{listname-return-1234-your.address=example.com@jackrabbit.apache.org}} which means that you're subscribed with {{your.address@example.com}}. You can turn that into an unsubscription request by replacing the "return-1234" part (the numbers change per message) with "unsubscribe", like this: {{listname-unsubscribe-your.address=example.com@jackrabbit.apache.org}}. Send a message to that address to unsubscribe.
+
+{note}
+Please do not send unsubscription requests directly to the normal mailing list addresses. If you have trouble unsubscribing and the above instructions don't work, you can ask [dev-owner@jackrabbit.apache.org|mailto:dev-owner@jackrabbit.apache.org] for help.
+{note}
+
+h2. Mailing list archives
+
+The Jackrabbit mailing lists are archived in many places that provide different features for browsing and searching the archives.
+
+|| Archive site || Jackrabbit Archives ||
+|  Apache       | [announce|http://mail-archives.apache.org/mod_mbox/jackrabbit-announce/] [users|http://mail-archives.apache.org/mod_mbox/jackrabbit-users/] [dev|http://mail-archives.apache.org/mod_mbox/jackrabbit-dev/] [commits|http://mail-archives.apache.org/mod_mbox/jackrabbit-commits/] | 
+| Gmane | [users|http://dir.gmane.org/gmane.comp.apache.jackrabbit.user] [dev|http://dir.gmane.org/gmane.comp.apache.jackrabbit.devel] |
+| The Mail Archive | [users|http://www.mail-archive.com/users@jackrabbit.apache.org] [dev|http://www.mail-archive.com/dev@jackrabbit.apache.org] |
+| Nabble | [users|http://www.nabble.com/Jackrabbit---Users-f14897.html] [dev|http://www.nabble.com/Jackrabbit---Dev-f371.html] |
+| MarkMail | [All Jackrabbit lists|http://jackrabbit.markmail.org/] |
+
+The raw list archives are also available as compressed mbox files at http://jackrabbit.apache.org/mail/.

Propchange: jackrabbit/site/trunk/content/mailing-lists.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/mailing-lists.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/mailing-lists.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/mailing-lists.mdtext (added)
+++ jackrabbit/site/trunk/content/mailing-lists.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,84 @@
+Title: Mailing Lists
+Mailing lists are the primary communication channel of the Apache
+Jackrabbit project. See the Apache [mailing list](http://www.apache.org/foundation/mailinglists.html)
+ and [email contribution|http://www.apache.org/dev/contrib-email-tips.html]
+ pages for general information about mailing list usage and the expected
+behaviour on the mailing lists.
+
+The following lists are used by the Apache Jackrabbit project:
+
+<table>
+<tr><th> Mailing list </th><th> Address </th><th> Subscribe </th><th> Unsubscribe </th></tr>
+<tr><td> Jackrabbit Announcements List </td><td> [announce@jackrabbit.apache.org](mailto:announce@jackrabbit.apache.org.html)
+ </td><td> [subscribe</td><td>mailto:announce-subscribe@jackrabbit.apache.org?subject=subscribe]
+ </td><td> [unsubscribe</td><td>mailto:announce-unsubscribe@jackrabbit.apache.org?subject=unsubscribe]
+ </td></tr>
+<tr><td> Jackrabbit Users List </td><td> [users@jackrabbit.apache.org](mailto:users@jackrabbit.apache.org.html)
+ </td><td> [subscribe</td><td>mailto:users-subscribe@jackrabbit.apache.org?subject=subscribe]
+ </td><td> [unsubscribe</td><td>mailto:users-unsubscribe@jackrabbit.apache.org?subject=unsubscribe]
+ </td></tr>
+<tr><td> Jackrabbit Development List </td><td> [dev@jackrabbit.apache.org](mailto:dev@jackrabbit.apache.org.html)
+ </td><td> [subscribe</td><td>mailto:dev-subscribe@jackrabbit.apache.org?subject=subscribe]
+ </td><td> [unsubscribe</td><td>mailto:dev-unsubscribe@jackrabbit.apache.org?subject=unsubscribe]
+ </td></tr>
+<tr><td> Jackrabbit Commits List </td><td> [commits@jackrabbit.apache.org](mailto:commits@jackrabbit.apache.org.html)
+ </td><td> [subscribe</td><td>mailto:commits-subscribe@jackrabbit.apache.org?subject=subscribe]
+ </td><td> [unsubscribe</td><td>mailto:commits-unsubscribe@jackrabbit.apache.org?subject=unsubscribe]
+ </td></tr>
+</table>
+
+See the [ezmlm user manual](http://www.ezmlm.org/ezman/ezman1.html)
+ and especially the sections on [subscribing|http://www.ezmlm.org/ezman/ezman1.html#ss1.3]
+ and [unsubscribing|http://www.ezmlm.org/ezman/ezman1.html#ss1.4]
+ for instructions on how to use the Jackrabbit mailing lists.
+
+<a name="MailingLists-Troubleunsubscribing?"></a>
+## Trouble unsubscribing?
+
+If you have trouble unsubscribing from Jackrabbit mailing lists, you
+probably have subscribed some other address than the one you're trying to
+unsubscribe. To find out the address you are subscribed with, look for a
+*Return-Path* header in the source of one of the messages you've received
+from the mailing list. It should contain something like
+*listname-return-1234-your.address=example.com@jackrabbit.apache.org*
+which means that you're subscribed with *your.address@example.com*. You
+can turn that into an unsubscription request by replacing the "return-1234"
+part (the numbers change per message) with "unsubscribe", like this:
+*listname-unsubscribe-your.address=example.com@jackrabbit.apache.org*.
+Send a message to that address to unsubscribe.
+
+{note}
+Please do not send unsubscription requests directly to the normal mailing
+list addresses. If you have trouble unsubscribing and the above
+instructions don't work, you can ask [dev-owner@jackrabbit.apache.org](mailto:dev-owner@jackrabbit.apache.org.html)
+ for help.
+{note}
+
+<a name="MailingLists-Mailinglistarchives"></a>
+## Mailing list archives
+
+The Jackrabbit mailing lists are archived in many places that provide
+different features for browsing and searching the archives.
+
+<table>
+<tr><th> Archive site </th><th> Jackrabbit Archives </th></tr>
+<tr><td>  Apache	</td><td> [announce](http://mail-archives.apache.org/mod_mbox/jackrabbit-announce/)
+ [users</td><td>http://mail-archives.apache.org/mod_mbox/jackrabbit-users/]
+ [dev</td><td>http://mail-archives.apache.org/mod_mbox/jackrabbit-dev/]
+ [commits</td><td>http://mail-archives.apache.org/mod_mbox/jackrabbit-commits/]
+ </td></tr>
+<tr><td> Gmane </td><td> [users](http://dir.gmane.org/gmane.comp.apache.jackrabbit.user)
+ [dev</td><td>http://dir.gmane.org/gmane.comp.apache.jackrabbit.devel]
+ </td></tr>
+<tr><td> The Mail Archive </td><td> [users](http://www.mail-archive.com/users@jackrabbit.apache.org)
+ [dev</td><td>http://www.mail-archive.com/dev@jackrabbit.apache.org]
+ </td></tr>
+<tr><td> Nabble </td><td> [users](http://www.nabble.com/Jackrabbit---Users-f14897.html)
+ [dev</td><td>http://www.nabble.com/Jackrabbit---Dev-f371.html]
+ </td></tr>
+<tr><td> MarkMail </td><td> [All Jackrabbit lists](http://jackrabbit.markmail.org/)
+ </td></tr>
+</table>
+
+The raw list archives are also available as compressed mbox files at
+http://jackrabbit.apache.org/mail/.

Propchange: jackrabbit/site/trunk/content/mailing-lists.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/mapping-atomic-fields.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/mapping-atomic-fields.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/mapping-atomic-fields.cwiki (added)
+++ jackrabbit/site/trunk/content/mapping-atomic-fields.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,116 @@
+The field-descriptor maps a bean attribute based on a Java primitive           type into a JCR property. By default, the persistence manager uses           the correct mapping in function of the attribute type (see below           the section "Supported Types").
+
+Based on our model defined here,           the following field-descriptor maps the bean field "title"           (String type) into the JCR property "my:title".
+
+h2. Supported Types
+
+ It is not necessary to specify the type in the field-descriptor.           The Persistence Manager uses the java introspection to get           information on each atomic field.
+|| Java Type || Jcr Type ||
+| String | STRING |
+| Boolean, boolean | BOOLEAN |
+| Double, double | DOUBLE |
+| Integer, int | DOUBLE |
+| Long, long | LONG |
+| byte\[\] | BINARY |
+| java.io.InputStream | BINARY |
+| java.util.Calendar | LONG (corresponding to Calendar.getTimeInMillis() |
+| java.sql.Timestamp | LONG (corresponding to Timestamp.getTime() |
+| java.util.Date | LONG (corresponding to java.util.Date.getTime() |
+
+ Due to some issues with Jackrabbit (mainly with xpath queries),           Calendar, Timestamp and date are converted into JCR LONG.           We plan to add other converters for those types in the next release.
+
+h2. Using Another Atomic Type Converter
+
+The OCM framework gives you the freedom to choose another kind of          mapping for atomic fields. For example, you can convert          java.util.Date bean field into a JCR Date type instead of a          JCR Long type. This can be done by writing your own atomic type          converter class.
+
+Let's start with a simple example. If you want to use a mapping           strategy which convert a boolean bean field into a JCR Long type,           you have to make the following steps:
+
+h3. Specify the converter class in the field descriptor
+
+{code}
+<class-descriptor
+    className="org.apache.jackrabbit.ocm.testmodel.Atomic"
+    jcrType="nt:unstructured">
+  <field-descriptor
+      fieldName="int2boolean" jcrName="int2boolean"
+      converter="org.apache.jackrabbit.ocm.persistence.atomic.Int2BooleanTypeConverterImpl" />
+</class-descriptor>
+{code}
+
+h3. Implement the converter class
+
+Use the interface             org.apache.jackrabbit.ocm.persistence.atomic.AtomicTypeConverter
+
+{code:title=Int2BooleanTypeConverterImpl.java}
+package org.apache.jackrabbit.ocm.persistence.atomic;
+
+import javax.jcr.Value;
+import javax.jcr.ValueFactory;
+
+import org.apache.jackrabbit.ocm.exception.IncorrectAtomicTypeException;
+import org.apache.jackrabbit.ocm.persistence.atomictypeconverter.AtomicTypeConverter;
+
+/**
+ * This is a simple converter which convert a boolean field value into a jcr long property.
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
+ */
+public class Int2BooleanTypeConverterImpl implements AtomicTypeConverter
+{
+  /**
+   *
+   * @see org.apache.jackrabbit.ocm.persistence.atomictypeconverter.AtomicTypeConverter#getValue(java.lang.Object)
+   */
+  public Value getValue(ValueFactory valueFactory, Object propValue)
+  {
+    if (propValue == null)
+    {
+      return null;
+    }
+    boolean value = ((Boolean) propValue).booleanValue();
+    int jcrValue = 0;
+
+    if (value)
+    {
+      jcrValue = 1;
+    }
+    return valueFactory.createValue(jcrValue);
+  }
+
+
+    /**
+     *
+     * @see org.apache.jackrabbit.ocm.persistence.atomictypeconverter.AtomicTypeConverter#getObject(javax.jcr.Value)
+     */
+  public Object getObject(Value value)
+    {
+      try
+      {
+        long jcrValue = value.getLong();
+        if (jcrValue == 1)
+        {
+           return new Boolean(true);
+        }
+        else
+        {
+           return new Boolean(false);
+        }
+    }
+    catch (Exception e)
+    {
+      throw new IncorrectAtomicTypeException("Impossible to convert the value : " + value.toString()  , e);
+    }
+    }
+
+  /**
+   *
+   * @see org.apache.jackrabbit.ocm.persistence.atomictypeconverter.AtomicTypeConverter#getStringValue(java.lang.Object)
+   */
+  public String getStringValue(Object object)
+  {
+
+    return ((Boolean) object).booleanValue() ? "1" : "0";
+  }
+
+}
+{code}

Propchange: jackrabbit/site/trunk/content/mapping-atomic-fields.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/mapping-atomic-fields.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/mapping-atomic-fields.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/mapping-atomic-fields.mdtext (added)
+++ jackrabbit/site/trunk/content/mapping-atomic-fields.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,149 @@
+Title: Mapping Atomic Fields
+The field-descriptor maps a bean attribute based on a Java primitive	   
+   type into a JCR property. By default, the persistence manager uses	   
+    the correct mapping in function of the attribute type (see below	   
+   the section "Supported Types").
+
+Based on our model defined here,	   the following field-descriptor
+maps the bean field "title"	      (String type) into the JCR property
+"my:title".
+
+<a name="MappingAtomicFields-SupportedTypes"></a>
+## Supported Types
+
+ It is not necessary to specify the type in the field-descriptor.	   
+The Persistence Manager uses the java introspection to get	    
+information on each atomic field.
+<table>
+<tr><th> Java Type </th><th> Jcr Type </th></tr>
+<tr><td> String </td><td> STRING </td></tr>
+<tr><td> Boolean, boolean </td><td> BOOLEAN </td></tr>
+<tr><td> Double, double </td><td> DOUBLE </td></tr>
+<tr><td> Integer, int </td><td> DOUBLE </td></tr>
+<tr><td> Long, long </td><td> LONG </td></tr>
+<tr><td> byte\[\](\.html)
+ </td><td> BINARY </td></tr>
+<tr><td> java.io.InputStream </td><td> BINARY </td></tr>
+<tr><td> java.util.Calendar </td><td> LONG (corresponding to Calendar.getTimeInMillis() </td></tr>
+<tr><td> java.sql.Timestamp </td><td> LONG (corresponding to Timestamp.getTime() </td></tr>
+<tr><td> java.util.Date </td><td> LONG (corresponding to java.util.Date.getTime() </td></tr>
+</table>
+
+ Due to some issues with Jackrabbit (mainly with xpath queries),	  
+Calendar, Timestamp and date are converted into JCR LONG.	    We plan
+to add other converters for those types in the next release.
+
+<a name="MappingAtomicFields-UsingAnotherAtomicTypeConverter"></a>
+## Using Another Atomic Type Converter
+
+The OCM framework gives you the freedom to choose another kind of	  
+mapping for atomic fields. For example, you can convert 	
+java.util.Date bean field into a JCR Date type instead of a	     JCR
+Long type. This can be done by writing your own atomic type	    
+converter class.
+
+Let's start with a simple example. If you want to use a mapping 	 
+strategy which convert a boolean bean field into a JCR Long type,	   
+you have to make the following steps:
+
+<a name="MappingAtomicFields-Specifytheconverterclassinthefielddescriptor"></a>
+### Specify the converter class in the field descriptor
+
+
+    <class-descriptor
+        className="org.apache.jackrabbit.ocm.testmodel.Atomic"
+        jcrType="nt:unstructured">
+      <field-descriptor
+          fieldName="int2boolean" jcrName="int2boolean"
+         
+converter="org.apache.jackrabbit.ocm.persistence.atomic.Int2BooleanTypeConverterImpl"
+/>
+    </class-descriptor>
+
+
+<a name="MappingAtomicFields-Implementtheconverterclass"></a>
+### Implement the converter class
+
+Use the interface	     
+org.apache.jackrabbit.ocm.persistence.atomic.AtomicTypeConverter
+
+<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Int2BooleanTypeConverterImpl.java</B></DIV><DIV class="codeContent panelContent">
+    package org.apache.jackrabbit.ocm.persistence.atomic;
+    
+    import javax.jcr.Value;
+    import javax.jcr.ValueFactory;
+    
+    import org.apache.jackrabbit.ocm.exception.IncorrectAtomicTypeException;
+    import
+org.apache.jackrabbit.ocm.persistence.atomictypeconverter.AtomicTypeConverter;
+    
+    /**
+     * This is a simple converter which convert a boolean field value into a
+jcr long property.
+     *
+     * @author <a href="mailto:christophe.lombart@gmail.com">Christophe
+Lombart</a>
+     */
+    public class Int2BooleanTypeConverterImpl implements AtomicTypeConverter
+    {
+      /**
+       *
+       * @see
+org.apache.jackrabbit.ocm.persistence.atomictypeconverter.AtomicTypeConverter#getValue(java.lang.Object)
+       */
+      public Value getValue(ValueFactory valueFactory, Object propValue)
+      {
+        if (propValue == null)
+        {
+          return null;
+        }
+        boolean value = ((Boolean) propValue).booleanValue();
+        int jcrValue = 0;
+    
+        if (value)
+        {
+          jcrValue = 1;
+        }
+        return valueFactory.createValue(jcrValue);
+      }
+    
+    
+        /**
+         *
+         * @see
+org.apache.jackrabbit.ocm.persistence.atomictypeconverter.AtomicTypeConverter#getObject(javax.jcr.Value)
+         */
+      public Object getObject(Value value)
+        {
+          try
+          {
+    	long jcrValue = value.getLong();
+    	if (jcrValue == 1)
+    	{
+    	   return new Boolean(true);
+    	}
+    	else
+    	{
+    	   return new Boolean(false);
+    	}
+        }
+        catch (Exception e)
+        {
+          throw new IncorrectAtomicTypeException("Impossible to convert the
+value : " + value.toString()  , e);
+        }
+        }
+    
+      /**
+       *
+       * @see
+org.apache.jackrabbit.ocm.persistence.atomictypeconverter.AtomicTypeConverter#getStringValue(java.lang.Object)
+       */
+      public String getStringValue(Object object)
+      {
+    
+        return ((Boolean) object).booleanValue() ? "1" : "0";
+      }
+    
+    }
+

Propchange: jackrabbit/site/trunk/content/mapping-atomic-fields.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/mapping-bean-fields.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/mapping-bean-fields.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/mapping-bean-fields.cwiki (added)
+++ jackrabbit/site/trunk/content/mapping-bean-fields.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,127 @@
+ The bean-descriptor maps a bean attribute into one JCR node           (or a set of properties). Generally, this attribute is an           object based on a custom class.
+
+ Based on our model defined here,           the following bean-descriptor is used to map the bean field           "pageInfo" (PageInfo class) into the JCR node called "pageInfo".
+
+ The PageInfo class has a corresponding class-descriptor in the           mapping file. By this way, the Persistence Manager can map each           PageInfo attributes. It is not necessary to specify the type in           the bean-descriptor. The Persistence Manager uses the Java           introspection to get information on the each bean fields.
+
+h2. The JCR Structure
+
+Following our example, the resulting JCR structure is:
+
+{code}
+/mysite/page1
+  /mysite/page1/pageInfo
+       my:title = "This is my page title"
+       my:description = "This is my page description"
+  ... other subnodes for page1 ...
+{code}
+
+By default, the persistence manager will create a subnode           (/mysite/page1/pageInfo) for the bean-descriptor pageInfo.
+
+h2. Using Another Bean Converter
+
+The OCM framework gives you the freedom to choose another kind            of mapping for bean fields. For example, you can use a custom            bean converter to access to the parent node (see the next            section below).
+
+This can be done by writing your own bean converter class and            reference this class in the bean-descriptor.
+
+h3. Predefined Bean Converters
+
+ Here is the list of existing custom  bean converters:
+|| Custom Bean Converter Class || Description ||
+| org.apache.jackrabbit.ocm.persistence.beanconverter.impl.ParentBeanConverterImpl | Map a bean field to the parent node. it is used to access to the               parent object in read-only mode. See below the example based on               a Folder object. |
+| org.apache.jackrabbit.ocm.persistence.beanconverter.impl.InlineBeanConverterImpl | Bean converter used to map some node properties into one nested               bean field. The corresponding bean field is not associated to a               subnode. |
+
+If you want to use one of this bean converter, you have to           reference it into a bean-field descriptor.
+
+The following descriptor bean-descriptor contains a reference to           its parent folder (parentFolder attribute). Now the CmsObjectImpl           object has an attribute (parentFolder) that contains a reference           to the parent node.
+
+{code}
+<class-descriptor
+    className="org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
+    jcrType="my:cmsobjectimpl" >
+  <field-descriptor fieldName="path" path="true" />
+  <field-descriptor fieldName="name" jcrName="my:name" id="true" />
+  <bean-descriptor
+      fieldName="parentFolder"
+      converter="org.apache.jackrabbit.ocm.persistence.beanconverter.impl.ParentBeanConverterImpl" />
+</class-descriptor>
+{code}
+
+h3. Building your own Bean Converters
+
+Here is the different steps used to create a new bean converter :
+
+First, specify the converter class in the bean descriptor:
+
+{code}
+<class-descriptor
+    className="org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
+    jcrType="my:cmsobjectimpl" >
+  <bean-descriptor
+      fieldName="parentFolder"
+      converter="org.apache.jackrabbit.ocm.persistence.beanconverter.impl.ParentBeanConverterImpl" />
+</class-descriptor>
+{code}
+
+Then, implement the converter class (based on the interface           org.apache.jackrabbit.ocm.persistence.beanconverter.BeanConverter).
+
+Your bean converter class can also extends the class           AbstractBeanConverterImpl to have a default implementation for           some methods.
+
+{code:title=ParentBeanConverterImpl.java}
+import javax.jcr.Node;
+import javax.jcr.Session;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jackrabbit.ocm.exception.JcrMappingException;
+import org.apache.jackrabbit.ocm.exception.PersistenceException;
+import org.apache.jackrabbit.ocm.exception.RepositoryException;
+import org.apache.jackrabbit.ocm.mapper.Mapper;
+import org.apache.jackrabbit.ocm.mapper.model.BeanDescriptor;
+import org.apache.jackrabbit.ocm.mapper.model.ClassDescriptor;
+import org.apache.jackrabbit.ocm.persistence.atomictypeconverter.AtomicTypeConverterProvider;
+import org.apache.jackrabbit.ocm.persistence.beanconverter.BeanConverter;
+import org.apache.jackrabbit.ocm.persistence.objectconverter.ObjectConverter;
+/**
+ *
+ * Bean converter used to access to the parent object.
+ *
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
+ *
+ */
+public class ParentBeanConverterImpl extends AbstractBeanConverterImpl  implements BeanConverter {
+
+  private final static Log log = LogFactory.getLog(ParentBeanConverterImpl.class);
+
+  public ParentBeanConverterImpl(Mapper mapper, ObjectConverter objectConverter, AtomicTypeConverterProvider atomicTypeConverterProvider)
+  {
+    super(mapper, objectConverter, atomicTypeConverterProvider);
+  }
+
+  public void insert(Session session, Node parentNode, BeanDescriptor beanDescriptor, ClassDescriptor beanClassDescriptor, Object object, ClassDescriptor parentClassDescriptor, Object parent)
+      throws PersistenceException, RepositoryException,   JcrMappingException {
+
+      // Add code to insert the object
+  }
+
+  public void update(Session session, Node parentNode, BeanDescriptor beanDescriptor, ClassDescriptor beanClassDescriptor, Object object, ClassDescriptor parentClassDescriptor, Object parent)
+      throws PersistenceException, RepositoryException,  JcrMappingException {
+
+      // Add code to update the object
+  }
+
+  public Object getObject(Session session, Node parentNode, BeanDescriptor beanDescriptor, ClassDescriptor beanClassDescriptor, Class beanClass, Object parent)
+      throws PersistenceException, RepositoryException,JcrMappingException {
+
+      // Add code to retrieve the object
+  }
+
+  public void remove(Session session, Node parentNode, BeanDescriptor beanDescriptor, ClassDescriptor beanClassDescriptor, Object object, ClassDescriptor parentClassDescriptor, Object parent)
+            throws PersistenceException,  RepositoryException, JcrMappingException {
+
+      // Add the code to remove the object
+  }
+
+}
+{code}

Propchange: jackrabbit/site/trunk/content/mapping-bean-fields.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/mapping-bean-fields.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/mapping-bean-fields.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/mapping-bean-fields.mdtext (added)
+++ jackrabbit/site/trunk/content/mapping-bean-fields.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,186 @@
+Title: Mapping Bean Fields
+ The bean-descriptor maps a bean attribute into one JCR node	       (or
+a set of properties). Generally, this attribute is an		object
+based on a custom class.
+
+ Based on our model defined here,	    the following bean-descriptor
+is used to map the bean field		"pageInfo" (PageInfo class) into
+the JCR node called "pageInfo".
+
+ The PageInfo class has a corresponding class-descriptor in the 	 
+mapping file. By this way, the Persistence Manager can map each 	 
+PageInfo attributes. It is not necessary to specify the type in 	 
+the bean-descriptor. The Persistence Manager uses the Java	    
+introspection to get information on the each bean fields.
+
+<a name="MappingBeanFields-TheJCRStructure"></a>
+## The JCR Structure
+
+Following our example, the resulting JCR structure is:
+
+
+    /mysite/page1
+      /mysite/page1/pageInfo
+           my:title = "This is my page title"
+           my:description = "This is my page description"
+      ... other subnodes for page1 ...
+
+
+By default, the persistence manager will create a subnode	   
+(/mysite/page1/pageInfo) for the bean-descriptor pageInfo.
+
+<a name="MappingBeanFields-UsingAnotherBeanConverter"></a>
+## Using Another Bean Converter
+
+The OCM framework gives you the freedom to choose another kind		 
+of mapping for bean fields. For example, you can use a custom		
+bean converter to access to the parent node (see the next	    
+section below).
+
+This can be done by writing your own bean converter class and		
+reference this class in the bean-descriptor.
+
+<a name="MappingBeanFields-PredefinedBeanConverters"></a>
+### Predefined Bean Converters
+
+ Here is the list of existing custom  bean converters:
+<table>
+<tr><th> Custom Bean Converter Class </th><th> Description </th></tr>
+<tr><td>
+org.apache.jackrabbit.ocm.persistence.beanconverter.impl.ParentBeanConverterImpl
+</td><td> Map a bean field to the parent node. it is used to access to the	   
+     parent object in read-only mode. See below the example based on	   
+       a Folder object. </td></tr>
+<tr><td>
+org.apache.jackrabbit.ocm.persistence.beanconverter.impl.InlineBeanConverterImpl
+</td><td> Bean converter used to map some node properties into one nested	   
+    bean field. The corresponding bean field is not associated to a	   
+      subnode. </td></tr>
+</table>
+
+If you want to use one of this bean converter, you have to	    
+reference it into a bean-field descriptor.
+
+The following descriptor bean-descriptor contains a reference to	  
+its parent folder (parentFolder attribute). Now the CmsObjectImpl	   
+object has an attribute (parentFolder) that contains a reference	  
+to the parent node.
+
+
+    <class-descriptor
+       
+className="org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
+        jcrType="my:cmsobjectimpl" >
+      <field-descriptor fieldName="path" path="true" />
+      <field-descriptor fieldName="name" jcrName="my:name" id="true" />
+      <bean-descriptor
+          fieldName="parentFolder"
+         
+converter="org.apache.jackrabbit.ocm.persistence.beanconverter.impl.ParentBeanConverterImpl"
+/>
+    </class-descriptor>
+
+
+<a name="MappingBeanFields-BuildingyourownBeanConverters"></a>
+### Building your own Bean Converters
+
+Here is the different steps used to create a new bean converter :
+
+First, specify the converter class in the bean descriptor:
+
+
+    <class-descriptor
+       
+className="org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
+        jcrType="my:cmsobjectimpl" >
+      <bean-descriptor
+          fieldName="parentFolder"
+         
+converter="org.apache.jackrabbit.ocm.persistence.beanconverter.impl.ParentBeanConverterImpl"
+/>
+    </class-descriptor>
+
+
+Then, implement the converter class (based on the interface	     
+org.apache.jackrabbit.ocm.persistence.beanconverter.BeanConverter).
+
+Your bean converter class can also extends the class	      
+AbstractBeanConverterImpl to have a default implementation for		
+some methods.
+
+<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>ParentBeanConverterImpl.java</B></DIV><DIV class="codeContent panelContent">
+    import javax.jcr.Node;
+    import javax.jcr.Session;
+    
+    import org.apache.commons.logging.Log;
+    import org.apache.commons.logging.LogFactory;
+    import org.apache.jackrabbit.ocm.exception.JcrMappingException;
+    import org.apache.jackrabbit.ocm.exception.PersistenceException;
+    import org.apache.jackrabbit.ocm.exception.RepositoryException;
+    import org.apache.jackrabbit.ocm.mapper.Mapper;
+    import org.apache.jackrabbit.ocm.mapper.model.BeanDescriptor;
+    import org.apache.jackrabbit.ocm.mapper.model.ClassDescriptor;
+    import
+org.apache.jackrabbit.ocm.persistence.atomictypeconverter.AtomicTypeConverterProvider;
+    import org.apache.jackrabbit.ocm.persistence.beanconverter.BeanConverter;
+    import
+org.apache.jackrabbit.ocm.persistence.objectconverter.ObjectConverter;
+    /**
+     *
+     * Bean converter used to access to the parent object.
+     *
+     *
+     * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe
+</a>
+     *
+     */
+    public class ParentBeanConverterImpl extends AbstractBeanConverterImpl 
+implements BeanConverter {
+    
+      private final static Log log =
+LogFactory.getLog(ParentBeanConverterImpl.class);
+    
+      public ParentBeanConverterImpl(Mapper mapper, ObjectConverter
+objectConverter, AtomicTypeConverterProvider atomicTypeConverterProvider)
+      {
+        super(mapper, objectConverter, atomicTypeConverterProvider);
+      }
+    
+      public void insert(Session session, Node parentNode, BeanDescriptor
+beanDescriptor, ClassDescriptor beanClassDescriptor, Object object,
+ClassDescriptor parentClassDescriptor, Object parent)
+          throws PersistenceException, RepositoryException,  
+JcrMappingException {
+    
+          // Add code to insert the object
+      }
+    
+      public void update(Session session, Node parentNode, BeanDescriptor
+beanDescriptor, ClassDescriptor beanClassDescriptor, Object object,
+ClassDescriptor parentClassDescriptor, Object parent)
+          throws PersistenceException, RepositoryException, 
+JcrMappingException {
+    
+          // Add code to update the object
+      }
+    
+      public Object getObject(Session session, Node parentNode, BeanDescriptor
+beanDescriptor, ClassDescriptor beanClassDescriptor, Class beanClass,
+Object parent)
+          throws PersistenceException, RepositoryException,JcrMappingException
+{
+    
+          // Add code to retrieve the object
+      }
+    
+      public void remove(Session session, Node parentNode, BeanDescriptor
+beanDescriptor, ClassDescriptor beanClassDescriptor, Object object,
+ClassDescriptor parentClassDescriptor, Object parent)
+    	    throws PersistenceException,  RepositoryException,
+JcrMappingException {
+    
+          // Add the code to remove the object
+      }
+    
+    }
+

Propchange: jackrabbit/site/trunk/content/mapping-bean-fields.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/mapping-collection-fields.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/mapping-collection-fields.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/mapping-collection-fields.cwiki (added)
+++ jackrabbit/site/trunk/content/mapping-collection-fields.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,64 @@
+The collection-descriptor maps a collection attribute into JCR nodes or in a multivalue property.
+
+Based on our model defined here, the following collection-descriptor is used to map the "paragraphs" field into the JCR node called "paragraphs".
+
+{code}
+<class-descriptor
+    className="org.apache.jackrabbit.ocm.testmodel.Page"
+    jcrType="my:page">
+  <collection-descriptor
+      fieldName="paragraphs" jcrName="paragraphs"
+      elementClassName="org.apache.jackrabbit.ocm.testmodel.Paragraph" />
+  <!-- other field, bean and collection mapping here !-->
+</class-descriptor>
+
+<class-descriptor
+    className="org.apache.jackrabbit.ocm.testmodel.Paragraph"
+    jcrType="my:paragraph">
+  <field-descriptor fieldName="path" path="true" />
+  <field-descriptor fieldName="text" jcrName="my:text"/>
+</class-descriptor>
+{code}
+
+The collection-descriptor contains the elementClassName attribute which specify the collection element class. A class descriptor for the element class has also to be defined.
+
+h2. The JCR Structure
+
+Following our example, the resulting JCR structure is:
+
+{code}
+/mysite/page1
+  /mysite/page1/paragraphs
+    /mysite/page1/paragraphs/collection-element1
+      my:text = "This is the content of para1"
+    /mysite/page1/paragraphs/collection-element2
+      my:text = "This is the content of para2"
+  ... other subnodes for page1 ...
+{code}
+
+By default, the persistence manager will create a subnode (/mysite/page1/paragraphs). This one will contains the different paragraphs.
+
+As explained in the following sections, it is possible to map to another JCR structure. It is also possible to use another name for the jcr node names (see above).
+
+h2. Supported Collection and Map Types
+
+The OCM framework is supporting the following java types:
+
+* *Collections* Collection, List, Set, ArrayList, Vector, HashSet
+* *Maps* Map, HashMap
+
+h2. Using Another Collection or Map
+
+It is possible to support other Collection or Map types with the ManageableCollection interface.
+
+h2. Using Another Collection Converter
+
+TODO
+
+h2. Predefined Collection Converters
+
+TODO
+
+h2. Building your own Collection Converters
+
+TODO

Propchange: jackrabbit/site/trunk/content/mapping-collection-fields.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/mapping-collection-fields.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/mapping-collection-fields.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/mapping-collection-fields.mdtext (added)
+++ jackrabbit/site/trunk/content/mapping-collection-fields.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,80 @@
+Title: Mapping Collection Fields
+The collection-descriptor maps a collection attribute into JCR nodes or in
+a multivalue property.
+
+Based on our model defined here, the following collection-descriptor is
+used to map the "paragraphs" field into the JCR node called "paragraphs".
+
+
+    <class-descriptor
+        className="org.apache.jackrabbit.ocm.testmodel.Page"
+        jcrType="my:page">
+      <collection-descriptor
+          fieldName="paragraphs" jcrName="paragraphs"
+          elementClassName="org.apache.jackrabbit.ocm.testmodel.Paragraph" />
+      <!-- other field, bean and collection mapping here !-->
+    </class-descriptor>
+    
+    <class-descriptor
+        className="org.apache.jackrabbit.ocm.testmodel.Paragraph"
+        jcrType="my:paragraph">
+      <field-descriptor fieldName="path" path="true" />
+      <field-descriptor fieldName="text" jcrName="my:text"/>
+    </class-descriptor>
+
+
+The collection-descriptor contains the elementClassName attribute which
+specify the collection element class. A class descriptor for the element
+class has also to be defined.
+
+<a name="MappingCollectionFields-TheJCRStructure"></a>
+## The JCR Structure
+
+Following our example, the resulting JCR structure is:
+
+
+    /mysite/page1
+      /mysite/page1/paragraphs
+        /mysite/page1/paragraphs/collection-element1
+          my:text = "This is the content of para1"
+        /mysite/page1/paragraphs/collection-element2
+          my:text = "This is the content of para2"
+      ... other subnodes for page1 ...
+
+
+By default, the persistence manager will create a subnode
+(/mysite/page1/paragraphs). This one will contains the different
+paragraphs.
+
+As explained in the following sections, it is possible to map to another
+JCR structure. It is also possible to use another name for the jcr node
+names (see above).
+
+<a name="MappingCollectionFields-SupportedCollectionandMapTypes"></a>
+## Supported Collection and Map Types
+
+The OCM framework is supporting the following java types:
+
+* *Collections* Collection, List, Set, ArrayList, Vector, HashSet
+* *Maps* Map, HashMap
+
+<a name="MappingCollectionFields-UsingAnotherCollectionorMap"></a>
+## Using Another Collection or Map
+
+It is possible to support other Collection or Map types with the
+ManageableCollection interface.
+
+<a name="MappingCollectionFields-UsingAnotherCollectionConverter"></a>
+## Using Another Collection Converter
+
+TODO
+
+<a name="MappingCollectionFields-PredefinedCollectionConverters"></a>
+## Predefined Collection Converters
+
+TODO
+
+<a name="MappingCollectionFields-BuildingyourownCollectionConverters"></a>
+## Building your own Collection Converters
+
+TODO

Propchange: jackrabbit/site/trunk/content/mapping-collection-fields.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/mapping-stategies.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/mapping-stategies.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/mapping-stategies.cwiki (added)
+++ jackrabbit/site/trunk/content/mapping-stategies.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,105 @@
+We are calling "Mapping strategy" the algorithm used by the Persistence Manager to map a Java class into JCR nodes and/or properties.
+
+h2. The Object Model
+
+In order to explain the basic mapping strategies, we will use the following simple object model :
+
+* A page contains a path (of course), a pageInfo and a collection of paragraphs.
+* The PageInfo class contains the title and the page description. We are using the pageInfo here to see all mapping features (see the bean-descriptors). In real application, this class is not necessary :-)
+* Each paragraph contains a path and a text field.
+
+{center}!sample-model-doc.png!{center}
+
+This object model could be too simple for real applications and it is just used here to simplify the description of the different mapping strategies.
+
+h2. The Java Classes
+
+Based on that object model, we can define the following Java classes:
+
+{code:title=Page.java}
+public class Page
+{
+  String path;
+  PageInfo pageInfo;
+  Collection paragraphs;
+
+  /*  Add here the getter and setter methods */
+
+  public void addParagraph(Paragraph paragraph)
+  {
+    if (paragraphs == null)
+    {
+      paragraphs = new ArrayList();
+    }
+
+    paragraphs.add(paragraph);
+  }
+}
+{code}
+
+{code:title=PageInfo.java}
+public class PageInfo
+{
+  String path;
+  String title;
+  String description;
+
+  /*  Add here the getter and setter methods */
+
+}
+{code}
+
+{code:title=Paragraph.java}
+public class Paragraph
+{
+  private String path;
+  private String text;
+
+  /* Add here the getter and setter methods */
+
+}
+{code}
+
+h2. The JCR Structure
+
+Here is the resulting JCR structure if the page is stored on the path "/mysite/mypage1" and contains 2 paragraphs:
+
+{code}
+/mysite/page1
+  /mysite/page1/pageInfo
+    my:title = "This is my page title"
+    my:description = "This is my page description"
+  /mysite/page1/paragraphs
+    /mysite/page1/paragraphs/paragraph1
+      my:text = "This is the content of para1"
+    /mysite/page1/paragraphs/paragraph2
+      my:text = "This is the content of para2"
+{code}
+ 
+It is possible to have another kind of jcr structure by using other mapping strategies. See the sections [Mapping Atomic Fields], [Mapping Bean Fields], [Mapping Collection Fields] to get more information on that.
+
+h2. The Class Descriptors
+
+When you decide to map a bean class, you have to create a new class descriptor entry in the Persistence Manager descriptor file. Let's start with the simplest class-descriptor:
+
+This class descriptor maps the class "org.apache.jackrabbit.ocm.testmodel.Paragraph" into the JCR type "nt:unstructured". Each field-descriptor maps one bean field into a JCR property. For example, the first field descriptor maps the java bean field "text" into the jcr property called "myjcrtext". The second field-descriptor is a specific case because it maps the jcr node path into a bean field called "path" (see below the section "The Path Field").
+
+You can find more information on the field-descriptors in the page [Mapping Atomic Fields].
+
+It is also possible to map a bean class to a particular JCR node type by specifying the desired type in the attribute jcrType. The following class-descriptor map the class "org.apache.jackrabbit.ocm.testmodel.Paragraph" into the node type "my:paragraph".
+
+Here are the class-descriptors required to map the classes Page, PageInfo and Paragraph:
+
+In order to use correctly our example class with Apache Jackrabbit, you should import the following node type definitions with the Jackrabbit API.
+
+Of course, node types "my:Page" and "my:PageInfo" are also required.
+
+We are currently building a node type management tools which can import the node types from the class-descriptors.
+
+h2. The Path Field
+
+Each mapped class contains a mandatory field called the "path field". It contains the JCR path associated to the object. For example, the following descriptor specify the bean field "myPath" as the path field.
+
+{code}
+<field-descriptor fieldName="myPath" path="true" />
+{code}

Propchange: jackrabbit/site/trunk/content/mapping-stategies.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/mapping-stategies.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/mapping-stategies.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/mapping-stategies.mdtext (added)
+++ jackrabbit/site/trunk/content/mapping-stategies.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,140 @@
+Title: Mapping Stategies
+We are calling "Mapping strategy" the algorithm used by the Persistence
+Manager to map a Java class into JCR nodes and/or properties.
+
+<a name="MappingStategies-TheObjectModel"></a>
+## The Object Model
+
+In order to explain the basic mapping strategies, we will use the following
+simple object model :
+
+* A page contains a path (of course), a pageInfo and a collection of
+paragraphs.
+* The PageInfo class contains the title and the page description. We are
+using the pageInfo here to see all mapping features (see the
+bean-descriptors). In real application, this class is not necessary :-)
+* Each paragraph contains a path and a text field.
+
+{center}!sample-model-doc.png!{center}
+
+This object model could be too simple for real applications and it is just
+used here to simplify the description of the different mapping strategies.
+
+<a name="MappingStategies-TheJavaClasses"></a>
+## The Java Classes
+
+Based on that object model, we can define the following Java classes:
+
+<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Page.java</B></DIV><DIV class="codeContent panelContent">
+    public class Page
+    {
+      String path;
+      PageInfo pageInfo;
+      Collection paragraphs;
+    
+      /*  Add here the getter and setter methods */
+    
+      public void addParagraph(Paragraph paragraph)
+      {
+        if (paragraphs == null)
+        {
+          paragraphs = new ArrayList();
+        }
+    
+        paragraphs.add(paragraph);
+      }
+    }
+
+
+<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>PageInfo.java</B></DIV><DIV class="codeContent panelContent">
+    public class PageInfo
+    {
+      String path;
+      String title;
+      String description;
+    
+      /*  Add here the getter and setter methods */
+    
+    }
+
+
+<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Paragraph.java</B></DIV><DIV class="codeContent panelContent">
+    public class Paragraph
+    {
+      private String path;
+      private String text;
+    
+      /* Add here the getter and setter methods */
+    
+    }
+
+
+<a name="MappingStategies-TheJCRStructure"></a>
+## The JCR Structure
+
+Here is the resulting JCR structure if the page is stored on the path
+"/mysite/mypage1" and contains 2 paragraphs:
+
+
+    /mysite/page1
+      /mysite/page1/pageInfo
+        my:title = "This is my page title"
+        my:description = "This is my page description"
+      /mysite/page1/paragraphs
+        /mysite/page1/paragraphs/paragraph1
+          my:text = "This is the content of para1"
+        /mysite/page1/paragraphs/paragraph2
+          my:text = "This is the content of para2"
+
+ 
+It is possible to have another kind of jcr structure by using other mapping
+strategies. See the sections [Mapping Atomic Fields](mapping-atomic-fields.html)
+, [Mapping Bean Fields]
+, [Mapping Collection Fields]
+ to get more information on that.
+
+<a name="MappingStategies-TheClassDescriptors"></a>
+## The Class Descriptors
+
+When you decide to map a bean class, you have to create a new class
+descriptor entry in the Persistence Manager descriptor file. Let's start
+with the simplest class-descriptor:
+
+This class descriptor maps the class
+"org.apache.jackrabbit.ocm.testmodel.Paragraph" into the JCR type
+"nt:unstructured". Each field-descriptor maps one bean field into a JCR
+property. For example, the first field descriptor maps the java bean field
+"text" into the jcr property called "myjcrtext". The second
+field-descriptor is a specific case because it maps the jcr node path into
+a bean field called "path" (see below the section "The Path Field").
+
+You can find more information on the field-descriptors in the page [Mapping Atomic Fields](mapping-atomic-fields.html)
+.
+
+It is also possible to map a bean class to a particular JCR node type by
+specifying the desired type in the attribute jcrType. The following
+class-descriptor map the class
+"org.apache.jackrabbit.ocm.testmodel.Paragraph" into the node type
+"my:paragraph".
+
+Here are the class-descriptors required to map the classes Page, PageInfo
+and Paragraph:
+
+In order to use correctly our example class with Apache Jackrabbit, you
+should import the following node type definitions with the Jackrabbit API.
+
+Of course, node types "my:Page" and "my:PageInfo" are also required.
+
+We are currently building a node type management tools which can import the
+node types from the class-descriptors.
+
+<a name="MappingStategies-ThePathField"></a>
+## The Path Field
+
+Each mapped class contains a mandatory field called the "path field". It
+contains the JCR path associated to the object. For example, the following
+descriptor specify the bean field "myPath" as the path field.
+
+
+    <field-descriptor fieldName="myPath" path="true" />
+

Propchange: jackrabbit/site/trunk/content/mapping-stategies.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/navigation.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/navigation.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/navigation.cwiki (added)
+++ jackrabbit/site/trunk/content/navigation.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,33 @@
+* Apache Jackrabbit 
+** [Welcome|Welcome to Apache Jackrabbit] 
+** [Downloads] 
+** [Articles]
+** [FAQ|Frequently Asked Questions] 
+** [Jackrabbit Wiki|http://wiki.apache.org/jackrabbit/FrontPage] 
+** [Jackrabbit History] 
+* Documentation 
+** [Getting Started|Getting Started with Apache Jackrabbit] 
+** [Standalone Server] 
+** [Jackrabbit Components] 
+** [First Hops] 
+** [JCR & API] 
+** [Jackrabbit Architecture] 
+** [Deployment Models] 
+** [Jackrabbit Configuration] 
+** [Node Types] 
+** [Object Content Mapping] 
+* Development 
+** [Jackrabbit Team] 
+** [Jackrabbit Roadmap] 
+** [Building Jackrabbit] 
+** [Mailing Lists] 
+** [Issue Tracker] 
+** [Source Repository] 
+** [Continuous Integration] 
+** [Website] 
+** [Creating Releases] 
+** [Attribution|Supporting software attribution] 
+* Apache Software Foundation 
+** [Introduction|http://www.apache.org/foundation/how-it-works.html] 
+** [Sponsorship|http://www.apache.org/foundation/sponsorship.html] 
+** [Current Sponsors|http://www.apache.org/foundation/thanks.html] 
\ No newline at end of file

Propchange: jackrabbit/site/trunk/content/navigation.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/navigation.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/navigation.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/navigation.mdtext (added)
+++ jackrabbit/site/trunk/content/navigation.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,34 @@
+Title: Navigation
+* Apache Jackrabbit 
+** [Welcome](welcome-to-apache-jackrabbit.html)
+** [Downloads](downloads.html)
+** [Articles](articles.html)
+** [FAQ](frequently-asked-questions.html)
+** [Jackrabbit Wiki](http://wiki.apache.org/jackrabbit/FrontPage)
+** [Jackrabbit History](jackrabbit-history.html)
+* Documentation 
+** [Getting Started](getting-started-with-apache-jackrabbit.html)
+** [Standalone Server](standalone-server.html)
+** [Jackrabbit Components](jackrabbit-components.html)
+** [First Hops](first-hops.html)
+** [JCR & API](jcr-&-api.html)
+** [Jackrabbit Architecture](jackrabbit-architecture.html)
+** [Deployment Models](deployment-models.html)
+** [Jackrabbit Configuration](jackrabbit-configuration.html)
+** [Node Types](node-types.html)
+** [Object Content Mapping](object-content-mapping.html)
+* Development 
+** [Jackrabbit Team](jackrabbit-team.html)
+** [Jackrabbit Roadmap](jackrabbit-roadmap.html)
+** [Building Jackrabbit](building-jackrabbit.html)
+** [Mailing Lists](mailing-lists.html)
+** [Issue Tracker](issue-tracker.html)
+** [Source Repository](source-repository.html)
+** [Continuous Integration](continuous-integration.html)
+** [Website](website.html)
+** [Creating Releases](creating-releases.html)
+** [Attribution](supporting-software-attribution.html)
+* Apache Software Foundation 
+** [Introduction](http://www.apache.org/foundation/how-it-works.html)
+** [Sponsorship](http://www.apache.org/foundation/sponsorship.html)
+** [Current Sponsors](http://www.apache.org/foundation/thanks.html)

Propchange: jackrabbit/site/trunk/content/navigation.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native