You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2014/06/02 10:45:36 UTC

svn commit: r1599129 [1/8] - in /jackrabbit/site/live/oak/docs: ./ META-INF/ architecture/ nodestore/ oak_api/ plugins/ security/ security/accesscontrol/ security/authentication/ security/permission/ security/principal/ security/privilege/ security/user/

Author: angela
Date: Mon Jun  2 08:45:34 2014
New Revision: 1599129

URL: http://svn.apache.org/r1599129
Log:
OAK-936: Site checkin for project Oak Documentation-0.20-SNAPSHOT

Added:
    jackrabbit/site/live/oak/docs/META-INF/
    jackrabbit/site/live/oak/docs/META-INF/DEPENDENCIES
    jackrabbit/site/live/oak/docs/META-INF/LICENSE   (with props)
    jackrabbit/site/live/oak/docs/META-INF/NOTICE   (with props)
    jackrabbit/site/live/oak/docs/api.html   (with props)
    jackrabbit/site/live/oak/docs/architecture/
    jackrabbit/site/live/oak/docs/architecture/big-picture.png   (with props)
    jackrabbit/site/live/oak/docs/architecture/nodestate-r1.png   (with props)
    jackrabbit/site/live/oak/docs/architecture/nodestate-r2.png   (with props)
    jackrabbit/site/live/oak/docs/architecture/nodestate.html   (with props)
    jackrabbit/site/live/oak/docs/architecture/overview.html   (with props)
    jackrabbit/site/live/oak/docs/architecture/transactional-model.html   (with props)
    jackrabbit/site/live/oak/docs/nodestore/
    jackrabbit/site/live/oak/docs/nodestore/documentmk.html   (with props)
    jackrabbit/site/live/oak/docs/nodestore/overview.html   (with props)
    jackrabbit/site/live/oak/docs/nodestore/segmentmk.html   (with props)
    jackrabbit/site/live/oak/docs/oak_api/
    jackrabbit/site/live/oak/docs/oak_api/error_codes.html   (with props)
    jackrabbit/site/live/oak/docs/oak_api/overview.html   (with props)
    jackrabbit/site/live/oak/docs/plugins/
    jackrabbit/site/live/oak/docs/plugins/blobstore.html   (with props)
    jackrabbit/site/live/oak/docs/transactional-model.html   (with props)
Modified:
    jackrabbit/site/live/oak/docs/FAQ.html
    jackrabbit/site/live/oak/docs/big-picture.png
    jackrabbit/site/live/oak/docs/blobstore.html
    jackrabbit/site/live/oak/docs/clustering.html
    jackrabbit/site/live/oak/docs/construct.html
    jackrabbit/site/live/oak/docs/dev_getting_started.html
    jackrabbit/site/live/oak/docs/differences.html
    jackrabbit/site/live/oak/docs/documentmk.html
    jackrabbit/site/live/oak/docs/dos_and_donts.html
    jackrabbit/site/live/oak/docs/downloads.html
    jackrabbit/site/live/oak/docs/index.html
    jackrabbit/site/live/oak/docs/jsop-diff.html
    jackrabbit/site/live/oak/docs/known_issues.html
    jackrabbit/site/live/oak/docs/license.html
    jackrabbit/site/live/oak/docs/microkernel.html
    jackrabbit/site/live/oak/docs/nodestate.html
    jackrabbit/site/live/oak/docs/osgi_config.html
    jackrabbit/site/live/oak/docs/overview.html
    jackrabbit/site/live/oak/docs/participating.html
    jackrabbit/site/live/oak/docs/query.html
    jackrabbit/site/live/oak/docs/security/.DS_Store
    jackrabbit/site/live/oak/docs/security/accesscontrol.html
    jackrabbit/site/live/oak/docs/security/accesscontrol/differences.html
    jackrabbit/site/live/oak/docs/security/accesscontrol/editing.html
    jackrabbit/site/live/oak/docs/security/accesscontrol/restriction.html
    jackrabbit/site/live/oak/docs/security/authentication.html
    jackrabbit/site/live/oak/docs/security/authentication/differences.html
    jackrabbit/site/live/oak/docs/security/authentication/externalloginmodule.html
    jackrabbit/site/live/oak/docs/security/authentication/identitymanagement.html
    jackrabbit/site/live/oak/docs/security/authentication/ldap.html
    jackrabbit/site/live/oak/docs/security/authentication/preauthentication.html
    jackrabbit/site/live/oak/docs/security/authentication/tokenmanagement.html
    jackrabbit/site/live/oak/docs/security/authentication/usersync.html
    jackrabbit/site/live/oak/docs/security/overview.html
    jackrabbit/site/live/oak/docs/security/permission.html
    jackrabbit/site/live/oak/docs/security/permission/differences.html
    jackrabbit/site/live/oak/docs/security/permission/evaluation.html
    jackrabbit/site/live/oak/docs/security/principal.html
    jackrabbit/site/live/oak/docs/security/principal/differences.html
    jackrabbit/site/live/oak/docs/security/privilege.html
    jackrabbit/site/live/oak/docs/security/privilege/differences.html
    jackrabbit/site/live/oak/docs/security/user.html
    jackrabbit/site/live/oak/docs/security/user/authorizableaction.html
    jackrabbit/site/live/oak/docs/security/user/differences.html
    jackrabbit/site/live/oak/docs/security/user/membership.html
    jackrabbit/site/live/oak/docs/security/user/query.html
    jackrabbit/site/live/oak/docs/segmentmk.html
    jackrabbit/site/live/oak/docs/use_getting_started.html

