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"/>