You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by pp...@apache.org on 2005/12/08 11:39:08 UTC

svn commit: r355066 - in /incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc: about.xml doc/index.xml doc/nodetype/ doc/nodetype/cnd.xml doc/nodetype/index.xml images/nodetype/ images/nodetype/thumb_cnd.jpg index.xml navigation.xml

Author: ppiegaze
Date: Thu Dec  8 02:38:59 2005
New Revision: 355066

URL: http://svn.apache.org/viewcvs?rev=355066&view=rev
Log:
added new friendlier "home" page, demoting "about" page
added Nodetypes section, and made connected changes to doc/index.xml and navigation.xml

Added:
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype/
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype/cnd.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype/index.xml   (with props)
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/images/nodetype/
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/images/nodetype/thumb_cnd.jpg   (with props)
Modified:
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/about.xml
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/index.xml
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/index.xml
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/navigation.xml

Modified: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/about.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/about.xml?rev=355066&r1=355065&r2=355066&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/about.xml (original)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/about.xml Thu Dec  8 02:38:59 2005
@@ -16,64 +16,48 @@
    limitations under the License.
   -->
 <document>
- <properties>
-  <title>Overview</title>
- </properties>
- <body>
-
-<section name="Apache Jackrabbit">
-<p>
-<a href="http://www.apachecon.com/2005/US/index.html"
-   class="externalLink" title="External Link"><img
-   src="http://www.apache.org/images/ac2005us_white_184x80.jpg"
-   width="184" height="80" border="0" title="ApacheCon US 2005"
-   align="right" valign="top" alt="ApacheCon 2005 US"></img></a>
-The Apache Jackrabbit Project has been formed to develop an open source
-implementation of the Content Repository for Java Technology API (JCR),
-as specified within the Java Community Process as
-<a href="http://www.jcp.org/en/jsr/detail?id=170">JSR 170</a> and
-<a href="http://www.jcp.org/en/jsr/detail?id=170">JSR 283</a>.
-<a href="http://www.day.com/">Day Software</a>, the JCR specification lead,
-has licensed an initial implementation of the JCR reference implementation for
-use as seed code for this project.  JCR specifies an API for application
-developers (and application frameworks) to use for interaction with modern
-content repositories that provide content services such as searching,
-versioning, transactions, etc.
-</p>
-<p>
-Jackrabbit's implementation began as a proposal within the
-<a href="http://jakarta.apache.org/slide/index.html">Jakarta Slide</a>project,
-but has since attracted interest from multiple projects with the
-<a href="http://www.apache.org/">Apache Software Foundation</a>, including
-Slide, Cocoon, Lenya, XML Indexing, Axion, and Derby.  We are also looking at
-integration with projects such as Beehive, Maven, and Portals.
-</p>
-<p>
-The purpose of this incubation period is to attract additional contributors
-from other Apache projects and from the various expert group companies,
-learn the Apache way of doing things, and allow the developers to focus on this
-interface/implementation rather than all of the existing projects that might
-want to use it.  We hope to improve collaboration on the code base by moving
-all of the active developers and authors to Apache, bring in as many of the
-Apache veterans as wish to get involved, and open it up to all of the 22 expert
-group companies.  Development of the JCR RI and TCK will occur in this project
--- Day Software plans to continue participation in Jackrabbit and use the code
-in the official (binary) RI and TCK releases, allowing developers to beta test
-against the open source versions as well as the official versions.
-</p>
-</section>
-<section name="Releases">
-<p>
-See the <a href="downloads.html">downloads</a> page for information on
-obtaining releases.
-</p>
-</section>
-
-<section name="Documentation">
-<p>
-The <a href="apidocs/index.html">JavaDoc API documents</a> are available online.
-</p>
-</section>
-
-</body>
+    <properties>
+        <title>Overview</title>
+    </properties>
+    <body>
+        <section name="Apache Jackrabbit">
+            <p>
+                <a href="http://www.apachecon.com/2005/US/index.html" class="externalLink" title="External Link">
+                    <img src="http://www.apache.org/images/ac2005us_white_184x80.jpg"  width="184" height="80" border="0" title="ApacheCon US 2005" align="right" valign="top" alt="ApacheCon 2005 US"/>
+                </a>
+                The Apache Jackrabbit Project was formed to develop an open source
+                implementation of the Content Repository for Java Technology API (JCR),
+                as specified through the Java Community Process in
+                <a href="http://www.jcp.org/en/jsr/detail?id=170">Java Specification Request 170 (JSR 170)</a> and
+                <a href="http://www.jcp.org/en/jsr/detail?id=170">JSR 283</a>.
+                <a href="http://www.day.com/">Day Software</a>, the JCR specification lead,
+                has licensed an initial implementation of the JCR reference implementation for
+                use as seed code for this project. JCR specifies an API for application
+                developers (and application frameworks) to use for interaction with modern
+                content repositories that provide content services such as searching,
+                versioning, transactions, etc.
+            </p>
+            <p>
+                Jackrabbit's implementation began as a proposal within the
+                <a href="http://jakarta.apache.org/slide/index.html">Jakarta Slide</a>
+                project, but has since attracted interest from multiple projects with the
+                <a href="http://www.apache.org/">Apache Software Foundation</a>, including
+                Slide, Cocoon, Lenya, XML Indexing, Axion, and Derby. We are also looking at
+                integration with projects such as Beehive, Maven, and Portals.
+            </p>
+            <p>
+                The purpose of this incubation period is to attract additional contributors
+                from other Apache projects and from the various expert group companies,
+                learn the Apache way of doing things, and allow the developers to focus on this
+                interface/implementation rather than all of the existing projects that might
+                want to use it. We hope to improve collaboration on the code base by moving
+                all of the active developers and authors to Apache, bring in as many of the
+                Apache veterans as wish to get involved, and open it up to all of the 22 expert
+                group companies. Development of the JCR RI and TCK will occur in this project
+                -- Day Software plans to continue participation in Jackrabbit and use the code
+                in the official (binary) RI and TCK releases, allowing developers to beta test
+                against the open source versions as well as the official versions.
+            </p>
+        </section>
+    </body>
 </document>