Modified: jackrabbit/site/live/oak/docs/FAQ.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/FAQ.html?rev=1599129&r1=1599128&r2=1599129&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/FAQ.html (original)
+++ jackrabbit/site/live/oak/docs/FAQ.html Mon Jun  2 08:45:34 2014
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at 2014-05-14
+ | Generated by Apache Maven Doxia at 2014-06-02
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20140514" />
+    <meta name="Date-Revision-yyyymmdd" content="20140602" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Jackrabbit Oak -  Frequently asked questions</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -61,25 +61,41 @@
                           </ul>
       </li>
                 <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Concepts and architecture <b class="caret"></b></a>
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Concepts and Architecture <b class="caret"></b></a>
         <ul class="dropdown-menu">
         
-                      <li>      <a href="overview.html"  title="Overview">Overview</a>
+                      <li>      <a href="architecture/overview.html"  title="Overview">Overview</a>
 </li>
                   
-                      <li>      <a href="nodestate.html"  title="The node state model">The node state model</a>
+                      <li>      <a href="architecture/nodestate.html"  title="The node state model">The node state model</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Main APIs <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.day.com/specs/jcr/2.0/index.html"  title="JCR API">JCR API</a>
 </li>
                   
-                      <li>      <a href="microkernel.html"  title="NodeStore and MicroKernel">NodeStore and MicroKernel</a>
+                      <li>      <a href="oak_api/overview.html"  title="Oak API">Oak API</a>
 </li>
                   
+                      <li>      <a href="nodestore/overview.html"  title="NodeStore and MicroKernel API">NodeStore and MicroKernel API</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Features and Plugins <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
                       <li>      <a href="query.html"  title="Query">Query</a>
 </li>
                   
-                      <li>      <a href="blobstore.html"  title="BlobStore">BlobStore</a>
+                      <li>      <a href="security/overview.html"  title="Security">Security</a>
 </li>
                   
-                      <li>      <a href="security/overview.html"  title="Security">Security</a>
+                      <li>      <a href="plugins/blobstore.html"  title="BlobStore">BlobStore</a>
 </li>
                   
                       <li>      <a href="clustering.html"  title="Clustering">Clustering</a>
@@ -163,7 +179,7 @@
         <ul class="breadcrumb">
                 
                     
-                  <li id="publishDate">Last Published: 2014-05-14</li>
+                  <li id="publishDate">Last Published: 2014-06-02</li>
                   <li class="divider">|</li> <li id="projectVersion">Version: 0.20-SNAPSHOT</li>
                       
                 
@@ -201,31 +217,47 @@
           <i class="none"></i>
         Downloads</a>
             </li>
-                              <li class="nav-header">Concepts and architecture</li>
+                              <li class="nav-header">Concepts and Architecture</li>
                                 
       <li>
     
-                          <a href="overview.html" title="Overview">
+                          <a href="architecture/overview.html" title="Overview">
           <i class="none"></i>
         Overview</a>
             </li>
                   
       <li>
     
-                          <a href="nodestate.html" title="The node state model">
+                          <a href="architecture/nodestate.html" title="The node state model">
           <i class="none"></i>
         The node state model</a>
             </li>
+                              <li class="nav-header">Main APIs</li>
+                                
+      <li>
+    
+                          <a href="http://www.day.com/specs/jcr/2.0/index.html" class="externalLink" title="JCR API">
+          <i class="none"></i>
+        JCR API</a>
+            </li>
                   
       <li>
     
-                          <a href="microkernel.html" title="NodeStore and MicroKernel">
+                          <a href="oak_api/overview.html" title="Oak API">
           <i class="none"></i>
-        NodeStore and MicroKernel</a>
+        Oak API</a>
             </li>
                   
       <li>
     
+                          <a href="nodestore/overview.html" title="NodeStore and MicroKernel API">
+          <i class="none"></i>
+        NodeStore and MicroKernel API</a>
+            </li>
+                              <li class="nav-header">Features and Plugins</li>
+                                
+      <li>
+    
                           <a href="query.html" title="Query">
           <i class="none"></i>
         Query</a>
@@ -233,16 +265,16 @@
                   
       <li>
     
-                          <a href="blobstore.html" title="BlobStore">
+                          <a href="security/overview.html" title="Security">
           <i class="none"></i>
-        BlobStore</a>
+        Security</a>
             </li>
                   
       <li>
     
-                          <a href="security/overview.html" title="Security">
+                          <a href="plugins/blobstore.html" title="BlobStore">
           <i class="none"></i>
-        Security</a>
+        BlobStore</a>
             </li>
                   
       <li>
@@ -406,8 +438,9 @@
           
     
     
+                
     <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/jackrabbit-oak/widgets/project_users_logo.js"></script>
+      <script type="text/javascript" src="http://www.ohloh.net/p/jackrabbit-oak/widgets/project_thin_badge.js"></script>
     </div>
         </div>
     </footer>

Added: jackrabbit/site/live/oak/docs/META-INF/DEPENDENCIES
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/META-INF/DEPENDENCIES?rev=1599129&view=auto
==============================================================================
--- jackrabbit/site/live/oak/docs/META-INF/DEPENDENCIES (added)
+++ jackrabbit/site/live/oak/docs/META-INF/DEPENDENCIES Mon Jun  2 08:45:34 2014
@@ -0,0 +1,11 @@
+// ------------------------------------------------------------------
+// Transitive dependencies of this project determined from the
+// maven pom organized by organization.
+// ------------------------------------------------------------------
+
+Oak Documentation
+
+
+
+
+

Added: jackrabbit/site/live/oak/docs/META-INF/LICENSE
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/META-INF/LICENSE?rev=1599129&view=auto
==============================================================================
--- jackrabbit/site/live/oak/docs/META-INF/LICENSE (added)
+++ jackrabbit/site/live/oak/docs/META-INF/LICENSE Mon Jun  2 08:45:34 2014
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.

