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

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

Added: jackrabbit/site/trunk/content/news-archive.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/news-archive.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/news-archive.cwiki (added)
+++ jackrabbit/site/trunk/content/news-archive.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,215 @@
+This is an archive of all the Apache Jackrabbit news posted to the home page. The news are listed in reverse chronological order.
+
+h2. News in 2010
+
+* *December 15, 2010: Apache Jackrabbit 2.2.0 released*
+  Jackrabbit 2.2 is an incremental feature release based on the earlier 2.x releases.
+
+* *December 7, 2010: Apache Jackrabbit 2.1.3 released*
+  Apache Jackrabbit 2.1.3 is a bug fix release that fixes issues reported against previous versions.
+
+* *October 31, 2010: Apache Jackrabbit 2.1.2 released*
+  Apache Jackrabbit 2.1.2 is a bug fix release that fixes issues reported against previous versions.
+
+* *October 31, 2010: Apache Jackrabbit 2.0.3 released*
+  Apache Jackrabbit 2.0.3 is a bug fix release that fixes issues reported against previous versions. See the [downloads page|Downloads#v20] for more details.
+
+* *October 12, 2010: Apache Jackrabbit 1.6.4 released*
+  Apache Jackrabbit 1.6.4 is a bug fix release that fixes issues reported against earlier Jackrabbit 1.6.x versions.
+
+* *August 11, 2010: Apache Jackrabbit 2.1.1 released*
+  Apache Jackrabbit 2.1.1 is a bug fix release that fixes issues reported against the earlier Jackrabbit 2.1.0 version.
+
+* *June 6, 2010: Apache Jackrabbit 1.6.2 released*
+  Apache Jackrabbit 1.6.2 is a bug fix release that fixes issues reported against earlier Jackrabbit 1.6.x versions.
+
+* *June 6, 2010: jackrabbit-core 1.4.12 released*
+  The jackrabbit-core 1.4.12 maintenance release is targeted to users who are not yet ready to upgrade to the more recent Jackrabbit releases, but who still need fixes to reported inconsistency problems.
+
+* *April 22, 2010: Apache Jackrabbit 2.1.0 released*
+  Jackrabbit 2.1 is an incremental feature release based on the earlier 2.0 release.
+
+* *January 27, 2010: Apache Jackrabbit 2.0.0 released*
+  Apache Jackrabbit 2.0.0 is a fully compliant and production-ready implementation of JCR 2.0.
+
+* *January 21, 2010: Apache Jackrabbit 1.6.1 released*
+  Apache Jackrabbit 1.6.1 is a bug fix release that fixes issues reported against Jackrabbit 1.6.0.
+
+* *January 18, 2010: Apache Jackrabbit 2.0 beta6 released*
+  This is a beta release of Apache Jackrabbit 2.0. This release is a fully compliant implementation of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283|http://jcp.org/en/jsr/detail?id=283]). The beta status of this release means that some parts of the implementation are not yet ready for normal production use.
+
+* *January 11, 2010: Apache Jackrabbit 2.0 beta5 released*
+  This is a beta release of Apache Jackrabbit 2.0. This release is a fully compliant implementation of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283|http://jcp.org/en/jsr/detail?id=283]). The beta status of this release means that some parts of the implementation are not yet ready for normal production use.
+
+h2. News in 2009
+
+* *December 12, 2009: Apache Jackrabbit 2.0 beta4 released*
+  This is a beta release of Apache Jackrabbit 2.0. This release is a fully compliant implementation of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283|http://jcp.org/en/jsr/detail?id=283]). The beta status of this release means that some parts of the implementation are not yet ready for normal production use.
+ 	 
+* *November 25, 2009: Apache Jackrabbit 2.0 beta3 released*
+  This is a beta release of Apache Jackrabbit 2.0. This release is a fully compliant implementation of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283|http://jcp.org/en/jsr/detail?id=283]). The beta status of this release means that some parts of the implementation are not yet ready for normal production use.
+ 	 
+* *October 30, 2009: Apache Jackrabbit 2.0 beta1 released*
+  This is a beta release of Apache Jackrabbit 2.0. This release is a fully compliant implementation of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283|http://jcp.org/en/jsr/detail?id=283]). The beta status of this release means that some parts of the implementation are not yet ready for normal production use.
+ 	 
+* *September 23, 2009: jackrabbit-core 1.4.11 released*
+  The jackrabbit-core 1.4.11 patch release is targeted to users who are not yet ready to upgrade to the more recent Jackrabbit releases, but who still need the XPath formatting fix from issue [JCR-2052|https://issues.apache.org/jira/browse/JCR-2052]. See the [downloads page|Downloads#v14] for more details.
+ 	 
+* *September 23, 2009: Apache Jackrabbit 2.0 alpha11 released*
+  This is an alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283|http://jcp.org/en/jsr/detail?id=283]). The purpose of this alpha release is to allow people to test and review the new JCR 2.0 features before they are finalized.
+ 	 
+* *September 15, 2009: jackrabbit-core 1.4.10 released*
+  The jackrabbit-core 1.4.10 patch release is targeted to users who are not yet ready to upgrade to the more recent Jackrabbit releases, but who still need the clustering performance improvement from issue [JCR-1988|https://issues.apache.org/jira/browse/JCR-1988]. See the [downloads page|Downloads#v14] for more details.
+ 	 
+* *August 26, 2009: Apache Jackrabbit 2.0 alpha9 released*
+  This is an alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283|http://jcp.org/en/jsr/detail?id=283]). The purpose of this alpha release is to allow people to test and review the new JCR 2.0 features before they are finalized.
+ 	 
+* *August 18, 2009: Apache Jackrabbit 2.0 alpha8 released*
+  This is an alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283|http://jcp.org/en/jsr/detail?id=283]). The purpose of this alpha release is to allow people to test and review the new JCR 2.0 features before they are finalized.
+ 	 
+* *August 11, 2009: Apache Jackrabbit 1.6.0 released*
+  Apache Jackrabbit 1.6.0 is an incremental feature release. While remaining compatible with previous releases, Jackrabbit 1.6 introduces a number of new features, improvements and fixes to known issues. See the [downloads page|Downloads#v16] for more details.
+ 	 
+* *August 10, 2009: Apache Jackrabbit 2.0 alpha7 released*
+  This is an alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283|http://jcp.org/en/jsr/detail?id=283]). The purpose of this alpha release is to allow people to test and review the new JCR 2.0 features before they are finalized.
+ 	 
+* *August 3, 2009: Apache Jackrabbit 1.5.7 released*
+  Apache Jackrabbit 1.5.7 is a bug fix release that fixes issues reported against previous releases. This release is fully compatible with the earlier 1.5.x releases.
+ 	 
+* *July 14, 2009: Apache Jackrabbit 2.0 alpha4 released*
+  This is an alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283|http://jcp.org/en/jsr/detail?id=283]). The purpose of this alpha release is to allow people to test and review the new JCR 2.0 features before they are finalized.
+ 	 
+* *July 3, 2009: Apache Jackrabbit 2.0 alpha3 released*
+  This is the second alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283|http://jcp.org/en/jsr/detail?id=283]). The purpose of this alpha release is to allow people to test and review the new JCR 2.0 features before they are finalized.
+ 	 
+* *June 4, 2009: Apache Jackrabbit 2.0 alpha1 released*
+  The first alpha release of Apache Jackrabbit 2.0 implements the Proposed Final Draft (PFD) version of the JCR 2.0 API, that is being specified by the Java Specification Request 283 (JSR 283). The purpose of this alpha release is to allow people to test and review the new JCR 2.0 features before they are finalized.
+ 	 
+* *June 4, 2009: Apache Jackrabbit 1.5.6 released*
+  Apache Jackrabbit 1.5.6 is a bug fix release that fixes issues reported against previous releases. This release is fully compatible with the earlier 1.5.x releases.
+ 	 
+* *April 28, 2009: Apache Jackrabbit 1.5.5 released*
+  Apache Jackrabbit 1.5.5 is a bug fix release that fixes issues reported against previous releases. The jackrabbit-jcr2spi component contains also some other improvements over previous releases. This release is fully compatible with the earlier 1.5.x releases.
+
+* *April 7, 2009: Apache Jackrabbit 1.5.4 released*
+  Apache Jackrabbit 1.5.4 is a bug fix release that fixes issues reported against previous releases. This release is fully compatible with the earlier 1.5.x releases.
+
+* *March 3, 2009: jackrabbit-core 1.4.9 released*
+  This release is targeted to users who are not yet ready to upgrade to the more recent Jackrabbit 1.5.x releases, but who still need some of the more important recent fixes and improvements, especially related to query performance. See the [downloads page|Downloads] for more details.
+
+* *February 27, 2009: Apache Jackrabbit 1.5.3 released*
+  Apache Jackrabbit 1.5.3 is a bug fix release that fixes issues reported against previous releases. This release is fully compatible with the earlier 1.5.x releases.
+
+* *January 29, 2009: Michael Dürig joins the Jackrabbit team as a committer*
+  The Jackrabbit PMC recently decided to offer Michael committership based on his contributions especially to the SPI layer. Michael accepted, and as of today he is a committer and a PMC member of the Apache Jackrabbit project. See the [Jackrabbit Team] page for the rest of our team.
+
+
+* *January 29, 2009: jackrabbit-core 1.4.8 released*
+  This release fixes a number of minor issues.
+
+* *January 20, 2009: Apache Jackrabbit 1.5.2 released*
+  Apache Jackrabbit 1.5.2 is a security and bug fix release that fixes issues reported against previous releases. This release is fully compatible with the earlier 1.5.0 release. See the [downloads page|Downloads] for more details.
+
+  {note:title=CVE-2009-0026: Cross site scripting issues in webapp (JCR-1925)}
+  The search.jsp and swr.jsp pages in the Jackrabbit webapp are vulnerable to script injection. This release fixes the issue by properly escaping all user input.
+
+  This issue affects both the Jackrabbit 1.4 and 1.5.0 releases. If you are unable to upgrade to 1.5.2 at this point, you can work around this issue by disabling the search.jsp and swr.jsp pages in the Jackrabbit webapp.
+  {note}
+
+* *January 20, 2009: jackrabbit-core 1.4.7 released*
+  This release fixes a number of minor issues.
+
+h2. News in 2008
+
+* *December 8, 2008: Apache Jackrabbit 1.5.0 released*
+  Apache Jackrabbit 1.5 is an incremental feature release. While remaining compatible with previous releases, Jackrabbit 1.5 introduces a number of new features, improvements and fixes to known issues.
+
+* *October 7, 2008: jackrabbit-core 1.4.6 released*
+  This release fixes a number of minor issues.
+
+* *October 2, 2008: jackrabbit-classloader 1.4.1 released*
+  This release contains fixes to a number of issues.
+
+* *September 30, 2008: jackrabbit-jcr-server 1.4.1 released*
+  This release fixes a number of minor issues.
+
+* *October 7, 2008: jackrabbit-core 1.4.6 released*
+  This release fixes a number of minor issues.
+
+* *October 2, 2008: jackrabbit-classloader 1.4.1 released*
+  This release contains fixes to a number of issues.
+
+* *September 30, 2008: jackrabbit-jcr-server 1.4.1 released*
+  This release fixes a number of minor issues.
+
+* *June 9, 2008: jackrabbit-core 1.4.5 released*
+  This release fixes various issues, including a change to some default persistence manager configuration settings ([JCR-1562|https://issues.apache.org/jira/browse/JCR-1562]). Users who are relying on the default username, password, or schema name settings for database-based persistence should check their configuration when upgrading to this release.
+
+* *May 9, 2008: jackrabbit-core 1.4.4 released*
+  This release fixes the custom persistence manager regression ([JCR-1556|https://issues.apache.org/jira/browse/JCR-1556]) introduced in the 1.4.3 patch release. Also two database data store fixes are included.
+
+* *May 8, 2008: jackrabbit-core 1.4.3 released*
+  This release contains fixes to a number of issues and adds functionality to help recovery from repository inconsistencies.
+
+* *May 8, 2008: Apache Jackrabbit 1.3.4 released*
+  Apache Jackrabbit 1.3.4 is a patch release from the 1.3 maintenance branch. This release is targeted to users who are not yet ready to upgrade to the more recent Jackrabbit 1.4 release, but who still need some of the more important recent fixes and improvements.
+See the [downloads page|Downloads] for more details.
+
+* *April 9, 2008: jackrabbit-jcr-rmi 1.4.1 released*
+  This release contains fixes to a number of issues.
+
+* *April 2, 2008: jackrabbit-jcr-commons 1.4.2 released*
+  This release contains fixes to a number of issues.
+
+* *March 27, 2008: JCR community gathering in Amsterdam on April 8th*
+  The first JCR community gathering in Amsterdam on April 8th was officially announced. This JCR meetup event is targeted to everyone interested in the JCR standard and applications built using JCR. All JCR users and developers are welcome to participate. See the [wiki page|http://wiki.apache.org/jackrabbit/JcrMeetupApril2008] for more information.
+
+* *March 26, 2008: jackrabbit-core 1.4.2 released*
+  This release contains fixes to a number of issues, most notably the concurrent modification exception reported in JCR-1359 and two concurrent versioning deadlocks reported in JCR-1462 and JCR-1480.
+
+* *February 20, 2008: jackrabbit-core 1.4.1 released*
+  This release fixes a binary property regression ([JCR-1346|https://issues.apache.org/jira/browse/JCR-1346]) as well as other issues reported against the Apache Jackrabbit 1.4 release. Unlike previous Jackrabbit releases, this release only contains a single component.
+
+* *January 15, 2008: Apache Jackrabbit 1.4 released*
+  Apache Jackrabbit 1.4 is an incremental feature release. While remaining compatible with previous releases, Jackrabbit 1.4 introduces a number of new features, improvements and fixes to known issues. The most notable new features in this releases are the new object mapping and service provider components for JCR. The Jackrabbit content repository implementation has been enhanced with a new storage model for binary content, a much improved query and indexing system, and many fixes and improvements especially for concurrent access. Many smaller improvements and bug fixes are also included all over the codebase.
+
+h2. News in 2007
+
+* *October 8, 2007: Apache Jackrabbit 1.3.3 released* 
+  From the release notes: "Apache Jackrabbit 1.3.3 is patch release with bug fixes for features like concurrent versioning, journaling, and JCR API tests." 
+
+* *July 31, 2007: Apache Jackrabbit 1.3.1 released*
+  From the release notes: "Apache Jackrabbit 1.3.1 is patch release with bug fixes and improvements for clustering, query, and other features." 
+
+* *April 25, 2007: Apache Jackrabbit 1.3 released*
+  From the release notes: "Apache Jackrabbit 1.3 an incremental feature release. The most notable changes in this release are support for query result highlighting, performance improvements thanks to a new bundle persistence manager, and a new classloader component for loading Java classes from a content repository. Many smaller improvements and bug fixes are also included." 
+
+* *March 11, 2007: Apache Jackrabbit 1.2.3 released*
+  From the release notes: "Apache Jackrabbit 1.2.3 is patch release with bug fixes for issues like correctly reporting the number of access controlled query results and proper cleanup after indexing PDF documents." 
+
+* *February 21, 2007: Apache Jackrabbit 1.2.2 released*
+  From the release notes: "Apache Jackrabbit 1.2.2 is a patch release that fixes a few issues reported since the 1.2.1 release and adds two clustering improvements." 
+
+* *January 23, 2007: Apache Jackrabbit 1.2.1 released*
+  From the release notes: "Apache Jackrabbit 1.2.1 is an incremental release that introduces a number of new features, improvements, and bug fixes. The most notable changes in this release are the introduction of a clustering feature and various query improvements." 
+
+h2. News in 2006
+
+* *December 4, 2006: Apache Jackrabbit 1.1.1 released*
+  From the release notes: "Apache Jackrabbit 1.1.1 is a patch release that fixes a number of issues, see the included change history for details. No new features or configuration changes have been introduced since the 1.1 release." 
+
+* *October 12, 2006: Apache Jackrabbit 1.1 released*
+  From the release notes: "Apache Jackrabbit 1.1 is an incremental release that fixes a number of issues and introduces some new features. The most notable changes in this release include the removal of the Apache Xerces dependency and an improved item state cache." 
+
+* *June 2, 2006: Apache Jackrabbit 1.0.1 released*
+  From the release notes: "Apache Jackrabbit 1.0.1 is a patch release that fixes a number of issues, see the included change history for details. No new features or configuration changes have been introduced since the 1.0 release." 
+
+* *April 8, 2006: Apache Jackrabbit 1.0 released*
+  From the release notes: "Apache Jackrabbit 1.0 is a fully conforming and stable JSR-170 implementation. Developed from the same source tree as the JSR-170 reference implementation, the 1.0 release implements the full JCR API, including level 1, level 2, and all the optional features like versioning, transactions, and observation." 
+
+* *March 15, 2006: Apache Jackrabbit graduates from the Incubator*
+  The ASF board of directors approved a resolution to create the Apache Jackrabbit top level project (TLP). This finalizes the incubation process for Jackrabbit and makes it an official ASF project. 
+
+* *February 14, 2006: Jackrabbit 0.9 released*
+  From the release notes: "The version 0.9 release is the first official release of the Jackrabbit project. The goal of this release is to provide a tested and packaged version of Jackrabbit for users who have so far been using custom snapshots. This release also provides a well defined baseline for the upcoming Jackrabbit version 1.0." See the downloads page for more details. 
+

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

Added: jackrabbit/site/trunk/content/news-archive.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/news-archive.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/news-archive.mdtext (added)
+++ jackrabbit/site/trunk/content/news-archive.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,364 @@
+Title: News archive
+This is an archive of all the Apache Jackrabbit news posted to the home
+page. The news are listed in reverse chronological order.
+
+<a name="Newsarchive-Newsin2010"></a>
+## News in 2010
+
+* *December 15, 2010: Apache Jackrabbit 2.2.0 released*
+  Jackrabbit 2.2 is an incremental feature release based on the earlier 2.x
+releases.
+
+* *December 7, 2010: Apache Jackrabbit 2.1.3 released*
+  Apache Jackrabbit 2.1.3 is a bug fix release that fixes issues reported
+against previous versions.
+
+* *October 31, 2010: Apache Jackrabbit 2.1.2 released*
+  Apache Jackrabbit 2.1.2 is a bug fix release that fixes issues reported
+against previous versions.
+
+* *October 31, 2010: Apache Jackrabbit 2.0.3 released*
+  Apache Jackrabbit 2.0.3 is a bug fix release that fixes issues reported
+against previous versions. See the [downloads page](downloads#v20.html)
+ for more details.
+
+* *October 12, 2010: Apache Jackrabbit 1.6.4 released*
+  Apache Jackrabbit 1.6.4 is a bug fix release that fixes issues reported
+against earlier Jackrabbit 1.6.x versions.
+
+* *August 11, 2010: Apache Jackrabbit 2.1.1 released*
+  Apache Jackrabbit 2.1.1 is a bug fix release that fixes issues reported
+against the earlier Jackrabbit 2.1.0 version.
+
+* *June 6, 2010: Apache Jackrabbit 1.6.2 released*
+  Apache Jackrabbit 1.6.2 is a bug fix release that fixes issues reported
+against earlier Jackrabbit 1.6.x versions.
+
+* *June 6, 2010: jackrabbit-core 1.4.12 released*
+  The jackrabbit-core 1.4.12 maintenance release is targeted to users who
+are not yet ready to upgrade to the more recent Jackrabbit releases, but
+who still need fixes to reported inconsistency problems.
+
+* *April 22, 2010: Apache Jackrabbit 2.1.0 released*
+  Jackrabbit 2.1 is an incremental feature release based on the earlier 2.0
+release.
+
+* *January 27, 2010: Apache Jackrabbit 2.0.0 released*
+  Apache Jackrabbit 2.0.0 is a fully compliant and production-ready
+implementation of JCR 2.0.
+
+* *January 21, 2010: Apache Jackrabbit 1.6.1 released*
+  Apache Jackrabbit 1.6.1 is a bug fix release that fixes issues reported
+against Jackrabbit 1.6.0.
+
+* *January 18, 2010: Apache Jackrabbit 2.0 beta6 released*
+  This is a beta release of Apache Jackrabbit 2.0. This release is a fully compliant implementation of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283](http://jcp.org/en/jsr/detail?id=283)
+). The beta status of this release means that some parts of the
+implementation are not yet ready for normal production use.
+
+* *January 11, 2010: Apache Jackrabbit 2.0 beta5 released*
+  This is a beta release of Apache Jackrabbit 2.0. This release is a fully compliant implementation of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283](http://jcp.org/en/jsr/detail?id=283)
+). The beta status of this release means that some parts of the
+implementation are not yet ready for normal production use.
+
+<a name="Newsarchive-Newsin2009"></a>
+## News in 2009
+
+* *December 12, 2009: Apache Jackrabbit 2.0 beta4 released*
+  This is a beta release of Apache Jackrabbit 2.0. This release is a fully compliant implementation of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283](http://jcp.org/en/jsr/detail?id=283)
+). The beta status of this release means that some parts of the
+implementation are not yet ready for normal production use.
+ 	 
+* *November 25, 2009: Apache Jackrabbit 2.0 beta3 released*
+  This is a beta release of Apache Jackrabbit 2.0. This release is a fully compliant implementation of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283](http://jcp.org/en/jsr/detail?id=283)
+). The beta status of this release means that some parts of the
+implementation are not yet ready for normal production use.
+ 	 
+* *October 30, 2009: Apache Jackrabbit 2.0 beta1 released*
+  This is a beta release of Apache Jackrabbit 2.0. This release is a fully compliant implementation of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283](http://jcp.org/en/jsr/detail?id=283)
+). The beta status of this release means that some parts of the
+implementation are not yet ready for normal production use.
+ 	 
+* *September 23, 2009: jackrabbit-core 1.4.11 released*
+  The jackrabbit-core 1.4.11 patch release is targeted to users who are not
+yet ready to upgrade to the more recent Jackrabbit releases, but who still
+need the XPath formatting fix from issue [JCR-2052](https://issues.apache.org/jira/browse/JCR-2052)
+. See the [downloads page|Downloads#v14]
+ for more details.
+ 	 
+* *September 23, 2009: Apache Jackrabbit 2.0 alpha11 released*
+  This is an alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283](http://jcp.org/en/jsr/detail?id=283)
+). The purpose of this alpha release is to allow people to test and review
+the new JCR 2.0 features before they are finalized.
+ 	 
+* *September 15, 2009: jackrabbit-core 1.4.10 released*
+  The jackrabbit-core 1.4.10 patch release is targeted to users who are not
+yet ready to upgrade to the more recent Jackrabbit releases, but who still
+need the clustering performance improvement from issue [JCR-1988](https://issues.apache.org/jira/browse/JCR-1988)
+. See the [downloads page|Downloads#v14]
+ for more details.
+ 	 
+* *August 26, 2009: Apache Jackrabbit 2.0 alpha9 released*
+  This is an alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283](http://jcp.org/en/jsr/detail?id=283)
+). The purpose of this alpha release is to allow people to test and review
+the new JCR 2.0 features before they are finalized.
+ 	 
+* *August 18, 2009: Apache Jackrabbit 2.0 alpha8 released*
+  This is an alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283](http://jcp.org/en/jsr/detail?id=283)
+). The purpose of this alpha release is to allow people to test and review
+the new JCR 2.0 features before they are finalized.
+ 	 
+* *August 11, 2009: Apache Jackrabbit 1.6.0 released*
+  Apache Jackrabbit 1.6.0 is an incremental feature release. While
+remaining compatible with previous releases, Jackrabbit 1.6 introduces a
+number of new features, improvements and fixes to known issues. See the [downloads page](downloads#v16.html)
+ for more details.
+ 	 
+* *August 10, 2009: Apache Jackrabbit 2.0 alpha7 released*
+  This is an alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283](http://jcp.org/en/jsr/detail?id=283)
+). The purpose of this alpha release is to allow people to test and review
+the new JCR 2.0 features before they are finalized.
+ 	 
+* *August 3, 2009: Apache Jackrabbit 1.5.7 released*
+  Apache Jackrabbit 1.5.7 is a bug fix release that fixes issues reported
+against previous releases. This release is fully compatible with the
+earlier 1.5.x releases.
+ 	 
+* *July 14, 2009: Apache Jackrabbit 2.0 alpha4 released*
+  This is an alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283](http://jcp.org/en/jsr/detail?id=283)
+). The purpose of this alpha release is to allow people to test and review
+the new JCR 2.0 features before they are finalized.
+ 	 
+* *July 3, 2009: Apache Jackrabbit 2.0 alpha3 released*
+  This is the second alpha release of Apache Jackrabbit 2.0. This release implements a pre-release version of the JCR 2.0 API, specified by the Java Specification Request 283 ([JSR 283](http://jcp.org/en/jsr/detail?id=283)
+). The purpose of this alpha release is to allow people to test and review
+the new JCR 2.0 features before they are finalized.
+ 	 
+* *June 4, 2009: Apache Jackrabbit 2.0 alpha1 released*
+  The first alpha release of Apache Jackrabbit 2.0 implements the Proposed
+Final Draft (PFD) version of the JCR 2.0 API, that is being specified by
+the Java Specification Request 283 (JSR 283). The purpose of this alpha
+release is to allow people to test and review the new JCR 2.0 features
+before they are finalized.
+ 	 
+* *June 4, 2009: Apache Jackrabbit 1.5.6 released*
+  Apache Jackrabbit 1.5.6 is a bug fix release that fixes issues reported
+against previous releases. This release is fully compatible with the
+earlier 1.5.x releases.
+ 	 
+* *April 28, 2009: Apache Jackrabbit 1.5.5 released*
+  Apache Jackrabbit 1.5.5 is a bug fix release that fixes issues reported
+against previous releases. The jackrabbit-jcr2spi component contains also
+some other improvements over previous releases. This release is fully
+compatible with the earlier 1.5.x releases.
+
+* *April 7, 2009: Apache Jackrabbit 1.5.4 released*
+  Apache Jackrabbit 1.5.4 is a bug fix release that fixes issues reported
+against previous releases. This release is fully compatible with the
+earlier 1.5.x releases.
+
+* *March 3, 2009: jackrabbit-core 1.4.9 released*
+  This release is targeted to users who are not yet ready to upgrade to the
+more recent Jackrabbit 1.5.x releases, but who still need some of the more
+important recent fixes and improvements, especially related to query
+performance. See the [downloads page](downloads.html)
+ for more details.
+
+* *February 27, 2009: Apache Jackrabbit 1.5.3 released*
+  Apache Jackrabbit 1.5.3 is a bug fix release that fixes issues reported
+against previous releases. This release is fully compatible with the
+earlier 1.5.x releases.
+
+* *January 29, 2009: Michael Dürig joins the Jackrabbit team as a
+committer*
+  The Jackrabbit PMC recently decided to offer Michael committership based
+on his contributions especially to the SPI layer. Michael accepted, and as
+of today he is a committer and a PMC member of the Apache Jackrabbit
+project. See the [Jackrabbit Team](jackrabbit-team.html)
+ page for the rest of our team.
+
+
+* *January 29, 2009: jackrabbit-core 1.4.8 released*
+  This release fixes a number of minor issues.
+
+* *January 20, 2009: Apache Jackrabbit 1.5.2 released*
+  Apache Jackrabbit 1.5.2 is a security and bug fix release that fixes
+issues reported against previous releases. This release is fully compatible
+with the earlier 1.5.0 release. See the [downloads page](downloads.html)
+ for more details.
+
+  {note:title=CVE-2009-0026: Cross site scripting issues in webapp
+(JCR-1925)}
+  The search.jsp and swr.jsp pages in the Jackrabbit webapp are vulnerable
+to script injection. This release fixes the issue by properly escaping all
+user input.
+
+  This issue affects both the Jackrabbit 1.4 and 1.5.0 releases. If you are
+unable to upgrade to 1.5.2 at this point, you can work around this issue by
+disabling the search.jsp and swr.jsp pages in the Jackrabbit webapp.
+  {note}
+
+* *January 20, 2009: jackrabbit-core 1.4.7 released*
+  This release fixes a number of minor issues.
+
+<a name="Newsarchive-Newsin2008"></a>
+## News in 2008
+
+* *December 8, 2008: Apache Jackrabbit 1.5.0 released*
+  Apache Jackrabbit 1.5 is an incremental feature release. While remaining
+compatible with previous releases, Jackrabbit 1.5 introduces a number of
+new features, improvements and fixes to known issues.
+
+* *October 7, 2008: jackrabbit-core 1.4.6 released*
+  This release fixes a number of minor issues.
+
+* *October 2, 2008: jackrabbit-classloader 1.4.1 released*
+  This release contains fixes to a number of issues.
+
+* *September 30, 2008: jackrabbit-jcr-server 1.4.1 released*
+  This release fixes a number of minor issues.
+
+* *October 7, 2008: jackrabbit-core 1.4.6 released*
+  This release fixes a number of minor issues.
+
+* *October 2, 2008: jackrabbit-classloader 1.4.1 released*
+  This release contains fixes to a number of issues.
+
+* *September 30, 2008: jackrabbit-jcr-server 1.4.1 released*
+  This release fixes a number of minor issues.
+
+* *June 9, 2008: jackrabbit-core 1.4.5 released*
+  This release fixes various issues, including a change to some default persistence manager configuration settings ([JCR-1562](https://issues.apache.org/jira/browse/JCR-1562)
+). Users who are relying on the default username, password, or schema name
+settings for database-based persistence should check their configuration
+when upgrading to this release.
+
+* *May 9, 2008: jackrabbit-core 1.4.4 released*
+  This release fixes the custom persistence manager regression ([JCR-1556](https://issues.apache.org/jira/browse/JCR-1556)
+) introduced in the 1.4.3 patch release. Also two database data store fixes
+are included.
+
+* *May 8, 2008: jackrabbit-core 1.4.3 released*
+  This release contains fixes to a number of issues and adds functionality
+to help recovery from repository inconsistencies.
+
+* *May 8, 2008: Apache Jackrabbit 1.3.4 released*
+  Apache Jackrabbit 1.3.4 is a patch release from the 1.3 maintenance
+branch. This release is targeted to users who are not yet ready to upgrade
+to the more recent Jackrabbit 1.4 release, but who still need some of the
+more important recent fixes and improvements.
+See the [downloads page](downloads.html)
+ for more details.
+
+* *April 9, 2008: jackrabbit-jcr-rmi 1.4.1 released*
+  This release contains fixes to a number of issues.
+
+* *April 2, 2008: jackrabbit-jcr-commons 1.4.2 released*
+  This release contains fixes to a number of issues.
+
+* *March 27, 2008: JCR community gathering in Amsterdam on April 8th*
+  The first JCR community gathering in Amsterdam on April 8th was
+officially announced. This JCR meetup event is targeted to everyone
+interested in the JCR standard and applications built using JCR. All JCR
+users and developers are welcome to participate. See the [wiki page](http://wiki.apache.org/jackrabbit/JcrMeetupApril2008)
+ for more information.
+
+* *March 26, 2008: jackrabbit-core 1.4.2 released*
+  This release contains fixes to a number of issues, most notably the
+concurrent modification exception reported in JCR-1359 and two concurrent
+versioning deadlocks reported in JCR-1462 and JCR-1480.
+
+* *February 20, 2008: jackrabbit-core 1.4.1 released*
+  This release fixes a binary property regression ([JCR-1346](https://issues.apache.org/jira/browse/JCR-1346)
+) as well as other issues reported against the Apache Jackrabbit 1.4
+release. Unlike previous Jackrabbit releases, this release only contains a
+single component.
+
+* *January 15, 2008: Apache Jackrabbit 1.4 released*
+  Apache Jackrabbit 1.4 is an incremental feature release. While remaining
+compatible with previous releases, Jackrabbit 1.4 introduces a number of
+new features, improvements and fixes to known issues. The most notable new
+features in this releases are the new object mapping and service provider
+components for JCR. The Jackrabbit content repository implementation has
+been enhanced with a new storage model for binary content, a much improved
+query and indexing system, and many fixes and improvements especially for
+concurrent access. Many smaller improvements and bug fixes are also
+included all over the codebase.
+
+<a name="Newsarchive-Newsin2007"></a>
+## News in 2007
+
+* *October 8, 2007: Apache Jackrabbit 1.3.3 released* 
+  From the release notes: "Apache Jackrabbit 1.3.3 is patch release with
+bug fixes for features like concurrent versioning, journaling, and JCR API
+tests." 
+
+* *July 31, 2007: Apache Jackrabbit 1.3.1 released*
+  From the release notes: "Apache Jackrabbit 1.3.1 is patch release with
+bug fixes and improvements for clustering, query, and other features." 
+
+* *April 25, 2007: Apache Jackrabbit 1.3 released*
+  From the release notes: "Apache Jackrabbit 1.3 an incremental feature
+release. The most notable changes in this release are support for query
+result highlighting, performance improvements thanks to a new bundle
+persistence manager, and a new classloader component for loading Java
+classes from a content repository. Many smaller improvements and bug fixes
+are also included." 
+
+* *March 11, 2007: Apache Jackrabbit 1.2.3 released*
+  From the release notes: "Apache Jackrabbit 1.2.3 is patch release with
+bug fixes for issues like correctly reporting the number of access
+controlled query results and proper cleanup after indexing PDF documents." 
+
+* *February 21, 2007: Apache Jackrabbit 1.2.2 released*
+  From the release notes: "Apache Jackrabbit 1.2.2 is a patch release that
+fixes a few issues reported since the 1.2.1 release and adds two clustering
+improvements." 
+
+* *January 23, 2007: Apache Jackrabbit 1.2.1 released*
+  From the release notes: "Apache Jackrabbit 1.2.1 is an incremental
+release that introduces a number of new features, improvements, and bug
+fixes. The most notable changes in this release are the introduction of a
+clustering feature and various query improvements." 
+
+<a name="Newsarchive-Newsin2006"></a>
+## News in 2006
+
+* *December 4, 2006: Apache Jackrabbit 1.1.1 released*
+  From the release notes: "Apache Jackrabbit 1.1.1 is a patch release that
+fixes a number of issues, see the included change history for details. No
+new features or configuration changes have been introduced since the 1.1
+release." 
+
+* *October 12, 2006: Apache Jackrabbit 1.1 released*
+  From the release notes: "Apache Jackrabbit 1.1 is an incremental release
+that fixes a number of issues and introduces some new features. The most
+notable changes in this release include the removal of the Apache Xerces
+dependency and an improved item state cache." 
+
+* *June 2, 2006: Apache Jackrabbit 1.0.1 released*
+  From the release notes: "Apache Jackrabbit 1.0.1 is a patch release that
+fixes a number of issues, see the included change history for details. No
+new features or configuration changes have been introduced since the 1.0
+release." 
+
+* *April 8, 2006: Apache Jackrabbit 1.0 released*
+  From the release notes: "Apache Jackrabbit 1.0 is a fully conforming and
+stable JSR-170 implementation. Developed from the same source tree as the
+JSR-170 reference implementation, the 1.0 release implements the full JCR
+API, including level 1, level 2, and all the optional features like
+versioning, transactions, and observation." 
+
+* *March 15, 2006: Apache Jackrabbit graduates from the Incubator*
+  The ASF board of directors approved a resolution to create the Apache
+Jackrabbit top level project (TLP). This finalizes the incubation process
+for Jackrabbit and makes it an official ASF project. 
+
+* *February 14, 2006: Jackrabbit 0.9 released*
+  From the release notes: "The version 0.9 release is the first official
+release of the Jackrabbit project. The goal of this release is to provide a
+tested and packaged version of Jackrabbit for users who have so far been
+using custom snapshots. This release also provides a well defined baseline
+for the upcoming Jackrabbit version 1.0." See the downloads page for more
+details. 
+

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

Added: jackrabbit/site/trunk/content/node-type-notation.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/node-type-notation.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/node-type-notation.cwiki (added)
+++ jackrabbit/site/trunk/content/node-type-notation.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,547 @@
+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).
+
+Here is a "worst-case scenario" example that demonstrates all the features of the notation:
+
+{code}
+/*  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
+
+// Nodes of this node type have 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'
+
+// Nodes of this node type have 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)
+
+// and the default primary node type of the child node is...
+= ns:defaultType
+
+// This child node is...
+mandatory autocreated protected
+
+// and supports same name siblings
+multiple
+
+// and has an on-parent-version setting of ...
+version
+{code}
+
+This definition can be written more compactly and with indentation:
+
+{code}
+/*  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
+{code}
+
+or, using short forms for the attributes, even like this:
+
+{code}
+<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
+{code}
+
+h2. Grammar
+
+The following grammar defines the CND notation. Terminal symbols are in double quotes.
+
+{code}
+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-Za-z0-9:_]+
+{code}
+
+h2. CND Notation in Detail
+
+{code}
+cnd ::= {ns_mapping | node_type_def}
+{code}
+
+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.
+
+h3. Namespace Declaration
+
+{code}
+ns_mapping ::= "<" prefix "=" uri ">"
+
+prefix ::= string
+
+uri ::= string
+{code}
+
+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.
+
+h3. Node Type Definition
+
+{code}
+node_type_def ::= node_type_name [super_types] [options]
+                  {property_def | child_node_def}
+{code}
+
+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.
+
+h3. Node Type Name
+
+{code}
+node_type_name ::= "[" string "]"
+{code}
+
+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.
+
+h3. Supertypes
+
+{code}
+supertypes ::= ">" string_list
+{code}
+
+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.
+
+h3. Options
+
+{code}
+options ::= orderable_opt | mixin_opt | orderable_opt
+            mixin_opt | mixin_opt orderable_opt
+
+orderable_opt ::= "orderable" | "ord" | "o"
+
+mixin_opt ::= "mixin" | "mix" | "m"
+{code}
+
+The option indicators follow the node type name and optional supertype list.
+
+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.
+
+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.
+
+h3. Property Definition
+
+{code}
+property_def ::= "-" property_name [property_type_decl]
+                 [default_values] [attributes]
+                 [value_constraints]
+{code}
+
+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.
+
+h3. Property Name
+
+{code}
+property_name ::= string
+{code}
+
+The property name must be a valid JCR name or *, to indicate a residual property definition. It may be single-quoted.
+
+h3. Property Type
+
+{code}
+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" | "*"
+{code}
+
+The property type is indicated by a keyword delimited by parentheses. If the property type declaration is missing a type of STRING is assumed.
+
+h3. Default Values
+
+{code}
+default_values ::= "=" string_list
+{code}
+
+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.
+
+h3. Attributes
+
+{code}
+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"
+{code}
+
+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.
+
+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.
+
+The multiple keyword indicates that this property is multi-valued.
+
+A maximum of one on-version indicator may be present. If none is present then an on-version setting of COPY is assumed.
+
+h3. Value Constraints
+
+{code}
+value_constraints ::= "<" string_list
+{code}
+
+Value constraint are specified by a less-than sign followed by a comma-delimited list of constraint strings, each optionally single-quoted.
+
+h3. Child Node Definition
+
+{code}
+child_node_def ::= "+" node_name [required_types]
+             [default_type] [attributes]
+{code}
+
+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.
+
+h3. Node Name
+
+{code}
+node_name ::= string
+{code}
+
+The node name must be a valid JCR name or *, to indicate a residual child node definition. It may be single-quoted.
+
+h3. Required Primary Node Types
+
+{code}
+required_types ::= "(" string_list ")"
+{code}
+
+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.
+
+h3. Default Primary Node Type
+
+{code}
+default_type ::= "=" string
+{code}
+
+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.
+
+h3. Attributes
+
+{code}
+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"
+{code}
+
+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.
+
+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.
+
+The multiple keyword indicates that this child node may have same-name siblings.
+
+A maximum of one on-version indicator may be present. If none is present then an on-version setting of COPY is assumed.
+
+h3. Quoting
+
+{code}
+string_list ::= string {"," string}
+
+string ::= quoted_string | unquoted_string
+
+quoted_string :: = "'" unquoted_string "'"
+
+unquoted_string ::= /* a string */
+{code}
+
+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.
+
+h3. Escaping
+
+The standard Java escape sequences are also supported:
+
+{code}
+\n newline
+\t tab
+\b backspace
+\f form feed
+\r return
+\" double quote
+\' single quote
+\\ back slash
+\uHHHH Unicode character in hexadecimal
+{code}
+
+h3. Comments
+
+Comment can also be included in the notation using either of the standard Java forms:
+
+{code}
+// A comment
+
+/* Another comment */
+{code}
+
+h3. Whitespace and Short Forms
+
+The notation can be compacted by taking advantage of the following the fact that spacing around keychars ([ ] > , - ( ) = <), newlines and indentation are not required. So, the following is also well-formed:
+
+{code}
+[x]>y,z orderable mixin -p(date)=a,b primary mandatory autocreated protected multiple version <c,d
+{code}
+
+Additionally, though spaces are required around the keywords (orderable, mixin, date, mandatory, etc.), short forms for keywords can be used. So, this:
+
+{code}
+[x]>y,z o m-p(date)=a,b ! m a p * version <c,d
+{code}
+
+is well-formed (but perhaps not recommended!).
+
+h3. Why this Weird Notation?
+
+Here's why:
+
+Old Documentation Notation
+
+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):
+
+{code}
+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
+{code}
+
+Old Configuration Notation
+
+Here is the same node type in the standard XML notation (used in configuration files in the Jackrabbit project, for example):
+
+{code}
+<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>
+{code}
+
+New Format
+
+And, here it is in the new CND notation:
+
+{code}
+[nt:resource] > mix:referenceable
+- jcr:encoding
+- jcr:mimeType mandatory
+- jcr:data (binary) mandatory
+- jcr:lastModified (date) mandatory ignore
+{code}
+
+Case closed.
+
+h2. Syntax hightlighting for text editors
+
+Here is a TextMate bundle for CND syntax highlighting: [^CND.zip]

Propchange: jackrabbit/site/trunk/content/node-type-notation.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/node-type-notation.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/node-type-notation.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/node-type-notation.mdtext (added)
+++ jackrabbit/site/trunk/content/node-type-notation.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,656 @@
+Title: Node Type Notation
+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).
+
+Here is a "worst-case scenario" example that demonstrates all the features
+of the notation:
+
+
+    /*  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
+    
+    // Nodes of this node type have 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'
+    
+    // Nodes of this node type have 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)
+    
+    // and the default primary node type of the child node is...
+    = ns:defaultType
+    
+    // This child node is...
+    mandatory autocreated protected
+    
+    // and supports same name siblings
+    multiple
+    
+    // and has an on-parent-version setting of ...
+    version
+
+
+This definition can be written more compactly and with indentation:
+
+
+    /*  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
+
+
+or, using short forms for the attributes, even like this:
+
+
+    <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
+
+
+<a name="NodeTypeNotation-Grammar"></a>
+## Grammar
+
+The following grammar defines the CND notation. Terminal symbols are in
+double quotes.
+
+
+    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-Za-z0-9:_]
++
+
+
+<a name="NodeTypeNotation-CNDNotationinDetail"></a>
+## CND Notation in Detail
+
+
+    cnd ::= {ns_mapping | node_type_def}
+
+
+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.
+
+<a name="NodeTypeNotation-NamespaceDeclaration"></a>
+### Namespace Declaration
+
+
+    ns_mapping ::= "<" prefix "=" uri ">"
+    
+    prefix ::= string
+    
+    uri ::= string
+
+
+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.
+
+<a name="NodeTypeNotation-NodeTypeDefinition"></a>
+### Node Type Definition
+
+
+    node_type_def ::= node_type_name [super_types]
+ [options]
+    		  {property_def | child_node_def}
+
+
+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.
+
+<a name="NodeTypeNotation-NodeTypeName"></a>
+### Node Type Name
+
+
+    node_type_name ::= "[" string "]
+"
+
+
+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.
+
+<a name="NodeTypeNotation-Supertypes"></a>
+### Supertypes
+
+
+    supertypes ::= ">" string_list
+
+
+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.
+
+<a name="NodeTypeNotation-Options"></a>
+### Options
+
+
+    options ::= orderable_opt | mixin_opt | orderable_opt
+    	    mixin_opt | mixin_opt orderable_opt
+    
+    orderable_opt ::= "orderable" | "ord" | "o"
+    
+    mixin_opt ::= "mixin" | "mix" | "m"
+
+
+The option indicators follow the node type name and optional supertype
+list.
+
+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.
+
+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.
+
+<a name="NodeTypeNotation-PropertyDefinition"></a>
+### Property Definition
+
+
+    property_def ::= "-" property_name [property_type_decl]
+     [default_values]
+ [attributes]
+     [value_constraints]
+
+
+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.
+
+<a name="NodeTypeNotation-PropertyName"></a>
+### Property Name
+
+
+    property_name ::= string
+
+
+The property name must be a valid JCR name or *, to indicate a residual
+property definition. It may be single-quoted.
+
+<a name="NodeTypeNotation-PropertyType"></a>
+### Property Type
+
+
+    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" | "*"
+
+
+The property type is indicated by a keyword delimited by parentheses. If
+the property type declaration is missing a type of STRING is assumed.
+
+<a name="NodeTypeNotation-DefaultValues"></a>
+### Default Values
+
+
+    default_values ::= "=" string_list
+
+
+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.
+
+<a name="NodeTypeNotation-Attributes"></a>
+### Attributes
+
+
+    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"
+
+
+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.
+
+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.
+
+The multiple keyword indicates that this property is multi-valued.
+
+A maximum of one on-version indicator may be present. If none is present
+then an on-version setting of COPY is assumed.
+
+<a name="NodeTypeNotation-ValueConstraints"></a>
+### Value Constraints
+
+
+    value_constraints ::= "<" string_list
+
+
+Value constraint are specified by a less-than sign followed by a
+comma-delimited list of constraint strings, each optionally single-quoted.
+
+<a name="NodeTypeNotation-ChildNodeDefinition"></a>
+### Child Node Definition
+
+
+    child_node_def ::= "+" node_name [required_types]
+     [default_type]
+ [attributes]
+
+
+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.
+
+<a name="NodeTypeNotation-NodeName"></a>
+### Node Name
+
+
+    node_name ::= string
+
+
+The node name must be a valid JCR name or *, to indicate a residual child
+node definition. It may be single-quoted.
+
+<a name="NodeTypeNotation-RequiredPrimaryNodeTypes"></a>
+### Required Primary Node Types
+
+
+    required_types ::= "(" string_list ")"
+
+
+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.
+
+<a name="NodeTypeNotation-DefaultPrimaryNodeType"></a>
+### Default Primary Node Type
+
+
+    default_type ::= "=" string
+
+
+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.
+
+<a name="NodeTypeNotation-Attributes"></a>
+### Attributes
+
+
+    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"
+
+
+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.
+
+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.
+
+The multiple keyword indicates that this child node may have same-name
+siblings.
+
+A maximum of one on-version indicator may be present. If none is present
+then an on-version setting of COPY is assumed.
+
+<a name="NodeTypeNotation-Quoting"></a>
+### Quoting
+
+
+    string_list ::= string {"," string}
+    
+    string ::= quoted_string | unquoted_string
+    
+    quoted_string :: = "'" unquoted_string "'"
+    
+    unquoted_string ::= /* a string */
+
+
+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.
+
+<a name="NodeTypeNotation-Escaping"></a>
+### Escaping
+
+The standard Java escape sequences are also supported:
+
+
+    \n newline
+    \t tab
+    \b backspace
+    \f form feed
+    \r return
+    \" double quote
+    \' single quote
+    \\ back slash
+    \uHHHH Unicode character in hexadecimal
+
+
+<a name="NodeTypeNotation-Comments"></a>
+### Comments
+
+Comment can also be included in the notation using either of the standard
+Java forms:
+
+
+    // A comment
+    
+    /* Another comment */
+
+
+<a name="NodeTypeNotation-WhitespaceandShortForms"></a>
+### Whitespace and Short Forms
+
+The notation can be compacted by taking advantage of the following the fact that spacing around keychars ([ ](-.html)
+ > , - ( ) = <), newlines and indentation are not required. So, the
+following is also well-formed:
+
+
+    [x]
+>y,z orderable mixin -p(date)=a,b primary mandatory autocreated protected
+multiple version <c,d
+
+
+Additionally, though spaces are required around the keywords (orderable,
+mixin, date, mandatory, etc.), short forms for keywords can be used. So,
+this:
+
+
+    [x]
+>y,z o m-p(date)=a,b ! m a p * version <c,d
+
+
+is well-formed (but perhaps not recommended!).
+
+<a name="NodeTypeNotation-WhythisWeirdNotation?"></a>
+### Why this Weird Notation?
+
+Here's why:
+
+Old Documentation Notation
+
+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):
+
+
+    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
+
+
+Old Configuration Notation
+
+Here is the same node type in the standard XML notation (used in
+configuration files in the Jackrabbit project, for example):
+
+
+    <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>
+
+
+New Format
+
+And, here it is in the new CND notation:
+
+
+    [nt:resource]
+ > mix:referenceable
+    - jcr:encoding
+    - jcr:mimeType mandatory
+    - jcr:data (binary) mandatory
+    - jcr:lastModified (date) mandatory ignore
+
+
+Case closed.
+
+<a name="NodeTypeNotation-Syntaxhightlightingfortexteditors"></a>
+## Syntax hightlighting for text editors
+
+Here is a TextMate bundle for CND syntax highlighting: [^CND.zip](^cnd.zip.html)

Propchange: jackrabbit/site/trunk/content/node-type-notation.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/node-type-visualization.cwiki
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/node-type-visualization.cwiki?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/node-type-visualization.cwiki (added)
+++ jackrabbit/site/trunk/content/node-type-visualization.cwiki Tue Jan 10 18:50:59 2012
@@ -0,0 +1,130 @@
+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:
+
+!jackrabbit-nodetypes.png!
+Node Type Hierarchy for Jackrabbit ([SVG version|^jackrabbit-nodetypes.svg])
+
+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.
+
+To generate these diagrams, you will need:
+
+# A system view export of "/jcr:system/jcr:nodeTypes".
+# An XSLT processor and the XSLT code below.
+# The [GraphViz|http://graphviz.org/] tool
+
+{code}
+<!--
+ * 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.
+-->
+
+<!--
+  A tool for converting the system view of /jcr:system/jcr:nodeTypes
+  to GraphViz input (see <http://www.graphviz.org/>).
+  
+  Usage:
+  
+  1: Export System 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 > nt-sample.dot
+
+  3: Run Graphviz, for instance
+  
+     $ dot nt-sample.dot -Tsvg -o nt-sample.svg
+     
+     ...producing nt-sample.svg as output.
+-->
+
+<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0"
+                xmlns:ed="http://greenbytes.de/2002/rfcedit"
+                xmlns:exslt="http://exslt.org/common"
+                xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+                xmlns:sv="http://www.jcp.org/jcr/sv/1.0"
+                xmlns:jcr="http://www.jcp.org/jcr/1.0"
+>
+
+<xsl:output method="text" encoding="UTF-8"/>
+
+<xsl:template match="/">
+  <xsl:text>digraph {&#10;</xsl:text>
+  <xsl:text>  rankdir=LR;&#10;</xsl:text>
+  <xsl:apply-templates select="//sv:node[sv:property[@sv:name='jcr:primaryType']/sv:value='nt:nodeType']"/>
+  <xsl:text>}&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="sv:node[sv:property[@sv:name='jcr:primaryType']/sv:value='nt:nodeType']">
+  <xsl:text>  "</xsl:text>
+  <xsl:value-of select="@sv:name"/>
+  <xsl:text>" </xsl:text>
+  <xsl:choose>
+    <xsl:when test="sv:property[@sv:name='jcr:isMixin']/sv:value='true'">
+      <xsl:text>[style = "filled, rounded", fillcolor = greenyellow];</xsl:text>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:text>[style = "filled, rounded", fillcolor = gold];</xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
+  <xsl:text>&#10;</xsl:text>
+  
+  <xsl:for-each select="sv:property[@sv:name='jcr:supertypes']/sv:value">
+    <xsl:text>  "</xsl:text>
+    <xsl:value-of select="."/>
+    <xsl:text>" -> "</xsl:text>
+    <xsl:value-of select="../../@sv:name"/>
+    <xsl:text>" [dir = back, tooltip = "supertype"];&#10;</xsl:text>
+  </xsl:for-each>
+  
+  <xsl:for-each select="sv:node[@sv:name='jcr:childNodeDefinition']">
+  
+    <xsl:variable name="name">
+      <xsl:choose>
+        <xsl:when test="sv:property[@sv:name='jcr:name']">
+          <xsl:value-of select="sv:property[@sv:name='jcr:name']/sv:value"/>
+        </xsl:when>
+        <xsl:otherwise>*</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="id" select="generate-id()"/>
+    
+    <xsl:value-of select="concat('  &quot;',$id,'&quot; [shape = box, style = filled, fillcolor = khaki, label=&quot;',$name,'&quot;] &#10;')"/>
+    
+    <xsl:text>  "</xsl:text>
+    <xsl:value-of select="../@sv:name"/>
+    <xsl:text>" -> "</xsl:text>
+    <xsl:value-of select="$id"/>
+    <xsl:choose>
+      <xsl:when test="sv:property[@sv:name='jcr:mandatory']/sv:value='true'">
+        <xsl:text>" [tooltip = "is mandatory child node of", dir = back];&#10;</xsl:text>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:text>" [style = dotted, tooltip = "is child node of", dir = back];&#10;</xsl:text>
+      </xsl:otherwise>
+    </xsl:choose>
+    
+    <xsl:text>  "</xsl:text>
+    <xsl:value-of select="sv:property[@sv:name='jcr:requiredPrimaryTypes']/sv:value"/>
+    <xsl:text>" -> "</xsl:text>
+    <xsl:value-of select="$id"/>
+    <xsl:text>" [dir = back, tooltip = "has primary type"];&#10;</xsl:text>
+
+  </xsl:for-each>
+  
+</xsl:template>
+
+</xsl:transform>
+{code}

Propchange: jackrabbit/site/trunk/content/node-type-visualization.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/trunk/content/node-type-visualization.mdtext
URL: http://svn.apache.org/viewvc/jackrabbit/site/trunk/content/node-type-visualization.mdtext?rev=1229679&view=auto
==============================================================================
--- jackrabbit/site/trunk/content/node-type-visualization.mdtext (added)
+++ jackrabbit/site/trunk/content/node-type-visualization.mdtext Tue Jan 10 18:50:59 2012
@@ -0,0 +1,153 @@
+Title: Node Type Visualization
+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:
+
+!jackrabbit-nodetypes.png!
+Node Type Hierarchy for Jackrabbit ([SVG version](^jackrabbit-nodetypes.svg.html)
+)
+
+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.
+
+To generate these diagrams, you will need:
+
+1. A system view export of "/jcr:system/jcr:nodeTypes".
+1. An XSLT processor and the XSLT code below.
+1. The [GraphViz](http://graphviz.org/)
+ tool
+
+
+    <!--
+     * 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.
+    -->
+    
+    <!--
+      A tool for converting the system view of /jcr:system/jcr:nodeTypes
+      to GraphViz input (see <http://www.graphviz.org/>).
+      
+      Usage:
+      
+      1: Export System 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 > nt-sample.dot
+    
+      3: Run Graphviz, for instance
+      
+         $ dot nt-sample.dot -Tsvg -o nt-sample.svg
+         
+         ...producing nt-sample.svg as output.
+    -->
+    
+    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    		version="1.0"
+    		xmlns:ed="http://greenbytes.de/2002/rfcedit"
+    		xmlns:exslt="http://exslt.org/common"
+    		xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    		xmlns:sv="http://www.jcp.org/jcr/sv/1.0"
+    		xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    >
+    
+    <xsl:output method="text" encoding="UTF-8"/>
+    
+    <xsl:template match="/">
+      <xsl:text>digraph {&#10;</xsl:text>
+      <xsl:text>  rankdir=LR;&#10;</xsl:text>
+      <xsl:apply-templates select="//sv:node[sv:property[@sv:name='jcr:primaryType']
+/sv:value='nt:nodeType']"/>
+      <xsl:text>}&#10;</xsl:text>
+    </xsl:template>
+    
+    <xsl:template match="sv:node[sv:property[@sv:name='jcr:primaryType']
+/sv:value='nt:nodeType']">
+      <xsl:text>  "</xsl:text>
+      <xsl:value-of select="@sv:name"/>
+      <xsl:text>" </xsl:text>
+      <xsl:choose>
+        <xsl:when test="sv:property[@sv:name='jcr:isMixin']
+/sv:value='true'">
+          <xsl:text>[style = "filled, rounded", fillcolor = greenyellow]
+;</xsl:text>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:text>[style = "filled, rounded", fillcolor = gold]
+;</xsl:text>
+        </xsl:otherwise>
+      </xsl:choose>
+      <xsl:text>&#10;</xsl:text>
+      
+      <xsl:for-each select="sv:property[@sv:name='jcr:supertypes']
+/sv:value">
+        <xsl:text>	"</xsl:text>
+        <xsl:value-of select="."/>
+        <xsl:text>" -> "</xsl:text>
+        <xsl:value-of select="../../@sv:name"/>
+        <xsl:text>" [dir = back, tooltip = "supertype"]
+;&#10;</xsl:text>
+      </xsl:for-each>
+      
+      <xsl:for-each select="sv:node[@sv:name='jcr:childNodeDefinition']
+">
+      
+        <xsl:variable name="name">
+          <xsl:choose>
+            <xsl:when test="sv:property[@sv:name='jcr:name']
+">
+              <xsl:value-of select="sv:property[@sv:name='jcr:name']
+/sv:value"/>
+    	</xsl:when>
+    	<xsl:otherwise>*</xsl:otherwise>
+          </xsl:choose>
+        </xsl:variable>
+    
+        <xsl:variable name="id" select="generate-id()"/>
+        
+        <xsl:value-of select="concat('  &quot;',$id,'&quot; [shape = box, style = filled, fillcolor = khaki, label=&quot;',$name,'&quot;]
+ &#10;')"/>
+        
+        <xsl:text>	"</xsl:text>
+        <xsl:value-of select="../@sv:name"/>
+        <xsl:text>" -> "</xsl:text>
+        <xsl:value-of select="$id"/>
+        <xsl:choose>
+          <xsl:when test="sv:property[@sv:name='jcr:mandatory']
+/sv:value='true'">
+    	<xsl:text>" [tooltip = "is mandatory child node of", dir = back]
+;&#10;</xsl:text>
+          </xsl:when>
+          <xsl:otherwise>
+    	<xsl:text>" [style = dotted, tooltip = "is child node of", dir = back]
+;&#10;</xsl:text>
+          </xsl:otherwise>
+        </xsl:choose>
+        
+        <xsl:text>	"</xsl:text>
+        <xsl:value-of select="sv:property[@sv:name='jcr:requiredPrimaryTypes']
+/sv:value"/>
+        <xsl:text>" -> "</xsl:text>
+        <xsl:value-of select="$id"/>
+        <xsl:text>" [dir = back, tooltip = "has primary type"]
+;&#10;</xsl:text>
+    
+      </xsl:for-each>
+      
+    </xsl:template>
+    
+    </xsl:transform>
+

Propchange: jackrabbit/site/trunk/content/node-type-visualization.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native