Modified: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/index.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/index.xml?rev=355066&r1=355065&r2=355066&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/index.xml (original)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/index.xml Thu Dec  8 02:38:59 2005
@@ -43,15 +43,19 @@
 <p>
 <a href="arch/operate/index.html"><img align="left" style="margin:10px;padding:1px;border:1px solid black" src="../images/arch/thumb_ism.jpg" /></a>
 Find out more about the <a href="arch/overview.html">Jackrabbit Architecture</a> or
-learn more about the <a href="arch/deploy.html">Jackrabbit deployment Options</a> be
-it as an <a href="arch/deploy/howto-model1.html">embedded content repository</a> to be 
-delivered with you are application, a <a href="arch/deploy/howto-model2.html">shared repository</a> 
-for example in a J2EE environment or a classical <a href="arch/deploy/howto-model3.html">content repository server</a> setup.
+learn more about the <a href="deploy.html">Jackrabbit deployment Options</a> be
+it as an <a href="deploy/howto-model1.html">embedded content repository</a> to be 
+delivered with you are application, a <a href="deploy/howto-model2.html">shared repository</a> 
+for example in a J2EE environment or a classical <a href="deploy/howto-model3.html">content repository server</a> setup.
 <br clear="all"/>
 </p>
 </section>
-<section name="Nodetype Modelling Guide">
+<section name="Node Types">
 <p>