Propchange: jackrabbit/site/live/oak/docs/META-INF/LICENSE
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/live/oak/docs/META-INF/NOTICE
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/META-INF/NOTICE?rev=1599129&view=auto
==============================================================================
--- jackrabbit/site/live/oak/docs/META-INF/NOTICE (added)
+++ jackrabbit/site/live/oak/docs/META-INF/NOTICE Mon Jun  2 08:45:34 2014
@@ -0,0 +1,8 @@
+
+Oak Documentation
+Copyright 2012-2014 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+

Propchange: jackrabbit/site/live/oak/docs/META-INF/NOTICE
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/live/oak/docs/api.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/api.html?rev=1599129&view=auto
==============================================================================
--- jackrabbit/site/live/oak/docs/api.html (added)
+++ jackrabbit/site/live/oak/docs/api.html Mon Jun  2 08:45:34 2014
@@ -0,0 +1,415 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2014-05-20
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20140520" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Jackrabbit Oak - Oak API</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>
+
+    
+            </head>
+        <body class="topBarEnabled">
+          
+    
+    
+            
+    
+    
+    <a href="http://github.com/apache/jackrabbit-oak">
+      <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
+        src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"
+        alt="Fork me on GitHub">
+    </a>
+  
+                
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                <div class="container-fluid">
+        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+        </a>
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Overview <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="Jackrabbit Oak">Jackrabbit Oak</a>
+</li>
+                  
+                      <li>      <a href="license.html"  title="License">License</a>
+</li>
+                  
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Concepts and architecture <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="overview.html"  title="Overview">Overview</a>
+</li>
+                  
+                      <li>      <a href="api.html"  title="Oak API">Oak API</a>
+</li>
+                  
+                      <li>      <a href="nodestate.html"  title="The node state model">The node state model</a>
+</li>
+                  
+                      <li>      <a href="microkernel.html"  title="NodeStore and MicroKernel">NodeStore and MicroKernel</a>
+</li>
+                  
+                      <li>      <a href="query.html"  title="Query">Query</a>
+</li>
+                  
+                      <li>      <a href="blobstore.html"  title="BlobStore">BlobStore</a>
+</li>
+                  
+                      <li>      <a href="security/overview.html"  title="Security">Security</a>
+</li>
+                  
+                      <li>      <a href="clustering.html"  title="Clustering">Clustering</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Using Oak <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="use_getting_started.html"  title="Getting Started">Getting Started</a>
+</li>
+                  
+                      <li>      <a href="construct.html"  title="Repository construction">Repository construction</a>
+</li>
+                  
+                      <li>      <a href="osgi_config.html"  title="Configuring Oak">Configuring Oak</a>
+</li>
+                  
+                      <li>      <a href="differences.html"  title="Differences to Jackrabbit 2">Differences to Jackrabbit 2</a>
+</li>
+                  
+                      <li>      <a href="known_issues.html"  title="Known Issues">Known Issues</a>
+</li>
+                  
+                      <li>      <a href="dos_and_donts.html"  title="Dos and don'ts">Dos and don'ts</a>
+</li>
+                  
+                      <li>      <a href="FAQ.html"  title="FAQ">FAQ</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Developing Oak <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="dev_getting_started.html"  title="Getting Started">Getting Started</a>
+</li>
+                  
+                      <li>      <a href="participating.html"  title="Participating">Participating</a>
+</li>
+                  
+                      <li>      <a href="apidocs/index.html"  title="API docs">API docs</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Links <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://jackrabbit.apache.org/oak"  title="Apache Jackrabbit Oak">Apache Jackrabbit Oak</a>
+</li>
+                  
+                      <li>      <a href="http://jackrabbit.apache.org/"  title="Apache Jackrabbit">Apache Jackrabbit</a>
+</li>
+                          </ul>
+      </li>
+                  </ul>
+          
+          
+          
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container-fluid">
+          <div id="banner">
+        <div class="pull-left">
+                                <div id="bannerLeft">
+                <h2>Oak Documentation</h2>
+                </div>
+                      </div>
+        <div class="pull-right">  </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                  <li id="publishDate">Last Published: 2014-05-20</li>
+                  <li class="divider">|</li> <li id="projectVersion">Version: 0.20-SNAPSHOT</li>
+                      
+                
+                    
+      
+                            </ul>
+      </div>
+
+            
+      <div class="row-fluid">
+        <div id="leftColumn" class="span3">
+          <div class="well sidebar-nav">
+                
+                    
+                <ul class="nav nav-list">
+                    <li class="nav-header">Overview</li>
+                                
+      <li>
+    
+                          <a href="index.html" title="Jackrabbit Oak">
+          <i class="none"></i>
+        Jackrabbit Oak</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="license.html" title="License">
+          <i class="none"></i>
+        License</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="downloads.html" title="Downloads">
+          <i class="none"></i>
+        Downloads</a>
+            </li>
+                              <li class="nav-header">Concepts and architecture</li>
+                                
+      <li>
+    
+                          <a href="overview.html" title="Overview">
+          <i class="none"></i>
+        Overview</a>
+            </li>
+                  
+      <li class="active">
+    
+            <a href="#"><i class="none"></i>Oak API</a>
+          </li>
+                  
+      <li>
+    
+                          <a href="nodestate.html" title="The node state model">
+          <i class="none"></i>
+        The node state model</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="microkernel.html" title="NodeStore and MicroKernel">
+          <i class="none"></i>
+        NodeStore and MicroKernel</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="query.html" title="Query">
+          <i class="none"></i>
+        Query</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="blobstore.html" title="BlobStore">
+          <i class="none"></i>
+        BlobStore</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="security/overview.html" title="Security">
+          <i class="none"></i>
+        Security</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="clustering.html" title="Clustering">
+          <i class="none"></i>
+        Clustering</a>
+            </li>
+                              <li class="nav-header">Using Oak</li>
+                                
+      <li>
+    
+                          <a href="use_getting_started.html" title="Getting Started">
+          <i class="none"></i>
+        Getting Started</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="construct.html" title="Repository construction">
+          <i class="none"></i>
+        Repository construction</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="osgi_config.html" title="Configuring Oak">
+          <i class="none"></i>
+        Configuring Oak</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="differences.html" title="Differences to Jackrabbit 2">
+          <i class="none"></i>
+        Differences to Jackrabbit 2</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="known_issues.html" title="Known Issues">
+          <i class="none"></i>
+        Known Issues</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="dos_and_donts.html" title="Dos and don'ts">
+          <i class="none"></i>
+        Dos and don'ts</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="FAQ.html" title="FAQ">
+          <i class="none"></i>
+        FAQ</a>
+            </li>
+                              <li class="nav-header">Developing Oak</li>
+                                
+      <li>
+    
+                          <a href="dev_getting_started.html" title="Getting Started">
+          <i class="none"></i>
+        Getting Started</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="participating.html" title="Participating">
+          <i class="none"></i>
+        Participating</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="apidocs/index.html" title="API docs">
+          <i class="none"></i>
+        API docs</a>
+            </li>
+                              <li class="nav-header">Links</li>
+                                
+      <li>
+    
+                          <a href="http://jackrabbit.apache.org/oak" class="externalLink" title="Apache Jackrabbit Oak">
+          <i class="none"></i>
+        Apache Jackrabbit Oak</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="http://jackrabbit.apache.org/" class="externalLink" title="Apache Jackrabbit">
+          <i class="none"></i>
+        Apache Jackrabbit</a>
+            </li>
+            </ul>
+                
+                    
+                
+          <hr class="divider" />
+
+           <div id="poweredBy">
+                   
+    <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
+
+    
+    <div class="g-plusone" data-href="http://jackrabbit.apache.org/oak-doc/" data-size="tall" ></div>
+
+                   <div class="clear"></div>
+                            <div class="clear"></div>
+                            <div class="clear"></div>
+                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+                  </div>
+          </div>
+        </div>
+        
+                
+        <div id="bodyColumn"  class="span9" >
+                                  
+            <!-- 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. --><h1>Oak API</h1>
+<p><i>todo</i></p>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2012-2014
+                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+            All Rights Reserved.      
+                    
+      </div>
+
+        
+        
+          
+    
+    
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/jackrabbit-oak/widgets/project_users_logo.js"></script>
+    </div>
+        </div>
+    </footer>
+  </body>
+</html>
\ No newline at end of file

