You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by bu...@apache.org on 2012/12/31 13:40:59 UTC

svn commit: r844404 [14/17] - in /websites/staging/jackrabbit/trunk/content: ./ JCR/ JCR/a-simple-ocm-project-with-maven-eclipse.data/ JCR/concurrency-control.data/ JCR/deployment-models.data/ JCR/how-jackrabbit-works.data/ JCR/how-to-map-associations-...

Added: websites/staging/jackrabbit/trunk/content/JCR/node-type-notation.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/JCR/node-type-notation.html (added)
+++ websites/staging/jackrabbit/trunk/content/JCR/node-type-notation.html Mon Dec 31 12:40:56 2012
@@ -0,0 +1,714 @@
+
+<!-- 
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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. 
+-->
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>Node Type Notation</TITLE>
+    <LINK type="text/css" rel="stylesheet" href="http://jackrabbit.apache.org/style/site.css">
+  <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
+  <BODY>
+    <DIV id="page">
+      <DIV id="header">
+        <P id="jcr"><A href="http://jackrabbit.apache.org/"><IMG src="http://jackrabbit.apache.org/style/jlogo.gif" alt="Apache Jackrabbit" height="100" width="336"></A></P>
+        <P id="asf"><A href="http://www.apache.org/"><IMG src="http://jackrabbit.apache.org/style/asf-logo.gif" alt="Apache Software Foundation" height="100" width="387"></A></P>
+      </DIV>
+      <DIV id="body">
+        <DIV id="navigation">
+  <UL>
+	<LI>Apache Jackrabbit
+	<UL>
+		<LI><A href="welcome-to-apache-jackrabbit.html" title="Welcome to Apache Jackrabbit">Welcome</A></LI>
+		<LI><A href="downloads.html" title="Downloads">Downloads</A></LI>
+		<LI><A href="frequently-asked-questions.html" title="Frequently Asked Questions">FAQ</A></LI>
+		<LI><A href="http://wiki.apache.org/jackrabbit/FrontPage" class="external-link">Jackrabbit Wiki</A></LI>
+		<LI><A href="jackrabbit-history.html" title="Jackrabbit History">Jackrabbit History</A></LI>
+	</UL>
+	</LI>
+	<LI>Documentation
+	<UL>
+		<LI><A href="getting-started-with-apache-jackrabbit.html" title="Getting Started with Apache Jackrabbit">Getting Started</A></LI>
+		<LI><A href="standalone-server.html" title="Standalone Server">Standalone Server</A></LI>
+		<LI><A href="jackrabbit-components.html" title="Jackrabbit Components">Jackrabbit Components</A></LI>
+		<LI><A href="first-hops.html" title="First Hops">First Hops</A></LI>
+		<LI><A href="jcr-api.html" title="JCR & API">JCR &amp; API</A></LI>
+		<LI><A href="jackrabbit-architecture.html" title="Jackrabbit Architecture">Jackrabbit Architecture</A></LI>
+		<LI><A href="deployment-models.html" title="Deployment Models">Deployment Models</A></LI>
+		<LI><A href="jackrabbit-configuration.html" title="Jackrabbit Configuration">Jackrabbit Configuration</A></LI>
+		<LI><A href="node-types.html" title="Node Types">Node Types</A></LI>
+		<LI><A href="object-content-mapping.html" title="Object Content Mapping">Object Content Mapping</A></LI>
+	</UL>
+	</LI>
+	<LI>Development
+	<UL>
+		<LI><A href="jackrabbit-team.html" title="Jackrabbit Team">Jackrabbit Team</A></LI>
+		<LI><A href="jackrabbit-roadmap.html" title="Jackrabbit Roadmap">Jackrabbit Roadmap</A></LI>
+		<LI><A href="building-jackrabbit.html" title="Building Jackrabbit">Building Jackrabbit</A></LI>
+		<LI><A href="mailing-lists.html" title="Mailing Lists">Mailing Lists</A></LI>
+		<LI><A href="issue-tracker.html" title="Issue Tracker">Issue Tracker</A></LI>
+		<LI><A href="source-repository.html" title="Source Repository">Source Repository</A></LI>
+		<LI><A href="continuous-integration.html" title="Continuous Integration">Continuous Integration</A></LI>
+		<LI><A href="website.html" title="Website">Website</A></LI>
+		<LI><A href="creating-releases.html" title="Creating Releases">Creating Releases</A></LI>
+		<LI><A href="supporting-software-attribution.html" title="Supporting software attribution">Attribution</A></LI>
+	</UL>
+	</LI>
+	<LI>Apache Software Foundation
+	<UL>
+		<LI><A href="http://www.apache.org/foundation/how-it-works.html" class="external-link">Introduction</A></LI>
+		<LI><A href="http://www.apache.org/foundation/sponsorship.html" class="external-link">Sponsorship</A></LI>
+		<LI><A href="http://www.apache.org/foundation/thanks.html" class="external-link">Current Sponsors</A></LI>
+	</UL>
+	</LI>
+</UL>
+        </DIV>
+        <DIV id="content">
+          <H1>Node Type Notation</H1>
+  <P>The Compact Namespace and Node Type Definition (CND) notation provides a compact standardized syntax for defining node types and making namespace declarations. The notation is intended both for documentation and for programmatically registering node types (if you are unfamiliar with JCR node types, you may want to read the general Node Types section first).</P>
+
+<P>Here is a &quot;worst-case scenario&quot; example that demonstrates all the features of the notation:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+/*  An example node type definition */
+
+<SPAN class="code-comment">// The namespace declaration
+</SPAN>&lt;ns = 'http:<SPAN class="code-comment">//namespace.com/ns'&gt;
+</SPAN>
+<SPAN class="code-comment">// Node type name
+</SPAN>[ns:NodeType]
+
+<SPAN class="code-comment">// Supertypes
+</SPAN>&gt; ns:ParentType1, ns:ParentType2
+
+<SPAN class="code-comment">// This node type supports orderable child nodes
+</SPAN>orderable
+
+<SPAN class="code-comment">// This is a mixin node type
+</SPAN>mixin
+
+<SPAN class="code-comment">// Nodes of <SPAN class="code-keyword">this</SPAN> node type have a property called 'ex:property' of type STRING
+</SPAN>- ex:property (string)
+
+<SPAN class="code-comment">// The <SPAN class="code-keyword">default</SPAN> values <SPAN class="code-keyword">for</SPAN> <SPAN class="code-keyword">this</SPAN>
+</SPAN><SPAN class="code-comment">// (multi-value) property are...
+</SPAN>= 'default1', 'default2'
+
+<SPAN class="code-comment">// This property is the primary item
+</SPAN>primary
+
+<SPAN class="code-comment">// and it is...
+</SPAN>mandatory autocreated <SPAN class="code-keyword">protected</SPAN>
+
+<SPAN class="code-comment">// and multi-valued
+</SPAN>multiple
+
+<SPAN class="code-comment">// It has an on-parent-version setting of ...
+</SPAN>version
+
+<SPAN class="code-comment">// The constraint settings are...
+</SPAN>&lt; 'constraint1', 'constraint2'
+
+<SPAN class="code-comment">// Nodes of <SPAN class="code-keyword">this</SPAN> node type have a child node called ns:node which must be of
+</SPAN><SPAN class="code-comment">// at least the node types ns:reqType1 and ns:reqType2
+</SPAN>+ ns:node (ns:reqType1, ns:reqType2)
+
+<SPAN class="code-comment">// and the <SPAN class="code-keyword">default</SPAN> primary node type of the child node is...
+</SPAN>= ns:defaultType
+
+<SPAN class="code-comment">// This child node is...
+</SPAN>mandatory autocreated <SPAN class="code-keyword">protected</SPAN>
+
+<SPAN class="code-comment">// and supports same name siblings
+</SPAN>multiple
+
+<SPAN class="code-comment">// and has an on-parent-version setting of ...
+</SPAN>version
+</PRE>
+</DIV></DIV>
+
+<P>This definition can be written more compactly and with indentation:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+/*  An example node type definition */
+&lt;ns = 'http:<SPAN class="code-comment">//namespace.com/ns'&gt;
+</SPAN>[ns:NodeType] &gt; ns:ParentType1, ns:ParentType2
+  orderable mixin
+  - ex:property (string)
+  = 'default1', 'default2'
+    primary mandatory autocreated <SPAN class="code-keyword">protected</SPAN> multiple
+    version
+    &lt; 'constraint1', 'constraint2'
+  + ns:node (ns:reqType1, ns:reqType2)
+    = ns:defaultType
+    mandatory autocreated <SPAN class="code-keyword">protected</SPAN> multiple version
+</PRE>
+</DIV></DIV>
+
+<P>or, using short forms for the attributes, even like this:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+&lt;ns='http:<SPAN class="code-comment">//namespace.com/ns'&gt;
+</SPAN>[ns:NodeType]&gt;ns:ParentType1, ns:ParentType2 o m
+-ex:property='default1','default2' ! m a p * version
+ &lt;'constraint1', 'constraint2'
++ns:node(ns:reqType1,ns:reqType2)=ns:defaultType
+ m a p *  version
+</PRE>
+</DIV></DIV>
+
+<H2><A name="NodeTypeNotation-Grammar"></A>Grammar</H2>
+
+<P>The following grammar defines the CND notation. Terminal symbols are in double quotes.</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+cnd ::= {ns_mapping | node_type_def}
+
+ns_mapping ::= <SPAN class="code-quote">&quot;&lt;&quot;</SPAN> prefix <SPAN class="code-quote">&quot;=&quot;</SPAN> uri <SPAN class="code-quote">&quot;&gt;&quot;</SPAN>
+
+prefix ::= string
+
+uri ::= string
+
+node_type_def ::= node_type_name [supertypes] [options]
+                  {property_def | child_node_def}
+
+node_type_name ::= <SPAN class="code-quote">&quot;[&quot;</SPAN> string <SPAN class="code-quote">&quot;]&quot;</SPAN>
+
+supertypes ::= <SPAN class="code-quote">&quot;&gt;&quot;</SPAN> string_list
+
+options ::= orderable_opt | mixin_opt | orderable_opt
+            mixin_opt | mixin_opt orderable_opt
+
+orderable_opt ::= <SPAN class="code-quote">&quot;orderable&quot;</SPAN> | <SPAN class="code-quote">&quot;ord&quot;</SPAN> | <SPAN class="code-quote">&quot;o&quot;</SPAN>
+
+mixin_opt ::= <SPAN class="code-quote">&quot;mixin&quot;</SPAN> | <SPAN class="code-quote">&quot;mix&quot;</SPAN> | <SPAN class="code-quote">&quot;m&quot;</SPAN>
+
+property_def ::= <SPAN class="code-quote">&quot;-&quot;</SPAN> property_name [property_type_decl]
+                 [default_values] [attributes]
+                 [value_constraints]
+
+property_name ::= string
+
+property_type_decl ::= <SPAN class="code-quote">&quot;(&quot;</SPAN> property_type <SPAN class="code-quote">&quot;)&quot;</SPAN>
+
+property_type ::= <SPAN class="code-quote">&quot;STRING&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">String</SPAN>&quot;</SPAN> |<SPAN class="code-quote">&quot;string&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;BINARY&quot;</SPAN> | <SPAN class="code-quote">&quot;Binary&quot;</SPAN> | <SPAN class="code-quote">&quot;binary&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;LONG&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">Long</SPAN>&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">long</SPAN>&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;DOUBLE&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">Double</SPAN>&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">double</SPAN>&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;BOOLEAN&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">Boolean</SPAN>&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">boolean</SPAN>&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;DATE&quot;</SPAN> | <SPAN class="code-quote">&quot;Date&quot;</SPAN> | <SPAN class="code-quote">&quot;date&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;NAME | &quot;</SPAN>Name | <SPAN class="code-quote">&quot;name&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;PATH&quot;</SPAN> | <SPAN class="code-quote">&quot;Path&quot;</SPAN> | <SPAN class="code-quote">&quot;path&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;REFERENCE&quot;</SPAN> | <SPAN class="code-quote">&quot;Reference&quot;</SPAN> |
+                     <SPAN class="code-quote">&quot;reference&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;UNDEFINED&quot;</SPAN> | <SPAN class="code-quote">&quot;Undefined&quot;</SPAN> |
+                     <SPAN class="code-quote">&quot;undefined&quot;</SPAN> | <SPAN class="code-quote">&quot;*&quot;</SPAN>
+
+default_values ::= <SPAN class="code-quote">&quot;=&quot;</SPAN> string_list
+
+value_constraints ::= <SPAN class="code-quote">&quot;&lt;&quot;</SPAN> string_list
+
+node_def ::= <SPAN class="code-quote">&quot;+&quot;</SPAN> node_name [required_types]
+             [default_type] [attributes]
+
+node_name ::= string
+
+required_types ::= <SPAN class="code-quote">&quot;(&quot;</SPAN> string_list <SPAN class="code-quote">&quot;)&quot;</SPAN>
+
+default_type ::= <SPAN class="code-quote">&quot;=&quot;</SPAN> string
+
+attributes ::= <SPAN class="code-quote">&quot;primary&quot;</SPAN> | <SPAN class="code-quote">&quot;pri&quot;</SPAN> | <SPAN class="code-quote">&quot;!&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;autocreated&quot;</SPAN> | <SPAN class="code-quote">&quot;aut&quot;</SPAN> | <SPAN class="code-quote">&quot;a&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;mandatory&quot;</SPAN> | <SPAN class="code-quote">&quot;man&quot;</SPAN> | <SPAN class="code-quote">&quot;m&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;<SPAN class="code-keyword">protected</SPAN>&quot;</SPAN> | <SPAN class="code-quote">&quot;pro&quot;</SPAN> | <SPAN class="code-quote">&quot;p&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;multiple&quot;</SPAN> | <SPAN class="code-quote">&quot;mul&quot;</SPAN> | <SPAN class="code-quote">&quot;*&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;COPY&quot;</SPAN> | <SPAN class="code-quote">&quot;Copy&quot;</SPAN> | <SPAN class="code-quote">&quot;copy&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;VERSION&quot;</SPAN> | <SPAN class="code-quote">&quot;Version&quot;</SPAN> | <SPAN class="code-quote">&quot;version&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;INITIALIZE&quot;</SPAN> | <SPAN class="code-quote">&quot;Initialize&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;initialize&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;COMPUTE&quot;</SPAN> | <SPAN class="code-quote">&quot;Compute&quot;</SPAN> | <SPAN class="code-quote">&quot;compute&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;IGNORE&quot;</SPAN> | <SPAN class="code-quote">&quot;Ignore&quot;</SPAN> | <SPAN class="code-quote">&quot;ignore&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;ABORT&quot;</SPAN> | <SPAN class="code-quote">&quot;Abort&quot;</SPAN> | <SPAN class="code-quote">&quot;abort&quot;</SPAN>
+
+string_list ::= string {<SPAN class="code-quote">&quot;,&quot;</SPAN> string}
+
+string ::= quoted_string | unquoted_string
+
+quoted_string :: = <SPAN class="code-quote">&quot;'&quot;</SPAN> unquoted_string <SPAN class="code-quote">&quot;'&quot;</SPAN>
+
+unquoted_string ::= [A-Za-z0-9:_]+
+</PRE>
+</DIV></DIV>
+
+<H2><A name="NodeTypeNotation-CNDNotationinDetail"></A>CND Notation in Detail</H2>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+cnd ::= {ns_mapping | node_type_def}
+</PRE>
+</DIV></DIV>
+
+<P>A CND consists of zero or more blocks, each of which is either namespace declaration or a node type definition. Namespace prefixes referenced in a node type definition block must be declared in a preceding namespace declaration block.</P>
+
+<H3><A name="NodeTypeNotation-NamespaceDeclaration"></A>Namespace Declaration</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+ns_mapping ::= <SPAN class="code-quote">&quot;&lt;&quot;</SPAN> prefix <SPAN class="code-quote">&quot;=&quot;</SPAN> uri <SPAN class="code-quote">&quot;&gt;&quot;</SPAN>
+
+prefix ::= string
+
+uri ::= string
+</PRE>
+</DIV></DIV>
+
+<P>A namespace declaration consists of prefix/URI pair. The prefix must be a valid JCR namespace prefix, which is the same as a valid XML namespace prefix. The URI can in fact be any string. Just as in XML, it need not actually be a URI, though adhering to that convention is recommended.</P>
+
+<H3><A name="NodeTypeNotation-NodeTypeDefinition"></A>Node Type Definition</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+node_type_def ::= node_type_name [super_types] [options]
+                  {property_def | child_node_def}
+</PRE>
+</DIV></DIV>
+
+<P>A node type definition consists of a node type name followed by an optional supertypes block, an optional options block and zero or more blocks, each either a property or node definition.</P>
+
+<H3><A name="NodeTypeNotation-NodeTypeName"></A>Node Type Name</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+node_type_name ::= <SPAN class="code-quote">&quot;[&quot;</SPAN> string <SPAN class="code-quote">&quot;]&quot;</SPAN>
+</PRE>
+</DIV></DIV>
+
+<P>The node type name is delimited by square brackets and must be a valid JCR name. It may be single-quoted (see Quoting, below). This element is the only strictly required element within a node type definition, though a definition consisting only of a node type name would simply define a new node type identical to nt:base.</P>
+
+<H3><A name="NodeTypeNotation-Supertypes"></A>Supertypes</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+supertypes ::= <SPAN class="code-quote">&quot;&gt;&quot;</SPAN> string_list
+</PRE>
+</DIV></DIV>
+
+<P>After the node type name comes the optional list of supertypes. If this element is not present and the node type is not a mixin (see ?1.3.5 Options), then a supertype of nt:base is assumed. If present, the element consists of a greater-than sign followed by a comma delimited list of node type names, each of which may optionally be single-quoted (see Quoting below). In Jackrabbit, multiple inheritance of node types is supported, so this list can be greater than one item in length.</P>
+
+<H3><A name="NodeTypeNotation-Options"></A>Options</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+options ::= orderable_opt | mixin_opt | orderable_opt
+            mixin_opt | mixin_opt orderable_opt
+
+orderable_opt ::= <SPAN class="code-quote">&quot;orderable&quot;</SPAN> | <SPAN class="code-quote">&quot;ord&quot;</SPAN> | <SPAN class="code-quote">&quot;o&quot;</SPAN>
+
+mixin_opt ::= <SPAN class="code-quote">&quot;mixin&quot;</SPAN> | <SPAN class="code-quote">&quot;mix&quot;</SPAN> | <SPAN class="code-quote">&quot;m&quot;</SPAN>
+</PRE>
+</DIV></DIV>
+
+<P>The option indicators follow the node type name and optional supertype list.</P>
+
+<P>If the keyword orderable (or a short form) is present, then the orderable child node setting of the node type is true. If the keyword is missing, then the setting is false.</P>
+
+<P>If the keyword mixin (or a short form) is present, then this is a mixin node type. If the keyword is missing, then this is a primary node type.</P>
+
+<H3><A name="NodeTypeNotation-PropertyDefinition"></A>Property Definition</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+property_def ::= <SPAN class="code-quote">&quot;-&quot;</SPAN> property_name [property_type_decl]
+                 [default_values] [attributes]
+                 [value_constraints]
+</PRE>
+</DIV></DIV>
+
+<P>A property definition consists of a minus sign followed by a property name, followed in turn by optional elements defining the property type, the default values, the property attributes and the value constraints.</P>
+
+<H3><A name="NodeTypeNotation-PropertyName"></A>Property Name</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+property_name ::= string
+</PRE>
+</DIV></DIV>
+
+<P>The property name must be a valid JCR name or *, to indicate a residual property definition. It may be single-quoted.</P>
+
+<H3><A name="NodeTypeNotation-PropertyType"></A>Property Type</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+property_type_decl ::= <SPAN class="code-quote">&quot;(&quot;</SPAN> property_type <SPAN class="code-quote">&quot;)&quot;</SPAN>
+
+property_type ::= <SPAN class="code-quote">&quot;STRING&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">String</SPAN> |&quot;</SPAN>string&quot; |
+                  <SPAN class="code-quote">&quot;BINARY&quot;</SPAN> | <SPAN class="code-quote">&quot;Binary&quot;</SPAN> | <SPAN class="code-quote">&quot;binary&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;LONG&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">Long</SPAN>&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">long</SPAN>&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;DOUBLE&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">Double</SPAN>&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">double</SPAN>&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;BOOLEAN&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">Boolean</SPAN>&quot;</SPAN> | <SPAN class="code-quote">&quot;<SPAN class="code-object">boolean</SPAN>&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;DATE&quot;</SPAN> | <SPAN class="code-quote">&quot;Date&quot;</SPAN> | <SPAN class="code-quote">&quot;date&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;NAME | &quot;</SPAN>Name | <SPAN class="code-quote">&quot;name&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;PATH&quot;</SPAN> | <SPAN class="code-quote">&quot;Path&quot;</SPAN> | <SPAN class="code-quote">&quot;path&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;REFERENCE&quot;</SPAN> | <SPAN class="code-quote">&quot;Reference&quot;</SPAN> | <SPAN class="code-quote">&quot;reference&quot;</SPAN> |
+                  <SPAN class="code-quote">&quot;UNDEFINED&quot;</SPAN> | <SPAN class="code-quote">&quot;Undefined&quot;</SPAN> | <SPAN class="code-quote">&quot;undefined&quot;</SPAN> | <SPAN class="code-quote">&quot;*&quot;</SPAN>
+</PRE>
+</DIV></DIV>
+
+<P>The property type is indicated by a keyword delimited by parentheses. If the property type declaration is missing a type of STRING is assumed.</P>
+
+<H3><A name="NodeTypeNotation-DefaultValues"></A>Default Values</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+default_values ::= <SPAN class="code-quote">&quot;=&quot;</SPAN> string_list
+</PRE>
+</DIV></DIV>
+
+<P>The default value or values, in the case of a multi-value property, are indicated by an equal sign followed by either a single value in string form or a comma-delimited list of values. The values may be single-quoted. If the default value definition is missing then no default value is set.</P>
+
+<H3><A name="NodeTypeNotation-Attributes"></A>Attributes</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+attributes ::= <SPAN class="code-quote">&quot;primary&quot;</SPAN> | <SPAN class="code-quote">&quot;pri&quot;</SPAN> | <SPAN class="code-quote">&quot;!&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;autocreated&quot;</SPAN> | <SPAN class="code-quote">&quot;aut&quot;</SPAN> | <SPAN class="code-quote">&quot;a&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;mandatory&quot;</SPAN> | <SPAN class="code-quote">&quot;man&quot;</SPAN> | <SPAN class="code-quote">&quot;m&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;<SPAN class="code-keyword">protected</SPAN>&quot;</SPAN> | <SPAN class="code-quote">&quot;pro&quot;</SPAN> | <SPAN class="code-quote">&quot;p&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;multiple&quot;</SPAN> | <SPAN class="code-quote">&quot;mul&quot;</SPAN> | <SPAN class="code-quote">&quot;*&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;COPY&quot;</SPAN> | <SPAN class="code-quote">&quot;Copy&quot;</SPAN> | <SPAN class="code-quote">&quot;copy&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;VERSION&quot;</SPAN> | <SPAN class="code-quote">&quot;Version&quot;</SPAN> | <SPAN class="code-quote">&quot;version&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;INITIALIZE&quot;</SPAN> | <SPAN class="code-quote">&quot;Initialize&quot;</SPAN> | <SPAN class="code-quote">&quot;initialize&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;COMPUTE&quot;</SPAN> | <SPAN class="code-quote">&quot;Compute&quot;</SPAN> | <SPAN class="code-quote">&quot;compute&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;IGNORE&quot;</SPAN> | <SPAN class="code-quote">&quot;Ignore&quot;</SPAN> | <SPAN class="code-quote">&quot;ignore&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;ABORT&quot;</SPAN> | <SPAN class="code-quote">&quot;Abort&quot;</SPAN> | <SPAN class="code-quote">&quot;abort&quot;</SPAN>
+</PRE>
+</DIV></DIV>
+
+<P>The attribute indicators describe the characteristics of the property. The presence of an attribute keyword indicates that the corresponding characteristic applies to this property. It's absence indicates that the corresponding characteristic does not apply.</P>
+
+<P>The primary keyword indicates that this property is the primary item. It may appear on a maximum of one property or child node definition within a node type definition.</P>
+
+<P>The multiple keyword indicates that this property is multi-valued.</P>
+
+<P>A maximum of one on-version indicator may be present. If none is present then an on-version setting of COPY is assumed.</P>
+
+<H3><A name="NodeTypeNotation-ValueConstraints"></A>Value Constraints</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+value_constraints ::= <SPAN class="code-quote">&quot;&lt;&quot;</SPAN> string_list
+</PRE>
+</DIV></DIV>
+
+<P>Value constraint are specified by a less-than sign followed by a comma-delimited list of constraint strings, each optionally single-quoted.</P>
+
+<H3><A name="NodeTypeNotation-ChildNodeDefinition"></A>Child Node Definition</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+child_node_def ::= <SPAN class="code-quote">&quot;+&quot;</SPAN> node_name [required_types]
+             [default_type] [attributes]
+</PRE>
+</DIV></DIV>
+
+<P>A child node definition consists of a plus sign followed by a property name, followed in turn by optional elements defining the required primary node types, the default node type, and the node attributes.</P>
+
+<H3><A name="NodeTypeNotation-NodeName"></A>Node Name</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+node_name ::= string
+</PRE>
+</DIV></DIV>
+
+<P>The node name must be a valid JCR name or *, to indicate a residual child node definition. It may be single-quoted.</P>
+
+<H3><A name="NodeTypeNotation-RequiredPrimaryNodeTypes"></A>Required Primary Node Types</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+required_types ::= <SPAN class="code-quote">&quot;(&quot;</SPAN> string_list <SPAN class="code-quote">&quot;)&quot;</SPAN>
+</PRE>
+</DIV></DIV>
+
+<P>The required node types of the child node are indicated by a comma-delimited list of node types, within parentheses. If this element is missing then a required primary node type of nt:base is assumed. This is the least restrictive setting possible.</P>
+
+<H3><A name="NodeTypeNotation-DefaultPrimaryNodeType"></A>Default Primary Node Type</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+default_type ::= <SPAN class="code-quote">&quot;=&quot;</SPAN> string
+</PRE>
+</DIV></DIV>
+
+<P>The default primary node type is indicated by an equals-sign followed by a node type name, which may be single-quoted. If this element is missing then no default primary node type is set.</P>
+
+<H3><A name="NodeTypeNotation-Attributes"></A>Attributes</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+attributes ::= <SPAN class="code-quote">&quot;primary&quot;</SPAN> | <SPAN class="code-quote">&quot;pri&quot;</SPAN> | <SPAN class="code-quote">&quot;!&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;autocreated&quot;</SPAN> | <SPAN class="code-quote">&quot;aut&quot;</SPAN> | <SPAN class="code-quote">&quot;a&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;mandatory&quot;</SPAN> | <SPAN class="code-quote">&quot;man&quot;</SPAN> | <SPAN class="code-quote">&quot;m&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;<SPAN class="code-keyword">protected</SPAN>&quot;</SPAN> | <SPAN class="code-quote">&quot;pro&quot;</SPAN> | <SPAN class="code-quote">&quot;p&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;multiple&quot;</SPAN> | <SPAN class="code-quote">&quot;mul&quot;</SPAN> | <SPAN class="code-quote">&quot;*&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;COPY&quot;</SPAN> | <SPAN class="code-quote">&quot;Copy&quot;</SPAN> | <SPAN class="code-quote">&quot;copy&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;VERSION&quot;</SPAN> | <SPAN class="code-quote">&quot;Version&quot;</SPAN> | <SPAN class="code-quote">&quot;version&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;INITIALIZE&quot;</SPAN> | <SPAN class="code-quote">&quot;Initialize&quot;</SPAN> | <SPAN class="code-quote">&quot;initialize&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;COMPUTE&quot;</SPAN> | <SPAN class="code-quote">&quot;Compute&quot;</SPAN> | <SPAN class="code-quote">&quot;compute&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;IGNORE&quot;</SPAN> | <SPAN class="code-quote">&quot;Ignore&quot;</SPAN> | <SPAN class="code-quote">&quot;ignore&quot;</SPAN> |
+               <SPAN class="code-quote">&quot;ABORT&quot;</SPAN> | <SPAN class="code-quote">&quot;Abort&quot;</SPAN> | <SPAN class="code-quote">&quot;abort&quot;</SPAN>
+</PRE>
+</DIV></DIV>
+
+<P>The attribute indicators describe the characteristics of the child node. The presence of an attribute keyword indicates that the corresponding characteristic applies to this child node. It's absence indicates that the corresponding characteristic does not apply.</P>
+
+<P>The primary keyword indicates that this child node is the primary item. It may appear on a maximum of one property or child node definition within a node type definition.</P>
+
+<P>The multiple keyword indicates that this child node may have same-name siblings.</P>
+
+<P>A maximum of one on-version indicator may be present. If none is present then an on-version setting of COPY is assumed.</P>
+
+<H3><A name="NodeTypeNotation-Quoting"></A>Quoting</H3>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+string_list ::= string {<SPAN class="code-quote">&quot;,&quot;</SPAN> string}
+
+string ::= quoted_string | unquoted_string
+
+quoted_string :: = <SPAN class="code-quote">&quot;'&quot;</SPAN> unquoted_string <SPAN class="code-quote">&quot;'&quot;</SPAN>
+
+unquoted_string ::= /* a string */
+</PRE>
+</DIV></DIV>
+
+<P>Single quotes (') are used to allow for strings (i.e., names, prefixes, URIs, values or constraint strings) with characters that would otherwise be interpreted as delimiters.</P>
+
+<H3><A name="NodeTypeNotation-Escaping"></A>Escaping</H3>
+
+<P>The standard Java escape sequences are also supported:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+\n newline
+\t tab
+\b backspace
+\f form feed
+\r <SPAN class="code-keyword">return</SPAN>
+\&quot; <SPAN class="code-object">double</SPAN> quote
+\' single quote
+\\ back slash
+\uHHHH Unicode character in hexadecimal
+</PRE>
+</DIV></DIV>
+
+<H3><A name="NodeTypeNotation-Comments"></A>Comments</H3>
+
+<P>Comment can also be included in the notation using either of the standard Java forms:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+<SPAN class="code-comment">// A comment
+</SPAN>
+/* Another comment */
+</PRE>
+</DIV></DIV>
+
+<H3><A name="NodeTypeNotation-WhitespaceandShortForms"></A>Whitespace and Short Forms</H3>
+
+<P>The notation can be compacted by taking advantage of the following the fact that spacing around keychars ([ ] &gt; , - ( ) = &lt;), newlines and indentation are not required. So, the following is also well-formed:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+[x]&gt;y,z orderable mixin -p(date)=a,b primary mandatory autocreated <SPAN class="code-keyword">protected</SPAN> multiple version &lt;c,d
+</PRE>
+</DIV></DIV>
+
+<P>Additionally, though spaces are required around the keywords (orderable, mixin, date, mandatory, etc.), short forms for keywords can be used. So, this:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+[x]&gt;y,z o m-p(date)=a,b ! m a p * version &lt;c,d
+</PRE>
+</DIV></DIV>
+
+<P>is well-formed (but perhaps not recommended!).</P>
+
+<H3><A name="NodeTypeNotation-WhythisWeirdNotation%3F"></A>Why this Weird Notation?</H3>
+
+<P>Here's why:</P>
+
+<P>Old Documentation Notation</P>
+
+<P>Here is the definition of the built-in node type nt:resource using the old documentation notation (used in v1.0 of the JCR specification, for example):</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+NodeTypeName
+  nt:resource
+Supertypes
+  nt:base
+  mix:referenceable
+IsMixin
+  <SPAN class="code-keyword">false</SPAN>
+HasOrderableChildNodes
+  <SPAN class="code-keyword">false</SPAN>
+PrimaryItemName
+  jcr:data
+PropertyDefinition
+  Name jcr:encoding
+  RequiredType STRING
+  ValueConstraints []
+  DefaultValues <SPAN class="code-keyword">null</SPAN>
+  AutoCreated <SPAN class="code-keyword">false</SPAN>
+  Mandatory <SPAN class="code-keyword">false</SPAN>
+  OnParentVersion COPY
+  Protected <SPAN class="code-keyword">false</SPAN>
+  Multiple <SPAN class="code-keyword">false</SPAN>
+PropertyDefinition
+  Name jcr:mimeType
+  RequiredType STRING
+  ValueConstraints []
+  DefaultValues <SPAN class="code-keyword">null</SPAN>
+  AutoCreated <SPAN class="code-keyword">false</SPAN>
+  Mandatory <SPAN class="code-keyword">true</SPAN>
+  OnParentVersion COPY
+  Protected <SPAN class="code-keyword">false</SPAN>
+  Multiple <SPAN class="code-keyword">false</SPAN>
+PropertyDefinition
+  Name jcr:data
+  RequiredType BINARY
+  ValueConstraints []
+  DefaultValues <SPAN class="code-keyword">null</SPAN>
+  AutoCreated <SPAN class="code-keyword">false</SPAN>
+  Mandatory <SPAN class="code-keyword">true</SPAN>
+  OnParentVersion COPY
+  Protected <SPAN class="code-keyword">false</SPAN>
+  Multiple <SPAN class="code-keyword">false</SPAN>
+PropertyDefinition
+  Name jcr:lastModified
+  RequiredType DATE
+  ValueConstraints []
+  DefaultValues <SPAN class="code-keyword">null</SPAN>
+  AutoCreated <SPAN class="code-keyword">false</SPAN>
+  Mandatory <SPAN class="code-keyword">true</SPAN>
+  OnParentVersion IGNORE
+  Protected <SPAN class="code-keyword">false</SPAN>
+  Multiple <SPAN class="code-keyword">false</SPAN>
+</PRE>
+</DIV></DIV>
+
+<P>Old Configuration Notation</P>
+
+<P>Here is the same node type in the standard XML notation (used in configuration files in the Jackrabbit project, for example):</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+&lt;nodeType name=<SPAN class="code-quote">&quot;nt:resource&quot;</SPAN>
+          isMixin=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>
+          hasOrderableChildNodes=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>
+          primaryItemName=<SPAN class="code-quote">&quot;jcr:data&quot;</SPAN>&gt;
+    &lt;supertypes&gt;
+        &lt;supertype&gt;nt:base&lt;/supertype&gt;
+        &lt;supertype&gt;mix:referenceable&lt;/supertype&gt;
+    &lt;/supertypes&gt;
+    &lt;propertyDefinition name=<SPAN class="code-quote">&quot;jcr:encoding&quot;</SPAN>
+                        requiredType=<SPAN class="code-quote">&quot;<SPAN class="code-object">String</SPAN>&quot;</SPAN>
+                        autoCreated=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>
+                        mandatory=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>
+                        onParentVersion=<SPAN class="code-quote">&quot;COPY&quot;</SPAN>
+                        <SPAN class="code-keyword">protected</SPAN>=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>
+                        multiple=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>/&gt;
+    &lt;propertyDefinition name=<SPAN class="code-quote">&quot;jcr:mimeType&quot;</SPAN>
+                        requiredType=<SPAN class="code-quote">&quot;<SPAN class="code-object">String</SPAN>&quot;</SPAN>
+                        autoCreated=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>
+                        mandatory=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">true</SPAN>&quot;</SPAN>
+                        onParentVersion=<SPAN class="code-quote">&quot;COPY&quot;</SPAN>
+                        <SPAN class="code-keyword">protected</SPAN>=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>
+                        multiple=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>/&gt;
+    &lt;propertyDefinition name=<SPAN class="code-quote">&quot;jcr:data&quot;</SPAN>
+                        requiredType=<SPAN class="code-quote">&quot;Binary&quot;</SPAN>
+                        autoCreated=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>
+                        mandatory=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">true</SPAN>&quot;</SPAN>
+                        onParentVersion=<SPAN class="code-quote">&quot;COPY&quot;</SPAN>
+                        <SPAN class="code-keyword">protected</SPAN>=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>
+                        multiple=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>/&gt;
+    &lt;propertyDefinition name=<SPAN class="code-quote">&quot;jcr:lastModified&quot;</SPAN>
+                        requiredType=<SPAN class="code-quote">&quot;Date&quot;</SPAN>
+                        autoCreated=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>
+                        mandatory=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">true</SPAN>&quot;</SPAN>
+                        onParentVersion=<SPAN class="code-quote">&quot;IGNORE&quot;</SPAN>
+                        <SPAN class="code-keyword">protected</SPAN>=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>
+                        multiple=<SPAN class="code-quote">&quot;<SPAN class="code-keyword">false</SPAN>&quot;</SPAN>/&gt;
+&lt;/nodeType&gt;
+</PRE>
+</DIV></DIV>
+
+<P>New Format</P>
+
+<P>And, here it is in the new CND notation:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+[nt:resource] &gt; mix:referenceable
+- jcr:encoding
+- jcr:mimeType mandatory
+- jcr:data (binary) mandatory
+- jcr:lastModified (date) mandatory ignore
+</PRE>
+</DIV></DIV>
+
+<P>Case closed.</P>
+
+<H2><A name="NodeTypeNotation-Syntaxhightlightingfortexteditors"></A>Syntax hightlighting for text editors</H2>
+
+<P>Here is a TextMate bundle for CND syntax highlighting: <A href="node-type-notation.data/CND.zip">CND.zip</A></P>
+        </DIV>
+        <DIV id="end"></DIV>
+      </DIV>
+      <DIV id="footer">
+        <P>
+          &copy; 2004-2010 The Apache Software Foundation.
+          - <A href="http://jackrabbit.apache.org/privacy-policy.html">Privacy Policy</A> -
+          [<A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=75305">edit this page</A>]
+          <BR>
+          Apache Jackrabbit, Jackrabbit, Apache, the Apache feather logo, and the Apache
+          Jackrabbit project logo are trademarks of The Apache Software Foundation.
+        </P>
+      </DIV>
+    </DIV>
+<!-- JCR- 1315: Add Google Analytics to Jackrabbit web site -->
+<SCRIPT type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</SCRIPT>
+<SCRIPT type="text/javascript">
+var pageTracker = _gat._getTracker("UA-837900-2");
+pageTracker._initData();
+pageTracker._trackPageview();
+</SCRIPT>
+  </BODY>
+</HTML>

Added: websites/staging/jackrabbit/trunk/content/JCR/node-type-visualization.data/jackrabbit-nodetypes.png
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/jackrabbit/trunk/content/JCR/node-type-visualization.data/jackrabbit-nodetypes.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: websites/staging/jackrabbit/trunk/content/JCR/node-type-visualization.data/jackrabbit-nodetypes.png.jpeg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/jackrabbit/trunk/content/JCR/node-type-visualization.data/jackrabbit-nodetypes.png.jpeg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: websites/staging/jackrabbit/trunk/content/JCR/node-type-visualization.data/jackrabbit-nodetypes.svg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/jackrabbit/trunk/content/JCR/node-type-visualization.data/jackrabbit-nodetypes.svg
------------------------------------------------------------------------------
    svn:mime-type = image/svg+xml

Added: websites/staging/jackrabbit/trunk/content/JCR/node-type-visualization.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/JCR/node-type-visualization.html (added)
+++ websites/staging/jackrabbit/trunk/content/JCR/node-type-visualization.html Mon Dec 31 12:40:56 2012
@@ -0,0 +1,244 @@
+
+<!-- 
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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. 
+-->
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>Node Type Visualization</TITLE>
+    <LINK type="text/css" rel="stylesheet" href="http://jackrabbit.apache.org/style/site.css">
+  <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
+  <BODY>
+    <DIV id="page">
+      <DIV id="header">
+        <P id="jcr"><A href="http://jackrabbit.apache.org/"><IMG src="http://jackrabbit.apache.org/style/jlogo.gif" alt="Apache Jackrabbit" height="100" width="336"></A></P>
+        <P id="asf"><A href="http://www.apache.org/"><IMG src="http://jackrabbit.apache.org/style/asf-logo.gif" alt="Apache Software Foundation" height="100" width="387"></A></P>
+      </DIV>
+      <DIV id="body">
+        <DIV id="navigation">
+  <UL>
+	<LI>Apache Jackrabbit
+	<UL>
+		<LI><A href="welcome-to-apache-jackrabbit.html" title="Welcome to Apache Jackrabbit">Welcome</A></LI>
+		<LI><A href="downloads.html" title="Downloads">Downloads</A></LI>
+		<LI><A href="frequently-asked-questions.html" title="Frequently Asked Questions">FAQ</A></LI>
+		<LI><A href="http://wiki.apache.org/jackrabbit/FrontPage" class="external-link">Jackrabbit Wiki</A></LI>
+		<LI><A href="jackrabbit-history.html" title="Jackrabbit History">Jackrabbit History</A></LI>
+	</UL>
+	</LI>
+	<LI>Documentation
+	<UL>
+		<LI><A href="getting-started-with-apache-jackrabbit.html" title="Getting Started with Apache Jackrabbit">Getting Started</A></LI>
+		<LI><A href="standalone-server.html" title="Standalone Server">Standalone Server</A></LI>
+		<LI><A href="jackrabbit-components.html" title="Jackrabbit Components">Jackrabbit Components</A></LI>
+		<LI><A href="first-hops.html" title="First Hops">First Hops</A></LI>
+		<LI><A href="jcr-api.html" title="JCR & API">JCR &amp; API</A></LI>
+		<LI><A href="jackrabbit-architecture.html" title="Jackrabbit Architecture">Jackrabbit Architecture</A></LI>
+		<LI><A href="deployment-models.html" title="Deployment Models">Deployment Models</A></LI>
+		<LI><A href="jackrabbit-configuration.html" title="Jackrabbit Configuration">Jackrabbit Configuration</A></LI>
+		<LI><A href="node-types.html" title="Node Types">Node Types</A></LI>
+		<LI><A href="object-content-mapping.html" title="Object Content Mapping">Object Content Mapping</A></LI>
+	</UL>
+	</LI>
+	<LI>Development
+	<UL>
+		<LI><A href="jackrabbit-team.html" title="Jackrabbit Team">Jackrabbit Team</A></LI>
+		<LI><A href="jackrabbit-roadmap.html" title="Jackrabbit Roadmap">Jackrabbit Roadmap</A></LI>
+		<LI><A href="building-jackrabbit.html" title="Building Jackrabbit">Building Jackrabbit</A></LI>
+		<LI><A href="mailing-lists.html" title="Mailing Lists">Mailing Lists</A></LI>
+		<LI><A href="issue-tracker.html" title="Issue Tracker">Issue Tracker</A></LI>
+		<LI><A href="source-repository.html" title="Source Repository">Source Repository</A></LI>
+		<LI><A href="continuous-integration.html" title="Continuous Integration">Continuous Integration</A></LI>
+		<LI><A href="website.html" title="Website">Website</A></LI>
+		<LI><A href="creating-releases.html" title="Creating Releases">Creating Releases</A></LI>
+		<LI><A href="supporting-software-attribution.html" title="Supporting software attribution">Attribution</A></LI>
+	</UL>
+	</LI>
+	<LI>Apache Software Foundation
+	<UL>
+		<LI><A href="http://www.apache.org/foundation/how-it-works.html" class="external-link">Introduction</A></LI>
+		<LI><A href="http://www.apache.org/foundation/sponsorship.html" class="external-link">Sponsorship</A></LI>
+		<LI><A href="http://www.apache.org/foundation/thanks.html" class="external-link">Current Sponsors</A></LI>
+	</UL>
+	</LI>
+</UL>
+        </DIV>
+        <DIV id="content">
+          <H1>Node Type Visualization</H1>
+  <P>Visualizing the Node Type Hierarchy is non-trivial, even in the case of a repository containing only the default Jackrabbit node types. Here, GraphViz can help:</P>
+
+<P><SPAN class="image-wrap" style=""><IMG src="node-type-visualization.data/jackrabbit-nodetypes.png" style="border: 0px solid black"></SPAN><BR>
+Node Type Hierarchy for Jackrabbit (<A href="node-type-visualization.data/jackrabbit-nodetypes.svg">SVG version</A>)</P>
+
+<P>In this diagram, the rounded boxes represent node types (green for mixins, gold for primrary types), with the arrows indicating the node inheritance. The square boxes represent child node and property definitions.</P>
+
+<P>To generate these diagrams, you will need:</P>
+
+<OL>
+	<LI>A system view export of &quot;/jcr:system/jcr:nodeTypes&quot;.</LI>
+	<LI>An XSLT processor and the XSLT code below.</LI>
+	<LI>The <A href="http://graphviz.org/" class="external-link">GraphViz</A> tool</LI>
+</OL>
+
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+&lt;!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * <SPAN class="code-keyword">this</SPAN> work <SPAN class="code-keyword">for</SPAN> additional information regarding copyright ownership.
+ * The ASF licenses <SPAN class="code-keyword">this</SPAN> file to You under the Apache License, Version 2.0
+ * (the <SPAN class="code-quote">&quot;License&quot;</SPAN>); you may not use <SPAN class="code-keyword">this</SPAN> file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http:<SPAN class="code-comment">//www.apache.org/licenses/LICENSE-2.0
+</SPAN> *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an <SPAN class="code-quote">&quot;AS IS&quot;</SPAN> BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License <SPAN class="code-keyword">for</SPAN> the specific language governing permissions and
+ * limitations under the License.
+--&gt;
+
+&lt;!--
+  A tool <SPAN class="code-keyword">for</SPAN> converting the system view of /jcr:system/jcr:nodeTypes
+  to GraphViz input (see &lt;http:<SPAN class="code-comment">//www.graphviz.org/&gt;).
+</SPAN>  
+  Usage:
+  
+  1: Export <SPAN class="code-object">System</SPAN> View of /jcr:system/jcr:nodeTypes
+
+  2: Run XSLT transformation, producing a .dot file, such as with
+  
+     $ saxon nt-sample.xml jcr-nodetypes-to-dot.xslt &gt; nt-sample.dot
+
+  3: Run Graphviz, <SPAN class="code-keyword">for</SPAN> instance
+  
+     $ dot nt-sample.dot -Tsvg -o nt-sample.svg
+     
+     ...producing nt-sample.svg as output.
+--&gt;
+
+&lt;xsl:transform xmlns:xsl=<SPAN class="code-quote">&quot;http:<SPAN class="code-comment">//www.w3.org/1999/XSL/Transform&quot;</SPAN>
+</SPAN>                version=<SPAN class="code-quote">&quot;1.0&quot;</SPAN>
+                xmlns:ed=<SPAN class="code-quote">&quot;http:<SPAN class="code-comment">//greenbytes.de/2002/rfcedit&quot;</SPAN>
+</SPAN>                xmlns:exslt=<SPAN class="code-quote">&quot;http:<SPAN class="code-comment">//exslt.org/common&quot;</SPAN>
+</SPAN>                xmlns:nt=<SPAN class="code-quote">&quot;http:<SPAN class="code-comment">//www.jcp.org/jcr/nt/1.0&quot;</SPAN>
+</SPAN>                xmlns:sv=<SPAN class="code-quote">&quot;http:<SPAN class="code-comment">//www.jcp.org/jcr/sv/1.0&quot;</SPAN>
+</SPAN>                xmlns:jcr=<SPAN class="code-quote">&quot;http:<SPAN class="code-comment">//www.jcp.org/jcr/1.0&quot;</SPAN>
+</SPAN>&gt;
+
+&lt;xsl:output method=<SPAN class="code-quote">&quot;text&quot;</SPAN> encoding=<SPAN class="code-quote">&quot;UTF-8&quot;</SPAN>/&gt;
+
+&lt;xsl:template match=<SPAN class="code-quote">&quot;/&quot;</SPAN>&gt;
+  &lt;xsl:text&gt;digraph {&amp;#10;&lt;/xsl:text&gt;
+  &lt;xsl:text&gt;  rankdir=LR;&amp;#10;&lt;/xsl:text&gt;
+  &lt;xsl:apply-templates select=<SPAN class="code-quote">&quot;<SPAN class="code-comment">//sv:node[sv:property[@sv:name='jcr:primaryType']/sv:value='nt:nodeType']&quot;</SPAN>/&gt;
+</SPAN>  &lt;xsl:text&gt;}&amp;#10;&lt;/xsl:text&gt;
+&lt;/xsl:template&gt;
+
+&lt;xsl:template match=<SPAN class="code-quote">&quot;sv:node[sv:property[@sv:name='jcr:primaryType']/sv:value='nt:nodeType']&quot;</SPAN>&gt;
+  &lt;xsl:text&gt;  &quot;&lt;/xsl:text&gt;
+  &lt;xsl:value-of select=<SPAN class="code-quote">&quot;@sv:name&quot;</SPAN>/&gt;
+  &lt;xsl:text&gt;&quot; &lt;/xsl:text&gt;
+  &lt;xsl:choose&gt;
+    &lt;xsl:when test=<SPAN class="code-quote">&quot;sv:property[@sv:name='jcr:isMixin']/sv:value='<SPAN class="code-keyword">true</SPAN>'&quot;</SPAN>&gt;
+      &lt;xsl:text&gt;[style = <SPAN class="code-quote">&quot;filled, rounded&quot;</SPAN>, fillcolor = greenyellow];&lt;/xsl:text&gt;
+    &lt;/xsl:when&gt;
+    &lt;xsl:otherwise&gt;
+      &lt;xsl:text&gt;[style = <SPAN class="code-quote">&quot;filled, rounded&quot;</SPAN>, fillcolor = gold];&lt;/xsl:text&gt;
+    &lt;/xsl:otherwise&gt;
+  &lt;/xsl:choose&gt;
+  &lt;xsl:text&gt;&amp;#10;&lt;/xsl:text&gt;
+  
+  &lt;xsl:<SPAN class="code-keyword">for</SPAN>-each select=<SPAN class="code-quote">&quot;sv:property[@sv:name='jcr:supertypes']/sv:value&quot;</SPAN>&gt;
+    &lt;xsl:text&gt;  &quot;&lt;/xsl:text&gt;
+    &lt;xsl:value-of select=<SPAN class="code-quote">&quot;.&quot;</SPAN>/&gt;
+    &lt;xsl:text&gt;<SPAN class="code-quote">&quot; -&gt; &quot;</SPAN>&lt;/xsl:text&gt;
+    &lt;xsl:value-of select=<SPAN class="code-quote">&quot;../../@sv:name&quot;</SPAN>/&gt;
+    &lt;xsl:text&gt;<SPAN class="code-quote">&quot; [dir = back, tooltip = &quot;</SPAN>supertype&quot;];&amp;#10;&lt;/xsl:text&gt;
+  &lt;/xsl:<SPAN class="code-keyword">for</SPAN>-each&gt;
+  
+  &lt;xsl:<SPAN class="code-keyword">for</SPAN>-each select=<SPAN class="code-quote">&quot;sv:node[@sv:name='jcr:childNodeDefinition']&quot;</SPAN>&gt;
+  
+    &lt;xsl:variable name=<SPAN class="code-quote">&quot;name&quot;</SPAN>&gt;
+      &lt;xsl:choose&gt;
+        &lt;xsl:when test=<SPAN class="code-quote">&quot;sv:property[@sv:name='jcr:name']&quot;</SPAN>&gt;
+          &lt;xsl:value-of select=<SPAN class="code-quote">&quot;sv:property[@sv:name='jcr:name']/sv:value&quot;</SPAN>/&gt;
+        &lt;/xsl:when&gt;
+        &lt;xsl:otherwise&gt;*&lt;/xsl:otherwise&gt;
+      &lt;/xsl:choose&gt;
+    &lt;/xsl:variable&gt;
+
+    &lt;xsl:variable name=<SPAN class="code-quote">&quot;id&quot;</SPAN> select=<SPAN class="code-quote">&quot;generate-id()&quot;</SPAN>/&gt;
+    
+    &lt;xsl:value-of select=<SPAN class="code-quote">&quot;concat('  &amp;quot;',$id,'&amp;quot; [shape = box, style = filled, fillcolor = khaki, label=&amp;quot;',$name,'&amp;quot;] &amp;#10;')&quot;</SPAN>/&gt;
+    
+    &lt;xsl:text&gt;  &quot;&lt;/xsl:text&gt;
+    &lt;xsl:value-of select=<SPAN class="code-quote">&quot;../@sv:name&quot;</SPAN>/&gt;
+    &lt;xsl:text&gt;<SPAN class="code-quote">&quot; -&gt; &quot;</SPAN>&lt;/xsl:text&gt;
+    &lt;xsl:value-of select=<SPAN class="code-quote">&quot;$id&quot;</SPAN>/&gt;
+    &lt;xsl:choose&gt;
+      &lt;xsl:when test=<SPAN class="code-quote">&quot;sv:property[@sv:name='jcr:mandatory']/sv:value='<SPAN class="code-keyword">true</SPAN>'&quot;</SPAN>&gt;
+        &lt;xsl:text&gt;<SPAN class="code-quote">&quot; [tooltip = &quot;</SPAN>is mandatory child node of&quot;, dir = back];&amp;#10;&lt;/xsl:text&gt;
+      &lt;/xsl:when&gt;
+      &lt;xsl:otherwise&gt;
+        &lt;xsl:text&gt;<SPAN class="code-quote">&quot; [style = dotted, tooltip = &quot;</SPAN>is child node of&quot;, dir = back];&amp;#10;&lt;/xsl:text&gt;
+      &lt;/xsl:otherwise&gt;
+    &lt;/xsl:choose&gt;
+    
+    &lt;xsl:text&gt;  &quot;&lt;/xsl:text&gt;
+    &lt;xsl:value-of select=<SPAN class="code-quote">&quot;sv:property[@sv:name='jcr:requiredPrimaryTypes']/sv:value&quot;</SPAN>/&gt;
+    &lt;xsl:text&gt;<SPAN class="code-quote">&quot; -&gt; &quot;</SPAN>&lt;/xsl:text&gt;
+    &lt;xsl:value-of select=<SPAN class="code-quote">&quot;$id&quot;</SPAN>/&gt;
+    &lt;xsl:text&gt;<SPAN class="code-quote">&quot; [dir = back, tooltip = &quot;</SPAN>has primary type&quot;];&amp;#10;&lt;/xsl:text&gt;
+
+  &lt;/xsl:<SPAN class="code-keyword">for</SPAN>-each&gt;
+  
+&lt;/xsl:template&gt;
+
+&lt;/xsl:transform&gt;
+</PRE>
+</DIV></DIV>
+        </DIV>
+        <DIV id="end"></DIV>
+      </DIV>
+      <DIV id="footer">
+        <P>
+          &copy; 2004-2010 The Apache Software Foundation.
+          - <A href="http://jackrabbit.apache.org/privacy-policy.html">Privacy Policy</A> -
+          [<A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=75306">edit this page</A>]
+          <BR>
+          Apache Jackrabbit, Jackrabbit, Apache, the Apache feather logo, and the Apache
+          Jackrabbit project logo are trademarks of The Apache Software Foundation.
+        </P>
+      </DIV>
+    </DIV>
+<!-- JCR- 1315: Add Google Analytics to Jackrabbit web site -->
+<SCRIPT type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</SCRIPT>
+<SCRIPT type="text/javascript">
+var pageTracker = _gat._getTracker("UA-837900-2");
+pageTracker._initData();
+pageTracker._trackPageview();
+</SCRIPT>
+  </BODY>
+</HTML>

Added: websites/staging/jackrabbit/trunk/content/JCR/node-types.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/JCR/node-types.html (added)
+++ websites/staging/jackrabbit/trunk/content/JCR/node-types.html Mon Dec 31 12:40:56 2012
@@ -0,0 +1,218 @@
+
+<!-- 
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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. 
+-->
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>Node Types</TITLE>
+    <LINK type="text/css" rel="stylesheet" href="http://jackrabbit.apache.org/style/site.css">
+  <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
+  <BODY>
+    <DIV id="page">
+      <DIV id="header">
+        <P id="jcr"><A href="http://jackrabbit.apache.org/"><IMG src="http://jackrabbit.apache.org/style/jlogo.gif" alt="Apache Jackrabbit" height="100" width="336"></A></P>
+        <P id="asf"><A href="http://www.apache.org/"><IMG src="http://jackrabbit.apache.org/style/asf-logo.gif" alt="Apache Software Foundation" height="100" width="387"></A></P>
+      </DIV>
+      <DIV id="body">
+        <DIV id="navigation">
+  <UL>
+	<LI>Apache Jackrabbit
+	<UL>
+		<LI><A href="welcome-to-apache-jackrabbit.html" title="Welcome to Apache Jackrabbit">Welcome</A></LI>
+		<LI><A href="downloads.html" title="Downloads">Downloads</A></LI>
+		<LI><A href="frequently-asked-questions.html" title="Frequently Asked Questions">FAQ</A></LI>
+		<LI><A href="http://wiki.apache.org/jackrabbit/FrontPage" class="external-link">Jackrabbit Wiki</A></LI>
+		<LI><A href="jackrabbit-history.html" title="Jackrabbit History">Jackrabbit History</A></LI>
+	</UL>
+	</LI>
+	<LI>Documentation
+	<UL>
+		<LI><A href="getting-started-with-apache-jackrabbit.html" title="Getting Started with Apache Jackrabbit">Getting Started</A></LI>
+		<LI><A href="standalone-server.html" title="Standalone Server">Standalone Server</A></LI>
+		<LI><A href="jackrabbit-components.html" title="Jackrabbit Components">Jackrabbit Components</A></LI>
+		<LI><A href="first-hops.html" title="First Hops">First Hops</A></LI>
+		<LI><A href="jcr-api.html" title="JCR & API">JCR &amp; API</A></LI>
+		<LI><A href="jackrabbit-architecture.html" title="Jackrabbit Architecture">Jackrabbit Architecture</A></LI>
+		<LI><A href="deployment-models.html" title="Deployment Models">Deployment Models</A></LI>
+		<LI><A href="jackrabbit-configuration.html" title="Jackrabbit Configuration">Jackrabbit Configuration</A></LI>
+		<LI><A href="" title="Node Types">Node Types</A></LI>
+		<LI><A href="object-content-mapping.html" title="Object Content Mapping">Object Content Mapping</A></LI>
+	</UL>
+	</LI>
+	<LI>Development
+	<UL>
+		<LI><A href="jackrabbit-team.html" title="Jackrabbit Team">Jackrabbit Team</A></LI>
+		<LI><A href="jackrabbit-roadmap.html" title="Jackrabbit Roadmap">Jackrabbit Roadmap</A></LI>
+		<LI><A href="building-jackrabbit.html" title="Building Jackrabbit">Building Jackrabbit</A></LI>
+		<LI><A href="mailing-lists.html" title="Mailing Lists">Mailing Lists</A></LI>
+		<LI><A href="issue-tracker.html" title="Issue Tracker">Issue Tracker</A></LI>
+		<LI><A href="source-repository.html" title="Source Repository">Source Repository</A></LI>
+		<LI><A href="continuous-integration.html" title="Continuous Integration">Continuous Integration</A></LI>
+		<LI><A href="website.html" title="Website">Website</A></LI>
+		<LI><A href="creating-releases.html" title="Creating Releases">Creating Releases</A></LI>
+		<LI><A href="supporting-software-attribution.html" title="Supporting software attribution">Attribution</A></LI>
+	</UL>
+	</LI>
+	<LI>Apache Software Foundation
+	<UL>
+		<LI><A href="http://www.apache.org/foundation/how-it-works.html" class="external-link">Introduction</A></LI>
+		<LI><A href="http://www.apache.org/foundation/sponsorship.html" class="external-link">Sponsorship</A></LI>
+		<LI><A href="http://www.apache.org/foundation/thanks.html" class="external-link">Current Sponsors</A></LI>
+	</UL>
+	</LI>
+</UL>
+        </DIV>
+        <DIV id="content">
+          <H1>Node Types</H1>
+  <P>Each node in a Jackrabbit workspace tree has a node type that defines the child nodes and properties it may (or must) have. Developers can use node types to define a custom content model for their application domain and have Jackrabbit enforce the constraints of that model at the repository level.</P>
+
+<H2><A name="NodeTypes-PrimaryvsMixin"></A>Primary vs Mixin</H2>
+
+<P>There are two categories of node types, <B>primary</B> and <B>mixin</B>. Every node has a primary node type assigned to it upon creation (see <TT>Node.addNode</TT> in the JCR API). In addition, a mixin node type may be added to a node later in its lifecycle (see <TT>Node.addMixin</TT>).</P>
+
+<P>The primary node type of a node usually defines node structure (i.e., allowed and required child nodes and properties) related to the problem domain being modeled. For example, a node used in storing content about business contacts might have the primary type <TT>myapp:Contact</TT> which defines properties such as <TT>myapp:givenName</TT>, <TT>myapp:familyName</TT> and so forth.</P>
+
+<P>Mixin node types usually specify additional properties or child nodes related to a capability being added to the node. These capabilities may include generic repository-level functions as in the case of the built-in mixins <TT>mix:versionable</TT> and <TT>mix:lockable</TT>, for example, or domain-level capabilities such as a (hypothetical) <TT>myapp:Emailable</TT> mixin type that adds the property <TT>myapp:emailAddress</TT> to a node.</P>
+
+<H2><A name="NodeTypes-Inheritance"></A>Inheritance</H2>
+
+<P>Primary node types are arranged in an inheritance hierarchy. Every primary node type must be the subtype of at least one existing node type. The built-in node type <TT>nt:base</TT> serves as the root of this hierarchy. Jackrabbit supports multiple inheritance of node types so node types can have more than one supertype.</P>
+
+<P>Mixin node types do not have to have supertypes.</P>
+
+<P>The JSR 170 specification and the current public review draft of the JSR 283 specification (section 4.7.7) leave it up to the implementation whether e.g. the orderable child nodes setting is inherited from supertypes. Inheritance semantics, especially with multiple inheritance, are non-trivial at best and up to a certain degree arbitrary. Jackrabbit therefore, in compliance with the spec, doesn't support inheritance of node type attributes such as orderable.</P>
+
+<H2><A name="NodeTypes-NodeTypeDefinition"></A>Node Type Definition</H2>
+
+<P>A node type definition has the following attributes:</P>
+
+<UL>
+	<LI><B>Name</B> Every node type registered with the repository has a unique name. The naming conventions for node                     types are the same as for items (i.e., they may have a colon delimited prefix).</LI>
+	<LI><B>Supertypes</B> A primary node type (with the exception of <TT>nt:base</TT>) must extend another node type (and may extend more than one node type). A mixin node type may extend another node type.</LI>
+	<LI><B>Mixin Status</B> A node type may be either primary or mixin.</LI>
+	<LI><B>Orderable Child Nodes Status</B> A primary node type may specify that child nodes are client-orderable. If this status is set to true, then <TT>Node.orderBefore</TT> can be used to set the order of child nodes. Only primary node types control a node's status in this regard. This setting on a mixin node type will not have                     any effect on the node.</LI>
+	<LI><B>Property Definitions</B> A node type contains a set of definitions specifying the properties that nodes of this node type are allowed (or required) to have and the characteristics of those properties (see below).</LI>
+	<LI><B>Child Node Definitions</B> A node type contains a set of definitions specifying the child nodes that nodes of this node type are allowed (or required) to have and the characteristics of those child nodes (including, in turn, their node types, see below).</LI>
+	<LI><B>Primary Item Name</B> A node type may specify one child item (property or node) by name as the primary item. This indicator is used by the method <TT>Node.getPrimaryItem()</TT>.</LI>
+</UL>
+
+
+<H2><A name="NodeTypes-PropertyDefinition"></A>Property Definition</H2>
+
+<P>A property definition (within a node type definition) contains the the following information:</P>
+
+<UL>
+	<LI><B>Name</B> The name of the property to which this definition applies, or &quot;<TT>*</TT>&quot; if this definition is                         a &quot;residual definition', meaning that it applies to any additional properties with any names apart from those otherwise defined in this node type.</LI>
+	<LI><B>Required Type</B> The required type of the property. One of
+	<UL>
+		<LI><TT>STRING</TT></LI>
+		<LI><TT>BINARY</TT></LI>
+		<LI><TT>LONG</TT></LI>
+		<LI><TT>DOUBLE</TT></LI>
+		<LI><TT>BOOLEAN</TT></LI>
+		<LI><TT>DATE</TT></LI>
+		<LI><TT>PATH</TT></LI>
+		<LI><TT>NAME</TT></LI>
+		<LI><TT>REFERENCE</TT></LI>
+		<LI><TT>UNDEFINED</TT> (the property can be of any type)</LI>
+	</UL>
+	</LI>
+	<LI><B>Value Constraints</B> The value constraints on the property define the range of values that may be assigned                         to this property.</LI>
+	<LI><B>Default Value</B> The value that the property will have if it is auto-created.</LI>
+	<LI><B>Auto-create Status</B> Whether this property will be auto-created when its parent node is created. Only properties with a default value can be auto-created.</LI>
+	<LI><B>Mandatory Status</B> A mandatory property is one that must exist. If a node of a type that specifies a                         mandatory property is created then any attempt to save that node without adding the mandatory property will fail. Since single-value properties either have a value or do not exist (there being no concept of the null value) this implies that a mandatory single-value property must have a value. A mandatory multi-value property on the other hand may have zero or more values.</LI>
+	<LI><B>On-Parent-Version Status</B> The <TT>onParentVersion</TT> status of specifies what happens to this property if a                         new version of its parent node is created (i.e. a checked-in is done on it).</LI>
+	<LI><B>Protected Status</B> A protected property is one which cannot be modified (i.e. have child nodes or properties added or removed) or removed from its parent through the JCR API.</LI>
+	<LI><B>Multiple Values Status</B> Whether this property can have multiple values, meaning that it stores an array of values, not just one. Note that this &quot;multiple values&quot; flag is special in that a given node type may have two property definitions that are identical in every respect except for the their &quot;multiple values&quot; status. For example, a node type can specify two string properties both called X, one of which is multi-valued and the other that is not. An example of such a node type is <TT>nt:unstructured</TT>.</LI>
+</UL>
+
+
+<H2><A name="NodeTypes-ChildNodeDefinition"></A>Child Node Definition</H2>
+
+<P>A child node definition (within a node type definition) contains the the following information:</P>
+
+<UL>
+	<LI><B>Name</B> The name of the child node to which this definition applies or &quot;<TT>*</TT>&quot; if this definition is                         a &quot;residual definition', meaning that it applies to any additional child nodes with any                         names apart from those otherwise defined in this node type.</LI>
+	<LI><B>Required Primary Types</B> If it specifies only a single node type N then the primary node type of this child node must be N or a subtype of N. If this attribute specifies multiple node types N1, N2,..., Nm then the primary node type of this child node must be a subtype of all the types N1, N2, ... Nm. Note that this                         is possible because Jackrabbit supports multiple inheritance among node types and that each node still has one and only one primary node type.</LI>
+	<LI><B>Default Primary Type</B> This is the primary node type automatically assigned if no node type information is specified when the node is created.</LI>
+	<LI><B>Auto-create Status</B> Governs whether this child node will be auto-created when its parent node is created.</LI>
+	<LI><B>Mandatory Status</B> Governs whether the child node is mandatory. A mandatory child node is one that must exist. If a mandatory child node is missing from a parent node then save on the parent node will fail.</LI>
+	<LI><B>On-Parent-Version Status</B> This specifies what to do with the child node if its parent node is versioned.</LI>
+	<LI><B>Protected Status</B> This governs whether the child node is protected. A protected node is one which cannot be modified (have child node or properties added to it or removed from it) or be removed from its                         parent through the JCR API.</LI>
+	<LI><B>Same-Name Siblings Status</B> This governs whether this child node can have same-name siblings, meaning that the parent node can have more than one child node of this name.</LI>
+</UL>
+
+
+<H2><A name="NodeTypes-RegisteringNodeTypes"></A>Registering Node Types</H2>
+
+<P>Each Jackrabbit instance has a <TT>NodeTypeRegistry</TT> which is created on start-up and populated with the set of built-in node types (these include both those required by the JCR specification and others required by the Jackrabbit implementation).</P>
+
+<P>First you define your node types in a text file using the &quot;Compact Namespace and Node Type Definition&quot; (CND) notation, then register them using the  <A href="http://jackrabbit.apache.org/api/1.5/org/apache/jackrabbit/api/JackrabbitNodeTypeManager.html" class="external-link"><TT>JackrabbitNodeTypeManager</TT></A>. The following code gives an example:</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+<SPAN class="code-keyword">import</SPAN> javax.jcr.Session;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.api.JackrabbitNodeTypeManager;
+<SPAN class="code-keyword">import</SPAN> java.io.FileInputStream;
+
+<SPAN class="code-keyword">public</SPAN> class CustomNodeTypeExample {
+    <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">static</SPAN> void RegisterCustomNodeTypes(Session session, <SPAN class="code-object">String</SPAN> cndFileName)
+        <SPAN class="code-keyword">throws</SPAN> Exception {
+
+        <SPAN class="code-comment">// Get the JackrabbitNodeTypeManager from the Workspace.
+</SPAN>        <SPAN class="code-comment">// Note that it must be <SPAN class="code-keyword">cast</SPAN> from the <SPAN class="code-keyword">generic</SPAN> JCR NodeTypeManager to the
+</SPAN>        <SPAN class="code-comment">// Jackrabbit-specific implementation.
+</SPAN>        JackrabbitNodeTypeManager manager = (JackrabbitNodeTypeManager)
+               session.getWorkspace().getNodeTypeManager();
+        <SPAN class="code-comment">// Register the custom node types defined in the CND file
+</SPAN>        manager.registerNodeTypes(<SPAN class="code-keyword">new</SPAN> FileInputStream(cndFileName),
+               JackrabbitNodeTypeManager.TEXT_X_JCR_CND);
+    }
+}
+</PRE>
+</DIV></DIV>
+
+<P>Continue to <A href="node-type-notation.html" title="Node Type Notation">Node Type Notation</A> or <A href="node-type-visualization.html" title="Node Type Visualization">Node Type Visualization</A></P>
+        </DIV>
+        <DIV id="end"></DIV>
+      </DIV>
+      <DIV id="footer">
+        <P>
+          &copy; 2004-2010 The Apache Software Foundation.
+          - <A href="http://jackrabbit.apache.org/privacy-policy.html">Privacy Policy</A> -
+          [<A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=75299">edit this page</A>]
+          <BR>
+          Apache Jackrabbit, Jackrabbit, Apache, the Apache feather logo, and the Apache
+          Jackrabbit project logo are trademarks of The Apache Software Foundation.
+        </P>
+      </DIV>
+    </DIV>
+<!-- JCR- 1315: Add Google Analytics to Jackrabbit web site -->
+<SCRIPT type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</SCRIPT>
+<SCRIPT type="text/javascript">
+var pageTracker = _gat._getTracker("UA-837900-2");
+pageTracker._initData();
+pageTracker._trackPageview();
+</SCRIPT>
+  </BODY>
+</HTML>

Added: websites/staging/jackrabbit/trunk/content/JCR/object-content-manager.html
==============================================================================
--- websites/staging/jackrabbit/trunk/content/JCR/object-content-manager.html (added)
+++ websites/staging/jackrabbit/trunk/content/JCR/object-content-manager.html Mon Dec 31 12:40:56 2012
@@ -0,0 +1,231 @@
+
+<!-- 
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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. 
+-->
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+  <HEAD>
+    <TITLE>Object Content Manager</TITLE>
+    <LINK type="text/css" rel="stylesheet" href="http://jackrabbit.apache.org/style/site.css">
+  <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
+  <BODY>
+    <DIV id="page">
+      <DIV id="header">
+        <P id="jcr"><A href="http://jackrabbit.apache.org/"><IMG src="http://jackrabbit.apache.org/style/jlogo.gif" alt="Apache Jackrabbit" height="100" width="336"></A></P>
+        <P id="asf"><A href="http://www.apache.org/"><IMG src="http://jackrabbit.apache.org/style/asf-logo.gif" alt="Apache Software Foundation" height="100" width="387"></A></P>
+      </DIV>
+      <DIV id="body">
+        <DIV id="navigation">
+  <UL>
+	<LI>Apache Jackrabbit
+	<UL>
+		<LI><A href="welcome-to-apache-jackrabbit.html" title="Welcome to Apache Jackrabbit">Welcome</A></LI>
+		<LI><A href="downloads.html" title="Downloads">Downloads</A></LI>
+		<LI><A href="frequently-asked-questions.html" title="Frequently Asked Questions">FAQ</A></LI>
+		<LI><A href="http://wiki.apache.org/jackrabbit/FrontPage" class="external-link">Jackrabbit Wiki</A></LI>
+		<LI><A href="jackrabbit-history.html" title="Jackrabbit History">Jackrabbit History</A></LI>
+	</UL>
+	</LI>
+	<LI>Documentation
+	<UL>
+		<LI><A href="getting-started-with-apache-jackrabbit.html" title="Getting Started with Apache Jackrabbit">Getting Started</A></LI>
+		<LI><A href="standalone-server.html" title="Standalone Server">Standalone Server</A></LI>
+		<LI><A href="jackrabbit-components.html" title="Jackrabbit Components">Jackrabbit Components</A></LI>
+		<LI><A href="first-hops.html" title="First Hops">First Hops</A></LI>
+		<LI><A href="jcr-api.html" title="JCR & API">JCR &amp; API</A></LI>
+		<LI><A href="jackrabbit-architecture.html" title="Jackrabbit Architecture">Jackrabbit Architecture</A></LI>
+		<LI><A href="deployment-models.html" title="Deployment Models">Deployment Models</A></LI>
+		<LI><A href="jackrabbit-configuration.html" title="Jackrabbit Configuration">Jackrabbit Configuration</A></LI>
+		<LI><A href="node-types.html" title="Node Types">Node Types</A></LI>
+		<LI><A href="object-content-mapping.html" title="Object Content Mapping">Object Content Mapping</A></LI>
+	</UL>
+	</LI>
+	<LI>Development
+	<UL>
+		<LI><A href="jackrabbit-team.html" title="Jackrabbit Team">Jackrabbit Team</A></LI>
+		<LI><A href="jackrabbit-roadmap.html" title="Jackrabbit Roadmap">Jackrabbit Roadmap</A></LI>
+		<LI><A href="building-jackrabbit.html" title="Building Jackrabbit">Building Jackrabbit</A></LI>
+		<LI><A href="mailing-lists.html" title="Mailing Lists">Mailing Lists</A></LI>
+		<LI><A href="issue-tracker.html" title="Issue Tracker">Issue Tracker</A></LI>
+		<LI><A href="source-repository.html" title="Source Repository">Source Repository</A></LI>
+		<LI><A href="continuous-integration.html" title="Continuous Integration">Continuous Integration</A></LI>
+		<LI><A href="website.html" title="Website">Website</A></LI>
+		<LI><A href="creating-releases.html" title="Creating Releases">Creating Releases</A></LI>
+		<LI><A href="supporting-software-attribution.html" title="Supporting software attribution">Attribution</A></LI>
+	</UL>
+	</LI>
+	<LI>Apache Software Foundation
+	<UL>
+		<LI><A href="http://www.apache.org/foundation/how-it-works.html" class="external-link">Introduction</A></LI>
+		<LI><A href="http://www.apache.org/foundation/sponsorship.html" class="external-link">Sponsorship</A></LI>
+		<LI><A href="http://www.apache.org/foundation/thanks.html" class="external-link">Current Sponsors</A></LI>
+	</UL>
+	</LI>
+</UL>
+        </DIV>
+        <DIV id="content">
+          <H1>Object Content Manager</H1>
+  <P>The main component in the OCM framework is the ObjectContentManager. It converts an object graph into JCR nodes and properties and vice versa. The ObjectContentManager is always associated with a JCR Session. It is used to retrieve, create, update and delete objects from a JCR content repository. Usually there is one ObjectContentManager per user session.</P>
+
+<P>This page describes how an ObjectContentManager is working and how it can be initialised in your applications. </P>
+
+<H2><A name="ObjectContentManager-HowdoestheObjectContentManagerwork%3F"></A>How does the Object Content Manager work ?</H2>
+
+<P>Thanks to a Mapping Descriptor, the ObjectContentManager is able to use the appropriate mapping strategy for each persistent object (pojo). The Mapping Descriptor contains one Class Descriptor per persistent class. Each Class Descriptor contains mapping information for the corresponding class attributes.</P>
+
+<P>In the point of view implementation, the Mappring Descriptor is a java object injected into the ObjectContentManager (see the interface org.apache.jackrabbit.ocm.mapper.Mapper). Right now, there are 2 different Mapping Descriptor implementations:</P>
+
+<UL>
+	<LI>Annotation : each persistent object is annoted in order to provide to the ObjectContentManager all the required information on its mapping strategy (see the class org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationMapperImpl).</LI>
+	<LI>XML configuration file : the class descriptors are defined in one or more XML config files used by the ObjectContentManager when it is instantiated (see the class org.apache.jackrabbit.ocm.mapper.impl.digester.DigesterMapperImpl).</LI>
+</UL>
+
+
+<P>For a business developer, it is not necessary to know how the ObjectContentManager is using the Class Descriptors. He has to make only a choice between annoted classes or XML files. Below, you can see how to setup correctly an ObjectContentManager. </P>
+
+<H2><A name="ObjectContentManager-HowdoesanobjectispersistedintoaJCRrepository%3F"></A>How does an object is persisted into a JCR repository ?</H2>
+
+<P>In all cases, a persistent object (a pojo) is mapped into a JCR node and its fields are mapped into subnodes or properties depending on their types.</P>
+
+<P>There are 3 &quot;field types&quot;:</P>
+
+<UL>
+	<LI>Atomic fields<BR>
+    Primitive data types and simple objects (String, Long, Double, ...) . Those fields are mapped into JCR properties. </LI>
+</UL>
+
+
+<UL>
+	<LI>Bean fields<BR>
+    One class can contain an 1..1 association to another bean. In this case, the field is a custom object. Those fields are mapped into JCR subnodes or a referenced node. </LI>
+</UL>
+
+
+<UL>
+	<LI>Collection fields<BR>
+    One class can contain an 1..n association to a collection of beans (or Map). Those fields are mapped into a collection of JCR subnodes or a collection of referenced nodes. It is also possible to map a java collection into a multivalue property. </LI>
+</UL>
+
+
+<P>The Mapping descriptor contains also information on inheritances, interface mapping strategy, lazy loading, custom converter, cache strategy, etc. </P>
+<H2><A name="ObjectContentManager-Basicsetup%28withannotedpersistentclasses%29"></A>Basic setup (with annoted persistent classes)</H2>
+
+<P>When you start your application, you need the following code to initialize correctly the Object Content Manager.</P>
+
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+<SPAN class="code-keyword">import</SPAN> javax.jcr.Session;
+<SPAN class="code-keyword">import</SPAN> javax.jcr.Repository;
+		      
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.mapper.Mapper;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationMapperImpl;
+
+		      
+<SPAN class="code-comment">// 1. Instantiate a JCR session
+</SPAN>Repository repository = ...;
+Session session = repository.login(...);
+		      
+<SPAN class="code-comment">// 2. Register the different persistent classes
+</SPAN>List classes = <SPAN class="code-keyword">new</SPAN> ArrayList();
+classes.add(MyContent.class); <SPAN class="code-comment">// Call <SPAN class="code-keyword">this</SPAN> method <SPAN class="code-keyword">for</SPAN> each persistent class
+</SPAN>
+				      
+<SPAN class="code-comment">// 3. Instantiate the object content manager
+</SPAN>Mapper mapper = <SPAN class="code-keyword">new</SPAN> AnnotationMapperImpl(classes);
+ObjectContentManager ocm = <SPAN class="code-keyword">new</SPAN> ObjectContentManagerImpl(session, mapper);
+</PRE>
+</DIV></DIV>
+
+<H2><A name="ObjectContentManager-Basicsetup%28withoneormoreXMLMappingDescriptorfiles%29"></A>Basic setup (with one or more XML Mapping Descriptor files)</H2>
+
+<P>When you start your application, you need the following code to initialize correctly the Object Content Manager.</P>
+<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
+<PRE class="code-java">
+<SPAN class="code-keyword">import</SPAN> javax.jcr.Session;
+<SPAN class="code-keyword">import</SPAN> javax.jcr.Repository;
+
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.mapper.Mapper;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.mapper.impl.digester.DigesterMapperImpl;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.manager.ObjectContentManager;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.manager.atomictypeconverter.AtomicTypeConverterProvider;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.manager.atomictypeconverter.impl.DefaultAtomicTypeConverterProvider;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.manager.objectconverter.ObjectConverter;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.query.QueryManager;
+<SPAN class="code-keyword">import</SPAN> org.apache.jackrabbit.ocm.query.impl.QueryManagerImpl;
+
+<SPAN class="code-comment">// 1. Instantiate a JCR session
+</SPAN>Repository repository = ...;
+Session session = repository.login(...);
+
+<SPAN class="code-comment">// 2. Specify the different mapping files
+</SPAN><SPAN class="code-object">String</SPAN>[] files = {
+      <SPAN class="code-quote">&quot;./src/test-config/jcrmapping.xml&quot;</SPAN>,
+      <SPAN class="code-quote">&quot;./src/test-config/jcrmapping-atomic.xml&quot;</SPAN>,
+      <SPAN class="code-quote">&quot;./src/test-config/jcrmapping-beandescriptor.xml&quot;</SPAN>
+  };
+
+<SPAN class="code-comment">// 3. Instantiate the object content manager
+</SPAN>ObjectContentManager ocm = <SPAN class="code-keyword">new</SPAN> ObjectContentManagerImpl(session, files);
+
+</PRE>
+</DIV></DIV>
+
+
+<H2><A name="ObjectContentManager-APIOverview"></A>API Overview</H2>
+
+<P>With the current Object Manager API, it is possible to:</P>
+
+<UL>
+	<LI>Manage the object life cycle (insert, update, delete, retrieve). See <A href="basic-ocm-operations.html" title="Basic OCM operations">Basic OCM operations</A>.</LI>
+	<LI>Search single object or collections with criteria. See <A href="ocm-search.html" title="OCM Search">OCM Search</A>.</LI>
+	<LI>Lock objects. See <A href="ocm-locking.html" title="OCM Locking">OCM Locking</A>.</LI>
+	<LI>Manage versions (check int, check out, create a new version, show history). See <A href="ocm-version-management.html" title="OCM Version Management">OCM Version Management</A>.</LI>
+</UL>
+
+
+<P>We plan to add other features in a future release. </P>
+        </DIV>
+        <DIV id="end"></DIV>
+      </DIV>
+      <DIV id="footer">
+        <P>
+          &copy; 2004-2010 The Apache Software Foundation.
+          - <A href="http://jackrabbit.apache.org/privacy-policy.html">Privacy Policy</A> -
+          [<A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=75349">edit this page</A>]
+          <BR>
+          Apache Jackrabbit, Jackrabbit, Apache, the Apache feather logo, and the Apache
+          Jackrabbit project logo are trademarks of The Apache Software Foundation.
+        </P>
+      </DIV>
+    </DIV>
+<!-- JCR- 1315: Add Google Analytics to Jackrabbit web site -->
+<SCRIPT type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</SCRIPT>
+<SCRIPT type="text/javascript">
+var pageTracker = _gat._getTracker("UA-837900-2");
+pageTracker._initData();
+pageTracker._trackPageview();
+</SCRIPT>
+  </BODY>
+</HTML>