+<a href="nodetype/index.html"><img align="left" style="margin:10px;padding:1px;border:1px solid black" src="../images/nodetype/thumb_cnd.jpg" /></a>
+To learn about the content modelling system used in Jackrabbit, read the 
+<a href="nodetype/index.html">section on node types</a>.
+<br clear="all"/>
 </p>
 </section>
 </body>

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype/cnd.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype/cnd.xml?rev=355066&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype/cnd.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype/cnd.xml Thu Dec  8 02:38:59 2005
@@ -0,0 +1,309 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+    <properties>
+        <title>CND Notation</title>
+    </properties>
+    <body>
+        <section name="Introduction">
+            <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 
+                <a href="index.html">general Node Types section</a> first).
+            </p>
+            <p>
+                Here is a "worst-case scenario" example that demonstrates all the features of the notation:
+            </p>
+<source><![CDATA[/*  An example node type definition */
+
+// The namespace declaration
+<ns = 'http://namespace.com/ns'>
+
+// Node type name
+[ns:NodeType]
+
+// Supertypes
+> ns:ParentType1, ns:ParentType2
+
+// This node type supports orderable child nodes
+orderable
+
+// This is a mixin node type
+mixin
+
+// A property called 'ex:property' of type STRING
+- ex:property (string)
+
+// The default values for this
+// (multi-value) property are...
+= 'default1', 'default2'
+
+// This property is the primary item
+primary
+
+// and it is...
+mandatory autocreated protected
+
+// and multi-valued
+multiple
+
+// It has an on-parent-version setting of ...
+version
+
+// The constraint settings are...
+< 'constraint1', 'constraint2'
+
+// A child node called ns:node which must be of
+// at least the node types ns:reqType1 and ns:reqType2
++ ns:node (ns:reqType1, ns:reqType2)
+
+// with default primary node type is...
+= ns:defaultType
+
+// This node is...
+mandatory autocreated protected
+
+// supports same name siblings
+multiple
+
+// and has an on-parent-version setting of ...
+version]]></source>
+            <p>
+                This definition can be written more compactly and with indentation:
+            </p>
+<source><![CDATA[/*  An example node type definition */
+<ns = 'http://namespace.com/ns'>
+[ns:NodeType] > ns:ParentType1, ns:ParentType2
+  orderable mixin
+  - ex:property (string)
+= 'default1', 'default2'
+    primary mandatory autocreated protected multiple
+    version
+    < 'constraint1', 'constraint2'
+  + ns:node (ns:reqType1, ns:reqType2)
+    = ns:defaultType
+    mandatory autocreated protected multiple version]]></source>
+            <p>
+               or, using short forms for the attributes, even like this:
+            </p>
+<source><![CDATA[<ns='http://namespace.com/ns'>
+[ns:NodeType]>ns:ParentType1, ns:ParentType2 o m
+-ex:property='default1','default2' ! m a p * version
+ <'constraint1', 'constraint2'
++ns:node(ns:reqType1,ns:reqType2)=ns:defaultType
+ m a p *  version]]></source>
+        </section>
+        <section name="Grammar">
+            <p>
+                The following grammar defines the CND notation. Terminal symbols are bold and in double quotes.
+            </p>
+<source><![CDATA[cnd ::= {ns_mapping | node_type_def}
+
+ns_mapping ::= "<" prefix "=" uri ">"
+
+prefix ::= string
+
+uri ::= string
+
+node_type_def ::= node_type_name [supertypes] [options]
+                  {property_def | child_node_def}
+
+node_type_name ::= "[" string "]"
+
+supertypes ::= ">" string_list
+
+options ::= orderable_opt | mixin_opt | orderable_opt
+            mixin_opt | mixin_opt orderable_opt
+
+orderable_opt ::= "orderable" | "ord" | "o"
+
+mixin_opt ::= "mixin" | "mix" | "m"
+
+property_def ::= "-" property_name [property_type_decl]
+                 [default_values] [attributes]
+                 [value_constraints]
+
+property_name ::= string
+
+property_type_decl ::= "(" property_type ")"
+
+property_type ::= "STRING" | "String" |"string" |
+                  "BINARY" | "Binary" | "binary" |
+                  "LONG" | "Long" | "long" |
+                  "DOUBLE" | "Double" | "double" |
+                  "BOOLEAN" | "Boolean" | "boolean" |
+                  "DATE" | "Date" | "date" |
+                  "NAME | "Name | "name |
+                  "PATH" | "Path" | "path" |
+                  "REFERENCE" | "Reference" |
+                     "reference" |
+                  "UNDEFINED" | "Undefined" |
+                     "undefined" | "*"
+
+default_values ::= "=" string_list
+
+value_constraints ::= "<" string_list
+
+node_def ::= "+" node_name [required_types]
+             [default_type] [attributes]
+
+node_name ::= string
+
+required_types ::= "(" string_list ")"
+
+default_type ::= "=" string
+
+attributes ::= "primary" | "pri" | "!" |
+               "autocreated" | "aut" | "a" |
+               "mandatory" | "man" | "m" |
+               "protected" | "pro" | "p" |
+               "multiple" | "mul" | "*" |
+               "COPY" | "Copy" | "copy" |
+               "VERSION" | "Version" | "version" |
+               "INITIALIZE" | "Initialize" |
+                  "initialize" |
+               "COMPUTE" | "Compute" | "compute" |
+               "IGNORE" | "Ignore" | "ignore" |
+               "ABORT" | "Abort" | "abort"
+
+string_list ::= string {"," string}
+
+string ::= quoted_string | unquoted_string
+
+quoted_string :: = "'" unquoted_string "'"
+
+unquoted_string ::= /* a string */]]></source>
+        </section>
+        <section name = "Comparison of Notations">
+            <subsection name = "Old Documentation Notation">
+                <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>
+<source><![CDATA[NodeTypeName
+  nt:resource
+Supertypes
+  nt:base
+  mix:referenceable
+IsMixin
+  false
+HasOrderableChildNodes
+  false
+PrimaryItemName
+  jcr:data
+PropertyDefinition
+  Name jcr:encoding
+  RequiredType STRING
+  ValueConstraints []
+  DefaultValues null
+  AutoCreated false
+  Mandatory false
+  OnParentVersion COPY
+  Protected false
+  Multiple false
+PropertyDefinition
+  Name jcr:mimeType
+  RequiredType STRING
+  ValueConstraints []
+  DefaultValues null
+  AutoCreated false
+  Mandatory true
+  OnParentVersion COPY
+  Protected false
+  Multiple false
+PropertyDefinition
+  Name jcr:data
+  RequiredType BINARY
+  ValueConstraints []
+  DefaultValues null
+  AutoCreated false
+  Mandatory true
+  OnParentVersion COPY
+  Protected false
+  Multiple false
+PropertyDefinition
+  Name jcr:lastModified
+  RequiredType DATE
+  ValueConstraints []
+  DefaultValues null
+  AutoCreated false
+  Mandatory true
+  OnParentVersion IGNORE
+  Protected false
+  Multiple false]]></source>   
+            </subsection>
+            <subsection name="Old Configuration Notation">
+                <p>
+                    Here is the same node type in the standard XML notation 
+                    (used in configuration files in the Jackrabbit project, 
+                    for example):
+                </p>
+<source><![CDATA[<nodeType name="nt:resource"
+          isMixin="false"
+          hasOrderableChildNodes="false"
+          primaryItemName="jcr:data">
+    <supertypes>
+        <supertype>nt:base</supertype>
+        <supertype>mix:referenceable</supertype>
+    </supertypes>
+    <propertyDefinition name="jcr:encoding"
+                        requiredType="String"
+                        autoCreated="false"
+                        mandatory="false"
+                        onParentVersion="COPY"
+                        protected="false"
+                        multiple="false"/>
+    <propertyDefinition name="jcr:mimeType"
+                        requiredType="String"
+                        autoCreated="false"
+                        mandatory="true"
+                        onParentVersion="COPY"
+                        protected="false"
+                        multiple="false"/>
+    <propertyDefinition name="jcr:data"
+                        requiredType="Binary"
+                        autoCreated="false"
+                        mandatory="true"
+                        onParentVersion="COPY"
+                        protected="false"
+                        multiple="false"/>
+    <propertyDefinition name="jcr:lastModified"
+                        requiredType="Date"
+                        autoCreated="false"
+                        mandatory="true"
+                        onParentVersion="IGNORE"
+                        protected="false"
+                        multiple="false"/>
+</nodeType>]]></source>
+            </subsection>
+            <subsection name="New Format">
+                <p>
+                    And, here it is in the new CND notation:
+                </p>
+<source><![CDATA[[nt:resource] > mix:referencable
+- jcr:encoding
+- jcr:mimeType mandatory
+- jcr:data (binary) mandatory
+- jcr:lastModified (date) mandatory ignore]]></source>
+            </subsection>
+        </section>
+    </body>
+</document>
\ No newline at end of file

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

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype/index.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype/index.xml?rev=355066&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype/index.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/doc/nodetype/index.xml Thu Dec  8 02:38:59 2005
@@ -0,0 +1,294 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+    <properties>
+        <title>Node Types</title>
+    </properties>
+    <body>
+        <section name="What is a Node Type?">
+            <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>
+            <subsection name="Primary vs Mixin">
+                <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 <code>Node.addNode</code>
+                    in the JCR API). In addition, a mixin node type may be added to a node later in its
+                    lifecycle (see <code>Node.addMixin</code>).
+                </p>
+                <p>
+                    The primary node type of a node usually defines node structure (ie, allowed and required
+                    child nodes and properties) related to the problem domain being modelled. For example,
+                    a node used in storing content about business contacts might have the primary type
+                    <code>myapp:Contact</code> which defines properties such as <code>myapp:givenName</code>,
+                    <code>myappg:familyName</code> 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 capabilites may include
+                    generic repository-level functions as in the case of the built-in mixins
+                    <code>mix:versionable</code> and <code>mix:lockable</code>, for example,
+                    or domain-level capabilites such as a (hypothetical) <code>myapp:Emailable</code>
+                    mixin type that adds the property <code>myapp:emailAddress</code> to a node.
+                </p>
+            </subsection>
+            <subsection name="Inheritance">
+                <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
+                    <code>nt:base</code>
+                    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>
+            </subsection>
+        </section>
+        <section name="Node Type Definition">
+            <p>
+                A node type definition has the following attributes:
+            </p>
+            <dl>
+                <dt>Name</dt>
+                <dd>
+                    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).
+                </dd>
+                <dt>Supertypes</dt>
+                <dd>
+                    A primary node type (with the exception of nt:base) must extend another node type (and may extend
+                    more than one node type). A mixin node type may extend another node type.
+                </dd>
+                <dt>Mixin Status</dt>
+                <dd>
+                    A node type may be either primary or mixin.
+                </dd>
+                <dt>Orderable Child Nodes Status</dt>
+                <dd>
+                    A primary node type may specify that child nodes are client-orderable. If this status is set to
+                    true, then
+                    <code>Node.orderBefore</code>
+                    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.
+                </dd>
+                <dt>Property Definitions</dt>
+                <dd>
+                    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).
+                </dd>
+                <dt>Child Node Definitions</dt>
+                <dd>
+                    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,
+                    <i>their</i>
+                    node types, see below).
+                </dd>
+                <dt>Primary Item Name</dt>
+                <dd>
+                    A node type may specify one child item (property or node) by name as the primary item. This
+                    indicator is used by the method <code>Node.getPrimaryItem()</code>.
+                </dd>
+            </dl>
+            <subsection name="Property Definition">
+                <p>
+                    A property definition (within a node type definition) contains the the following information:
+                </p>
+                <dl>
+                    <dt>Name</dt>
+                    <dd>
+                        The name of the property to which this definition applies, or '*' if this definition is
+                        a "residual definition', meaning that it applies to any additional properties with any
+                        names apart from those otherwise defined in this node type.
+                    </dd>
+                    <dt>Required Type</dt>
+                    <dd>
+                        The required type of the property. One of <code>STRING</code>, <code>BINARY</code>,
+                        <code>LONG</code>,<code>DOUBLE</code>,<code>DATE</code>,<code>PATH</code>,
+                        <code>NAME</code>,<code>REFERENCE</code> or <code>UNDEFINED</code>.
+                        Specifying a type of <code>UNDEFINED</code> means that the property can be of any type.
+                    </dd>
+                    <dt>Value Constraints</dt>
+                    <dd>
+                        The value constraints on the property define the range of values that may be assigned
+                        to this property.
+                    </dd>
+                    <dt>Default Value</dt>
+                    <dd>
+                        The value that the property will have if it is auto-created.
+                    </dd>
+                    <dt>Auto-create Status</dt>
+                    <dd>
+                        Whether this property will be auto-created when its parent node is created. Only properties
+                        with a default value can be auto-created.
+                    </dd>
+                    <dt>Mandatory Status</dt>
+                    <dd>
+                        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.
+                    </dd>
+                    <dt>On-Parent-Version Status</dt>
+                    <dd>
+                        The onParentVersion status of specifies what happens to this property if a
+                        new version of its parent node is created (ie, a checked-in is done on it).
+                    </dd>
+                    <dt>Protected Status</dt>
+                    <dd>
+                        A protected property is one which cannot be modified
+                        (ie, have child nodes or properties added or removed) or removed from its parent through the JCR API.
+                    </dd>
+                    <dt>Multiple Values Status</dt>
+                    <dd>
+                        Whether this property can have multiple values, meaning that it stores an array of values,
+                        not just one. Note that this "multiple values" flag is special in that a given node type
+                        may have two property definitions that are identical in every respect except for the their
+                        "multiple values" 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 nt:unstructured.
+                    </dd>
+                </dl>
+            </subsection>
+            <subsection name="Child Node Definition">
+                <p>
+                    A child node definition (within a node type definition) contains the the following information:
+                </p>
+                <dl>
+                    <dt>Name</dt>
+                    <dd>
+                        The name of the child node to which this definition applies or '*' if this definition is
+                        a "residual definition', meaning that it applies to any additional child nodes with any
+                        names apart from those otherwise defined in this node type.
+                    </dd>
+                    <dt>Required Primary Types</dt>
+                    <dd>
+                        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.
+                    </dd>
+                    <dt>Default Primary Type</dt>
+                    <dd>
+                        This is the primary node type automatically
+                        assigned if no node type information is specified when the node is created.
+                    </dd>
+                    <dt>Auto-create Status</dt>
+                    <dd>
+                        Governs whether this child node will be auto-created when its parent node is created.
+                    </dd>
+                    <dt>Mandatory Status</dt>
+                    <dd>
+                        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.
+                    </dd>
+                    <dt>On-Parent-Version Status</dt>
+                    <dd>
+                        This specifies what to do with the child node if
+                        its parent node is versioned.
+                    </dd>
+                    <dt>Protected Status</dt>
+                    <dd>
+                        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.
+                    </dd>
+                    <dt>Same-Name Siblings Status</dt>
+                    <dd>
+                        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.
+                    </dd>
+                </dl>
+            </subsection>
+        </section>
+        <section name="Registering Node Types">
+            <p>
+                Each Jackrabbit instance has a <code>NodeTypeRegistry</code> 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>
+                To register a new node type you must first create a <code>NodeTypeDef</code> object
+                that defines it and then pass that object to the <code>NodeTypeRegistry</code>.
+            </p>
+            <p>
+                The easiest way to create a <code>NodeTypeDef</code> object is to use the tools found in
+                <code>contrib/compact-nt</code>.
+            </p>
+            <p>
+                First you define your node types in a text file using the 
+                <a href="cnd.html">"Compact Namespace and Node Type Definition" (CND) notation</a>,
+                then read it into a <code>CompactNodeTypeDefReader</code>
+                and then get the resulting <code>NodeTypeDef</code> objects and register each with the
+                <code>NodeTypeRegistry</code>. The following code gives an example:
+            </p>
+<source><![CDATA[import javax.jcr.Workspace;
+import org.apache.jackrabbit.core.nodetype.NodeTypeDef;
+import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
+import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
+import org.apache.jackrabbit.core.nodetype.compact.CompactNodeTypeDefReader;
+import java.io.FileReader;
+import java.util.List;
+import java.util.Iterator
+
+public class CustomNodeTypeExample {
+    public static void RegisterCustomNodeTypes(Workspace ws){
+
+        // Read in the CND file
+        FileReader fileReader = new FileReader(fileName);
+
+        // Create a CompactNodeTypeDefReader
+        CompactNodeTypeDefReader cndReader = new CompactNodeTypeDefReader(fileReader, fileName);
+
+        // Get the List of NodeTypeDef objects
+        List ntdList = cndReader.getNodeTypeDefs;
+
+        // Get the NodeTypeManager from the Workspace.
+        // Note that it must be cast from the generic JCR NodeTypeManager to the
+        // Jackrabbit-specific implementation.
+        NodeTypeManagerImpl ntmgr =(NodeTypeManagerImpl)ws.getNodeTypeManager();
+
+        // Acquire the NodeTypeRegistry
+        NodeTypeRegistry ntreg = ntmgr.getNodeTypeRegistry();
+
+        // Loop through the prepared NodeTYpeDefs
+        for (Iterator i = ntdList.iterator(); i.hasNext();) {
+
+            // Get the NodeTypeDef...
+            NodeTypeDef ntd = (NodeTypeDef)i.next();
+
+            // ...and register it
+            ntreg.registerNodeType(ntd);
+        }
+    }
+}]]></source>
+            <br/>
+            <br/>
+            <a href="cnd.html"><strong>Continue to Node Type Notation</strong></a>
+        </section>
+    </body>
+</document>

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

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

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