Propchange: jackrabbit/site/live/oak/docs/api.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/site/live/oak/docs/architecture/big-picture.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/architecture/big-picture.png?rev=1599129&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/live/oak/docs/architecture/big-picture.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: jackrabbit/site/live/oak/docs/architecture/nodestate-r1.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/architecture/nodestate-r1.png?rev=1599129&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/live/oak/docs/architecture/nodestate-r1.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: jackrabbit/site/live/oak/docs/architecture/nodestate-r2.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/architecture/nodestate-r2.png?rev=1599129&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/live/oak/docs/architecture/nodestate-r2.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: jackrabbit/site/live/oak/docs/architecture/nodestate.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/architecture/nodestate.html?rev=1599129&view=auto
==============================================================================
--- jackrabbit/site/live/oak/docs/architecture/nodestate.html (added)
+++ jackrabbit/site/live/oak/docs/architecture/nodestate.html Mon Jun  2 08:45:34 2014
@@ -0,0 +1,577 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2014-06-02
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20140602" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Jackrabbit Oak - Understanding the node state model</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.0.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.0.min.js"></script>
+
+    
+            </head>
+        <body class="topBarEnabled">
+          
+    
+    
+            
+    
+    
+    <a href="http://github.com/apache/jackrabbit-oak">
+      <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
+        src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"
+        alt="Fork me on GitHub">
+    </a>
+  
+                
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                <div class="container-fluid">
+        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+        </a>
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Overview <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="Jackrabbit Oak">Jackrabbit Oak</a>
+</li>
+                  
+                      <li>      <a href="../license.html"  title="License">License</a>
+</li>
+                  
+                      <li>      <a href="../downloads.html"  title="Downloads">Downloads</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Concepts and Architecture <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../architecture/overview.html"  title="Overview">Overview</a>
+</li>
+                  
+                      <li>      <a href="../architecture/nodestate.html"  title="The node state model">The node state model</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Main APIs <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.day.com/specs/jcr/2.0/index.html"  title="JCR API">JCR API</a>
+</li>
+                  
+                      <li>      <a href="../oak_api/overview.html"  title="Oak API">Oak API</a>
+</li>
+                  
+                      <li>      <a href="../nodestore/overview.html"  title="NodeStore and MicroKernel API">NodeStore and MicroKernel API</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Features and Plugins <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../query.html"  title="Query">Query</a>
+</li>
+                  
+                      <li>      <a href="../security/overview.html"  title="Security">Security</a>
+</li>
+                  
+                      <li>      <a href="../plugins/blobstore.html"  title="BlobStore">BlobStore</a>
+</li>
+                  
+                      <li>      <a href="../clustering.html"  title="Clustering">Clustering</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Using Oak <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../use_getting_started.html"  title="Getting Started">Getting Started</a>
+</li>
+                  
+                      <li>      <a href="../construct.html"  title="Repository construction">Repository construction</a>
+</li>
+                  
+                      <li>      <a href="../osgi_config.html"  title="Configuring Oak">Configuring Oak</a>
+</li>
+                  
+                      <li>      <a href="../differences.html"  title="Differences to Jackrabbit 2">Differences to Jackrabbit 2</a>
+</li>
+                  
+                      <li>      <a href="../known_issues.html"  title="Known Issues">Known Issues</a>
+</li>
+                  
+                      <li>      <a href="../dos_and_donts.html"  title="Dos and don'ts">Dos and don'ts</a>
+</li>
+                  
+                      <li>      <a href="../FAQ.html"  title="FAQ">FAQ</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Developing Oak <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../dev_getting_started.html"  title="Getting Started">Getting Started</a>
+</li>
+                  
+                      <li>      <a href="../participating.html"  title="Participating">Participating</a>
+</li>
+                  
+                      <li>      <a href="../apidocs/index.html"  title="API docs">API docs</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Links <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://jackrabbit.apache.org/oak"  title="Apache Jackrabbit Oak">Apache Jackrabbit Oak</a>
+</li>
+                  
+                      <li>      <a href="http://jackrabbit.apache.org/"  title="Apache Jackrabbit">Apache Jackrabbit</a>
+</li>
+                          </ul>
+      </li>
+                  </ul>
+          
+          
+          
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container-fluid">
+          <div id="banner">
+        <div class="pull-left">
+                                <div id="bannerLeft">
+                <h2>Oak Documentation</h2>
+                </div>
+                      </div>
+        <div class="pull-right">  </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                  <li id="publishDate">Last Published: 2014-06-02</li>
+                  <li class="divider">|</li> <li id="projectVersion">Version: 0.20-SNAPSHOT</li>
+                      
+                
+                    
+      
+                            </ul>
+      </div>
+
+            
+      <div class="row-fluid">
+        <div id="leftColumn" class="span3">
+          <div class="well sidebar-nav">
+                
+                    
+                <ul class="nav nav-list">
+                    <li class="nav-header">Overview</li>
+                                
+      <li>
+    
+                          <a href="../index.html" title="Jackrabbit Oak">
+          <i class="none"></i>
+        Jackrabbit Oak</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../license.html" title="License">
+          <i class="none"></i>
+        License</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../downloads.html" title="Downloads">
+          <i class="none"></i>
+        Downloads</a>
+            </li>
+                              <li class="nav-header">Concepts and Architecture</li>
+                                
+      <li>
+    
+                          <a href="../architecture/overview.html" title="Overview">
+          <i class="none"></i>
+        Overview</a>
+            </li>
+                  
+      <li class="active">
+    
+            <a href="#"><i class="none"></i>The node state model</a>
+          </li>
+                              <li class="nav-header">Main APIs</li>
+                                
+      <li>
+    
+                          <a href="http://www.day.com/specs/jcr/2.0/index.html" class="externalLink" title="JCR API">
+          <i class="none"></i>
+        JCR API</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../oak_api/overview.html" title="Oak API">
+          <i class="none"></i>
+        Oak API</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../nodestore/overview.html" title="NodeStore and MicroKernel API">
+          <i class="none"></i>
+        NodeStore and MicroKernel API</a>
+            </li>
+                              <li class="nav-header">Features and Plugins</li>
+                                
+      <li>
+    
+                          <a href="../query.html" title="Query">
+          <i class="none"></i>
+        Query</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../security/overview.html" title="Security">
+          <i class="none"></i>
+        Security</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../plugins/blobstore.html" title="BlobStore">
+          <i class="none"></i>
+        BlobStore</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../clustering.html" title="Clustering">
+          <i class="none"></i>
+        Clustering</a>
+            </li>
+                              <li class="nav-header">Using Oak</li>
+                                
+      <li>
+    
+                          <a href="../use_getting_started.html" title="Getting Started">
+          <i class="none"></i>
+        Getting Started</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../construct.html" title="Repository construction">
+          <i class="none"></i>
+        Repository construction</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../osgi_config.html" title="Configuring Oak">
+          <i class="none"></i>
+        Configuring Oak</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../differences.html" title="Differences to Jackrabbit 2">
+          <i class="none"></i>
+        Differences to Jackrabbit 2</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../known_issues.html" title="Known Issues">
+          <i class="none"></i>
+        Known Issues</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../dos_and_donts.html" title="Dos and don'ts">
+          <i class="none"></i>
+        Dos and don'ts</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../FAQ.html" title="FAQ">
+          <i class="none"></i>
+        FAQ</a>
+            </li>
+                              <li class="nav-header">Developing Oak</li>
+                                
+      <li>
+    
+                          <a href="../dev_getting_started.html" title="Getting Started">
+          <i class="none"></i>
+        Getting Started</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../participating.html" title="Participating">
+          <i class="none"></i>
+        Participating</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../apidocs/index.html" title="API docs">
+          <i class="none"></i>
+        API docs</a>
+            </li>
+                              <li class="nav-header">Links</li>
+                                
+      <li>
+    
+                          <a href="http://jackrabbit.apache.org/oak" class="externalLink" title="Apache Jackrabbit Oak">
+          <i class="none"></i>
+        Apache Jackrabbit Oak</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="http://jackrabbit.apache.org/" class="externalLink" title="Apache Jackrabbit">
+          <i class="none"></i>
+        Apache Jackrabbit</a>
+            </li>
+            </ul>
+                
+                    
+                
+          <hr class="divider" />
+
+           <div id="poweredBy">
+                   
+    <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
+
+    
+    <div class="g-plusone" data-href="http://jackrabbit.apache.org/oak-doc/" data-size="tall" ></div>
+
+                   <div class="clear"></div>
+                            <div class="clear"></div>
+                            <div class="clear"></div>
+                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+                  </div>
+          </div>
+        </div>
+        
+                
+        <div id="bodyColumn"  class="span9" >
+                                  
+            <!-- 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. --><h1>Understanding the node state model</h1>
+<p>This article describes the <i>node state model</i> that is the core design abstraction inside the <tt>oak-core</tt> component. Understanding the node state model is essential to working with Oak internals and to building custom Oak extensions.</p>
+<div class="section">
+<h2>Background<a name="Background"></a></h2>
+<p>Oak organizes all content in a large tree hierarchy that consists of nodes and properties. Each snapshot or revision of this content tree is immutable, and changes to the tree are expressed as a sequence of new revisions. The MicroKernel of an Oak repository is responsible for managing the content tree and its revisions.</p>
+<p>The JSON-based MicroKernel API works well as a part of a remote protocol but is cumbersome to use directly in oak-core. There are also many cases where transient or virtual content that doesn&#x2019;t (yet) exist in the MicroKernel needs to be managed by Oak. The node state model as expressed in the NodeState interface in oak-core is designed for these purposes. It provides a unified low-level abstraction for managing all tree content and lays the foundation for the higher-level Oak API that&#x2019;s visible to clients.</p></div>
+<div class="section">
+<h2>The state of a node<a name="The_state_of_a_node"></a></h2>
+<p>A <i>node</i> in Oak is an unordered collection of named properties and child nodes. As the content tree evolves through a sequence of revisions, a node in it will go through a series of different states. A <i>node state</i> then is an <i>immutable</i> snapshot of a specific state of a node and the subtree beneath it.</p>
+<p>As an example, the following diagram shows two revisions of a content tree, the first revision consists of five nodes, and in the second revision a sixth node is added in one of the subtrees. Note how unmodified subtrees can be shared across revisions, while only the modified nodes and their ancestors up to the root (shown in yellow) need to be updated to reflect the change. This way both revisions remain readable at all times without the implementation having to make a separate copy of the entire repository for each revision.</p>
+<p><img src="nodestate-r1.png?raw=true" alt="two revisions of a content tree" /></p>
+<p>To avoid making a special case of the root node and therefore to make it easy to write algorithms that can recursively process each subtree as a standalone content tree, a node state is <i>unnamed</i> and does not contain information about it&#x2019;s location within a larger content tree. Instead each property and child node state is uniquely named within a parent node state. An algorithm that needs to know the path of a node can construct it from the encountered names as it descends the tree structure.</p>
+<p>Since node states are immutable, they are also easy to keep <i>thread-safe</i>. Implementations that use mutable data structures like caches or otherwise aren&#x2019;t thread-safe by default, are expected to use other mechanisms like synchronization to ensure thread-safety.</p></div>
+<div class="section">
+<h2>The NodeState interface<a name="The_NodeState_interface"></a></h2>
+<p>The above design principles are reflected in the <tt>NodeState</tt> interface in the <tt>org.apache.jackrabbit.oak.spi.state</tt> package of <tt>oak-core</tt>. The interface consists of three sets of methods:</p>
+
+<ul>
+  
+<li>Methods for accessing properties</li>
+  
+<li>Methods for accessing child nodes</li>
+  
+<li>The <tt>exists</tt> method for checking whether the node exists or is accessible</li>
+  
+<li>The <tt>builder</tt> method for building modified states</li>
+  
+<li>The <tt>compareAgainstBaseState</tt> method for comparing states</li>
+</ul>
+<p>You can request a property or a child node by name, get the number of properties or child nodes, or iterate through all of them. Even though properties and child nodes are accessed through separate methods, they share the same namespace so a given name can either refer to a property or a child node, but not to both at the same time.</p>
+<p>Iteration order of properties and child nodes is <i>unspecified but stable</i>, so that re-iterating through the items of a <i>specific NodeState instance</i> will return the items in the same order as before, but the specific ordering is not defined nor does it necessarily remain the same across different instances.</p>
+<p>The last three methods, <tt>exists</tt>, <tt>builder</tt> and <tt>compareAgainstBaseState</tt>, are covered in the next sections. See also the <tt>NodeState</tt> javadocs for more details about this interface and all its methods.</p></div>
+<div class="section">
+<h2>Existence and iterability of node states<a name="Existence_and_iterability_of_node_states"></a></h2>
+<p>The <tt>exists</tt> method makes it possible to always traverse any path regardless of whether the named content exists or not. The <tt>getChildNode</tt> method returns a child <tt>NodeState</tt> instance for any given name, and the caller is expected to use the <tt>exists</tt> method to check whether the named node actually does exist. The purpose of this feature is to allow paths like <tt>/foo/bar</tt> to be traversed even if the current user only has read access to the <tt>bar</tt> node but not its parent <tt>foo</tt>. As a consequence it&#x2019;s even possible to access content like a fictional <tt>/bar</tt> subtree that doesn&#x2019;t exist at all. A piece of code for accessing such content could look like this:</p>
+
+<div class="source">
+<pre>NodeState root = ...;
+
+NodeState foo = root.getChildNode(&quot;foo&quot;);
+assert !foo.exists();
+NodeState bar = foo.getChildNode(&quot;bar&quot;);
+assert bar.exists();
+
+NodeState baz = root.getChildNode(&quot;baz&quot;);
+assert !baz.exists();
+</pre></div>
+<p>The following diagram illustrates such a content tree, both as the raw content that simply exists and as an access controlled view of that tree:</p>
+<p><img src="nodestate-r2.png?raw=true" alt="content tree with and without access control" /></p>
+<p>If a node is missing, i.e. its <tt>exists</tt> method returns <tt>false</tt> and thus it either does not exist at all or is read-protected, one can&#x2019;t list any of its properties or child nodes. And on the other hand, a non-readable node or property will only show up when listing the child nodes or properties of its parent. In other words, a node or a property is <i>iterable</i> only if both it and its parent are readable. For example, attempts to list properties or child nodes of the node <tt>foo</tt> will show up empty:</p>
+
+<div class="source">
+<pre>assert !foo.getProperties().iterator().hasNext();
+assert !foo.getChildNodeEntries().iterator().hasNext();
+</pre></div>
+<p>Note that without some external knowledge about the accessibility of a child node like <tt>bar</tt> there&#x2019;s no way for a piece of code to distinguish between the existing but non-readable node <tt>foo</tt> and the non-existing node <tt>baz</tt>.</p></div>
+<div class="section">
+<h2>Building new node states<a name="Building_new_node_states"></a></h2>
+<p>Since node states are immutable, a separate builder interface, <tt>NodeBuilder</tt>, is used to construct new, modified node states. Calling the <tt>builder</tt> method on a node state returns such a builder for modifying that node and the subtree below it.</p>
+<p>A node builder can be thought of as a <i>mutable</i> version of a node state. In addition to property and child node access methods like the ones that are already present in the <tt>NodeState</tt> interface, the <tt>NodeBuilder</tt> interface contains the following key methods:</p>
+
+<ul>
+  
+<li>The <tt>setProperty</tt> and <tt>removeProperty</tt> methods for modifying properties</li>
+  
+<li>The <tt>getChildNode</tt> method for accessing or modifying an existing subtree</li>
+  
+<li>The <tt>setChildNode</tt> and <tt>removeChildNode</tt> methods for adding, replacing or removing a subtree</li>
+  
+<li>The <tt>exists</tt> method for checking whether the node represented by a builder exists or is accessible</li>
+  
+<li>The <tt>getNodeState</tt> method for getting a frozen snapshot of the modified content tree</li>
+</ul>
+<p>All the builders acquired from the same root builder instance are linked so that changes made through one instance automatically become visible in the other builders. For example:</p>
+
+<div class="source">
+<pre>NodeBuilder rootBuilder = root.builder();
+NodeBuilder fooBuilder = rootBuilder.getChildNode(&quot;foo&quot;);
+NodeBuilder barBuilder = fooBuilder.getChildNode(&quot;bar&quot;);
+
+assert !barBuilder.getBoolean(&quot;x&quot;);
+fooBuilder.getNodeChild(&quot;bar&quot;).setProperty(&quot;x&quot;, Boolean.TRUE);
+assert barBuilder.getBoolean(&quot;x&quot;);
+
+assert barBuilder.exists();
+fooBuilder.removeChildNode(&quot;bar&quot;);
+assert !barBuilder.exists();
+</pre></div>
+<p>The <tt>getNodeState</tt> method returns a frozen, immutable snapshot of the current state of the builder. Providing such a snapshot can be somewhat expensive especially if there are many changes in the builder, so the method should generally only be used as the last step after all intended changes have been made. Meanwhile the accessors in the <tt>NodeBuilder</tt> interface can be used to provide efficient read access to the current state of the tree being modified.</p>
+<p>The node states constructed by a builder often retain an internal reference to the base state used by the builder. This allows common node state comparisons to perform really well as described in the next section.</p></div>
+<div class="section">
+<h2>Comparing node states<a name="Comparing_node_states"></a></h2>
+<p>As a node evolves through a sequence of states, it&#x2019;s often important to be able to tell what has changed between two states of the node. This functionality is available through the <tt>compareAgainstBaseState</tt> method. The method takes two arguments:</p>
+
+<ul>
+  
+<li>A <i>base state</i> for the comparison. The comparison will report all changes necessary for moving from the given base state to the node state on which the comparison method is invoked.</li>
+  
+<li>A <tt>NodeStateDiff</tt> instance to which all detected changes are reported. The diff interface contains callback methods for reporting added, modified or removed properties or child nodes.</li>
+</ul>
+<p>The comparison method can actually be used to compare any two nodes, but the implementations of the method are typically heavily optimized for the case when the given base state actually is an earlier version of the same node. In practice this is by far the most common scenario for node state comparisons, and can typically be executed in <tt>O(d)</tt> time where <tt>d</tt> is the number of changes between the two states. The fallback strategy for comparing two completely unrelated node states can be much more expensive.</p>
+<p>An important detail of the <tt>NodeStateDiff</tt> mechanism is the <tt>childNodeChanged</tt> method that will get called if there can be <i>any</i> changes in the subtree starting at the named child node. The comparison method should thus be able to efficiently detect differences at any depth below the given nodes. On the other hand the <tt>childNodeChanged</tt> method is called only for the direct child node, and the diff implementation should explicitly recurse down the tree if it wants to know what exactly did change under that subtree. The code for such recursion typically looks something like this:</p>
+
+<div class="source">
+<pre>public void childNodeChanged(
+        String name, NodeState before, NodeState after) {
+    after.compareAgainstBaseState(before, ...);
+}
+</pre></div>
+<p>Note that for performance reasons it&#x2019;s possible for the <tt>childNodeChanged</tt> method to be called in some cases even if there actually are no changes within that subtree. The only hard guarantee is that if that method is <i>not</i> called for a subtree, then that subtree definitely has not changed, but in most common cases the <tt>compareAgainstBaseState</tt> implementation can detect such cases and thus avoid extra <tt>childNodeChanged</tt> calls. However it&#x2019;s important that diff handlers are prepared to deal with such events.</p></div>
+<div class="section">
+<h2>The commit hook mechanism<a name="The_commit_hook_mechanism"></a></h2>
+<p>A repository typically has various constraints to control what kind of content is allowed. It often also wants to annotate content changes with additional modifications like adding auto-created content or updating in-content indices. The <i>commit hook mechanism</i> is designed for these purposes. An Oak instance has a list of commit hooks that it applies to all commits. A commit hook is in full control of what to do with the commit: it can reject the commit, pass it through as-is, or modify it in any way.</p>
+<p>All commit hooks implement the <tt>CommitHook</tt> interface that contains just a single <tt>processCommit</tt> method:</p>
+
+<div class="source">
+<pre>NodeState processCommit(NodeState before, NodeState after)
+    throws CommitFailedException;
+</pre></div>
+<p>The <tt>before</tt> state is the original revision on which the content changes being committed are based, and the <tt>after</tt> state contains all those changes. A <tt>after.compareAgainstBaseState(before, ...)</tt> call can be used to find out the exact set of changes being committed.</p>
+<p>If, based on the content diff or some other inspection of the commit, a hook decides to reject the commit for example due to a constraint violation, it can do so by throwing a <tt>CommitFailedException</tt> with an appropriate error code as outlined in <a class="externalLink" href="http://wiki.apache.org/jackrabbit/OakErrorCodes">http://wiki.apache.org/jackrabbit/OakErrorCodes</a>.</p>
+<p>If the commit is acceptable, the hook can return the after state as-is or it can make some additional modifications and return the resulting node state. The returned state is then passed as the after state to the next hook until all the hooks have had a chance to process the commit. The resulting final node state is then persisted as a new revision and made available to other Oak clients.</p></div>
+<div class="section">
+<h2>Commit editors<a name="Commit_editors"></a></h2>
+<p>In practice most commit hooks are interested in the content diff as returned by the <tt>compareAgainstBaseState</tt> call mentioned above. This call can be somewhat expensive especially for large commits, so it&#x2019;s not a good idea for multiple commit hooks to each do a separate diff. A more efficient approach is to do the diff just once and have multiple hooks process it in parallel. The <i>commit editor mechanism</i> is used for this purpose. An editor is essentially a commit hook optimized for processing content diffs.</p>
+<p>Instead of a list of separate hooks, the editors are all handled by a single <tt>EditorHook</tt> instance. This hook handles the details of performing the content diff and notifying all available editors about the detected content changes. The editors are provided by a list of <tt>EditorProvider</tt> instances that implement the following method:</p>
+
+<div class="source">
+<pre>Editor getRootEditor(
+    NodeState before, NodeState after, NodeBuilder builder)
+    throws CommitFailedException;
+</pre></div>
+<p>Instead of comparing the given before and after states directly, the provider is expected to return an <tt>Editor</tt> instance to be used for the comparison. The before and after states are passed to this method so that the provider can collect generic information like node type definitions that is needed to construct the returned editor.</p>
+<p>The given <tt>NodeBuilder</tt> instance can be used by the returned editor to make modifications based on the detected content changes. The builder is based on the after state, but it is shared by multiple editors so during the diff processing it might no longer exactly match the after state. Editors within a single editor hook should generally not attempt to make conflicting changes.</p>
+<p>The <tt>Editor</tt> interface is much like the <tt>NodeStateDiff</tt> interface described earlier. The main differences are that all the editor methods are allowed to throw <tt>CommitFailedExceptions</tt> and that the child node modification methods all return a further <tt>Editor</tt> instance.</p>
+<p>The idea is that each editor <i>instance</i> is normally used for observing the changes to just a single node. When there are changes to a subtree below that node, the relevant child node modification method is expected to return a new editor instance for observing changes in that subtree. The editor hook keeps track of these returned &#x201c;sub-editors&#x201d; and recursively notifies them of changes in the relevant subtrees.</p>
+<p>If an editor is not interested in changes inside a particular subtree it can return <tt>null</tt> to notify the editor hook that there&#x2019;s no need to recurse down that subtree. And if the effect of an editor isn&#x2019;t tied to the location of the changes within the content tree, it can just return itself. A good example is a name validator that simply checks the validity of all names regardless of where they&#x2019;re stored. If the location is relevant, for example when you need to keep track of the path of the changed node, you can store that information as internal state of the returned editor instance.</p></div>
+<div class="section">
+<h2>Commit validators<a name="Commit_validators"></a></h2>
+<p>As mentioned, a common use for commit hooks is to verify that all content changes preserve the applicable constraints. For example the repository may want to enforce the integrity of reference properties, the constraints defined in node types, or simply the well-formedness of the names used. Such validation is typically based on the content diff of a commit, so the editor mechanism is a natural match. Additionally, since validation doesn&#x2019;t imply any further content modifications, the editor mechanism can be further restricted for this particular case.</p>
+<p>The abstract <tt>ValidatorProvider</tt> class and the related <tt>Validator</tt> interface are based on the respective editor interfaces. The main difference is that the validator provider drops the <tt>NodeBuilder</tt> argument to make it impossible for any validators to even accidentally modify the commit being processed. Thus, even though there&#x2019;s no performance benefit to using the <tt>Validator</tt> interface instead of <tt>Editor</tt>, it&#x2019;s a good idea to do so whenever possible to make the intention of your code clearer.</p></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2012-2014
+                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+            All Rights Reserved.      
+                    
+      </div>
+
+        
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/jackrabbit-oak/widgets/project_thin_badge.js"></script>
+    </div>
+        </div>
+    </footer>
+  </body>
+</html>
\ No newline at end of file

Propchange: jackrabbit/site/live/oak/docs/architecture/nodestate.html
------------------------------------------------------------------------------
    svn:eol-style = native