Modified: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/index.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/index.xml?rev=355066&r1=355065&r2=355066&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/index.xml (original)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/index.xml Thu Dec  8 02:38:59 2005
@@ -16,64 +16,86 @@
    limitations under the License.
   -->
 <document>
- <properties>
-  <title>Overview</title>
- </properties>
- <body>
-
-<section name="Apache Jackrabbit">
-<p>
-<a href="http://www.apachecon.com/2005/US/index.html"
-   class="externalLink" title="External Link"><img
-   src="http://www.apache.org/images/ac2005us_white_184x80.jpg"
-   width="184" height="80" border="0" title="ApacheCon US 2005"
-   align="right" valign="top" alt="ApacheCon 2005 US"></img></a>
-The Apache Jackrabbit Project has been formed to develop an open source
-implementation of the Content Repository for Java Technology API (JCR),
-as specified within the Java Community Process as
-<a href="http://www.jcp.org/en/jsr/detail?id=170">JSR 170</a> and
-<a href="http://www.jcp.org/en/jsr/detail?id=170">JSR 283</a>.
-<a href="http://www.day.com/">Day Software</a>, the JCR specification lead,
-has licensed an initial implementation of the JCR reference implementation for
-use as seed code for this project.  JCR specifies an API for application
-developers (and application frameworks) to use for interaction with modern
-content repositories that provide content services such as searching,
-versioning, transactions, etc.
-</p>
-<p>
-Jackrabbit's implementation began as a proposal within the
-<a href="http://jakarta.apache.org/slide/index.html">Jakarta Slide</a>project,
-but has since attracted interest from multiple projects with the
-<a href="http://www.apache.org/">Apache Software Foundation</a>, including
-Slide, Cocoon, Lenya, XML Indexing, Axion, and Derby.  We are also looking at
-integration with projects such as Beehive, Maven, and Portals.
-</p>
-<p>
-The purpose of this incubation period is to attract additional contributors
-from other Apache projects and from the various expert group companies,
-learn the Apache way of doing things, and allow the developers to focus on this
-interface/implementation rather than all of the existing projects that might
-want to use it.  We hope to improve collaboration on the code base by moving
-all of the active developers and authors to Apache, bring in as many of the
-Apache veterans as wish to get involved, and open it up to all of the 22 expert
-group companies.  Development of the JCR RI and TCK will occur in this project
--- Day Software plans to continue participation in Jackrabbit and use the code
-in the official (binary) RI and TCK releases, allowing developers to beta test
-against the open source versions as well as the official versions.
-</p>
-</section>
-<section name="Releases">
-<p>
-See the <a href="downloads.html">downloads</a> page for information on
-obtaining releases.
-</p>
-</section>
-
-<section name="Documentation">
-<p>
-The <a href="apidocs/index.html">JavaDoc API documents</a> are available online.
-</p>
-</section>
-
-</body>
+    <properties>
+        <title>Welcome to Jackrabbit</title>
+    </properties>
+    <body>
+        <section name="The Open Source Content Repository for Java">
+            <p>
+                The Apache Jackrabbit project is an effort to build and maintain an open source
+                implemention of the Content Repository for Java Technology API (JCR).
+            </p>
+            <p>
+                JCR 1.0 is specifed in
+                <a href="http://jcp.org/en/jsr/detail?id=170" class="externalLink" title="External Link">Java Specification Request 170 (JSR-170)</a>.
+                Work on JCR v2.0 has begun in <a href="http://jcp.org/en/jsr/detail?id=283" class="externalLink" title="External Link">JSR 283</a>.
+            </p>
+        </section>
+        <section name="Releases">
+            <p>
+                There are no releases available yet, but development is progressing quickly.
+                To get Jackrabbit right now you can <a href="doc/building.html">checkout and build</a>
+                your own instance. To see what still needs to be done before the first release, take
+                a look at the  <a href="http://issues.apache.org/jira/browse/JCR?report=com.atlassian.jira.plugin.system.project:roadmap-panel">Jira Road Map</a>.
+            </p>
+            <!--
+            <p>
+                The following releases are available:
+            </p>
+            <ul>
+                <li>Version 1.1 - 20 October 2003</li>
+                <li>Version 1.0 - 12 August 2002</li>
+            </ul>
+            <br/>
+            <p>
+                The latest binary release is always available on the
+                <a href="http://jakarta.apache.org/site/binindex.cgi#commons-uid">Jakarta Binary Downloads page</a>,
+                its source is available from
+                <a href="http://jakarta.apache.org/site/sourceindex.cgi#commons-uid">Jakarta Source Downloads page</a>.
+            </p>
+            <p>
+                Older releases are retained by the Apache Software Foundation but are moved into a
+                <a href="http://archive.apache.org/dist/jakarta/commons/uid/">special archive area</a>.
+            </p>
+            <p>
+                <a href="http://cvs.apache.org/builds/jakarta-commons/nightly/commons-uid/">Nightly source and binary drops</a>
+                are also available.
+            </p>
+            -->
+        </section>
+        <section name="Documentation">
+            <p>
+                For a basic overview and details on getting started, have a look at
+                the <a href="doc/index.html">Jackrabbit documention</a> on this site.
+            </p>
+            <p>
+                Jackrabbit exposes most of its functionality to client applications thought that the JCR v1.0 API.
+                If you want more detail on the API you can browse the Javadoc at
+                <a href="http://www.day.com/maven/jsr170/javadocs/jcr-1.0" class="externalLink" title="External Link">http://www.day.com/maven/jsr170/javadocs/jcr-1.0</a><br/>
+                or download it as a zipped package at <a href="http://www.day.com/maven/jsr170/javadocs/jcr-1.0.javadoc" class="externalLink" title="External Link">http://www.day.com/maven/jsr170/javadocs/jcr-1.0.javadoc</a>
+            </p>
+            <p>
+                If you really want to know all the details, the best current documentation available
+                is the JCR v1.0 specification itself, which you can get here:
+                <a href="http://jcp.org/aboutJava/communityprocess/final/jsr170/index.html" class="externalLink" title="External Link">http://jcp.org/aboutJava/communityprocess/final/jsr170/index.html</a>
+            </p>
+            <p>
+                In addition to implementing the JCR API, Jackrabbit has many extensions and
+                admistrational features that are not (yet) specified by JCR.
+                (see <a href="arch/index.html">Architecture Overview</a>). You can browse the
+                internal Jackrabbit API here: <a href="http://incubator.apache.org/jackrabbit/apidocs/index.html">http://incubator.apache.org/jackrabbit/apidocs/index.html</a>
+            </p>
+        </section>
+        <section name="Downloads">
+            <p>
+                For a quick guide to getting the source code, see the 
+                <a href="downloads.xml">Downloads</a> page.
+            </p> 
+        </section>
+        <section name ="About">
+            <p>
+                Have a look <a href="about.html">here</a> for more project-level details.
+            </p>
+        </section>
+    </body>
 </document>

Modified: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/navigation.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/navigation.xml?rev=355066&r1=355065&r2=355066&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/navigation.xml (original)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/navigation.xml Thu Dec  8 02:38:59 2005
@@ -36,7 +36,9 @@
         <item name="Model 3 (Server)"                    href="/doc/deploy/howto-model3.html"/>
       </item>
       <item name="Configuring Jackrabbit"                href="/doc/config.html" />
-      <item name="Nodetype Modelling"                    href="/doc/nodetype.html" />
+      <item name="Node Types"                            href="/doc/nodetype/index.html" collapse="true">
+          <item name="Node Type Notation"                href="/doc/nodetype/cnd.html" />
+      </item>
     </item>
     <item name="Layout"                 href="/layout.html"/>
     <item name="Downloads"              href="/downloads.html"/>