You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2013/08/01 14:11:54 UTC

svn commit: r1509192 [6/8] - in /jackrabbit/sandbox/oak-site-test: ./ css/ images/ images/logos/ images/profiles/ img/ js/

Added: jackrabbit/sandbox/oak-site-test/microkernel.html
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/oak-site-test/microkernel.html?rev=1509192&view=auto
==============================================================================
--- jackrabbit/sandbox/oak-site-test/microkernel.html (added)
+++ jackrabbit/sandbox/oak-site-test/microkernel.html Thu Aug  1 12:11:52 2013
@@ -0,0 +1,335 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2013-08-01
+ | 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="20130801" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Jackrabbit Oak - </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>
+                  
+                      <li>      <a href="from_here.html"  title="From here">From here</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="nodestate.html"  title="Understanding the node state model">Understanding the node state model</a>
+</li>
+                  
+                      <li>      <a href="microkernel.html"  title="Microkernel">Microkernel</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="differences.html"  title="Differences to Jackrabbit 2">Differences to Jackrabbit 2</a>
+</li>
+                  
+                      <li>      <a href="dos_and_donts.html"  title="Dos and don'ts">Dos and don'ts</a>
+</li>
+                  
+                      <li>      <a href="when_things_go_wrong.html"  title="When things go wrong">When things go wrong</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">
+                </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: 2013-08-01</li>
+                  <li class="divider">|</li> <li id="projectVersion">Version: 0.9-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>
+    
+                          <a href="from_here.html" title="From here">
+          <i class="none"></i>
+        From here</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>
+    
+                          <a href="nodestate.html" title="Understanding the node state model">
+          <i class="none"></i>
+        Understanding the node state model</a>
+            </li>
+                  
+      <li class="active">
+    
+            <a href="#"><i class="none"></i>Microkernel</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="differences.html" title="Differences to Jackrabbit 2">
+          <i class="none"></i>
+        Differences to Jackrabbit 2</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="when_things_go_wrong.html" title="When things go wrong">
+          <i class="none"></i>
+        When things go wrong</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>
+                </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. --><p>TODO: Document Microkernel API and implementations</p>
+
+<ul>
+  
+<li><a href="segmentmk.html">SegmentMK design overview</a></li>
+  
+<li><a href="mongomk.html">Oak MongoMK</a></li>
+  
+<li><a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-it/mk/README.md">MicroKernel integration tests</a></li>
+  
+<li><a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-mk-perf/README.md">MicroKernel performance tests</a></li>
+</ul>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2012-2013
+                        <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/sandbox/oak-site-test/microkernel.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/sandbox/oak-site-test/mongomk.html
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/oak-site-test/mongomk.html?rev=1509192&view=auto
==============================================================================
--- jackrabbit/sandbox/oak-site-test/mongomk.html (added)
+++ jackrabbit/sandbox/oak-site-test/mongomk.html Thu Aug  1 12:11:52 2013
@@ -0,0 +1,513 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2013-08-01
+ | 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="20130801" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Jackrabbit Oak - </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>
+                  
+                      <li>      <a href="from_here.html"  title="From here">From here</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="nodestate.html"  title="Understanding the node state model">Understanding the node state model</a>
+</li>
+                  
+                      <li>      <a href="microkernel.html"  title="Microkernel">Microkernel</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="differences.html"  title="Differences to Jackrabbit 2">Differences to Jackrabbit 2</a>
+</li>
+                  
+                      <li>      <a href="dos_and_donts.html"  title="Dos and don'ts">Dos and don'ts</a>
+</li>
+                  
+                      <li>      <a href="when_things_go_wrong.html"  title="When things go wrong">When things go wrong</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">
+                </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: 2013-08-01</li>
+                  <li class="divider">|</li> <li id="projectVersion">Version: 0.9-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>
+    
+                          <a href="from_here.html" title="From here">
+          <i class="none"></i>
+        From here</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>
+    
+                          <a href="nodestate.html" title="Understanding the node state model">
+          <i class="none"></i>
+        Understanding the node state model</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="microkernel.html" title="Microkernel">
+          <i class="none"></i>
+        Microkernel</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="differences.html" title="Differences to Jackrabbit 2">
+          <i class="none"></i>
+        Differences to Jackrabbit 2</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="when_things_go_wrong.html" title="When things go wrong">
+          <i class="none"></i>
+        When things go wrong</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>
+                </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 MongoMK</h1>
+<p>This module contains a <tt>MicroKernel</tt> implementation using MongoDB to persist content.</p>
+<div class="section">
+<h2>Content Model<a name="Content_Model"></a></h2>
+<p>The <tt>MongoMK</tt> stores each node in a separate MongoDB document and updates to a node are stored by adding new revision/value pairs to the document. This way the previous state of a node is preserved and can still be retrieved by a session looking a given snapshot (revision) of the repository.</p>
+<p>The basic MongoDB document of a node in Oak looks like this:</p>
+
+<div class="source">
+<pre>{
+    &quot;_id&quot; : &quot;1:/node&quot;,
+    &quot;_deleted&quot; : {
+        &quot;r13f3875b5d1-0-1&quot; : &quot;false&quot;
+    },
+    &quot;_lastRev&quot; : {
+        &quot;1&quot; : &quot;r13f3875b5d1-0-1&quot;
+    },
+    &quot;_commitRoot&quot;: {
+        &quot;r13f3875b5d1-0-1&quot;: 0
+    },
+    &quot;_modified&quot; : NumberLong(274208361),
+    &quot;_revisions&quot; : {
+        &quot;r13f3875b5d1-0-1&quot; : &quot;c&quot;
+    }
+}
+</pre></div>
+<p>All fields in the above document are metadata and are not exposed through the Oak API.</p>
+<p>The <tt>_id</tt> field is used as the primary key and consists of a combination of the depth of the path and the path itself. This is an optimization to align sibling keys in the index.</p>
+<p>The <tt>_deleted</tt> sub-document contains the revision this node was created in. In the above example the root node was created in revision <tt>r13f3875b5d1-0-1</tt>. If the node is later deleted, the <tt>_deleted</tt> sub-document will get a new field with the revision the node was deleted in.</p>
+<p>The sub-document <tt>_lastRev</tt> contains the last revision written to this node by each cluster node. In the above example the MongoMK cluster node with id <tt>1</tt> modified the node the last time in revision <tt>r13f3875b5d1-0-1</tt>, when it created the node. These revisions are only updated for non-branch commits.</p>
+<p>The <tt>_modified</tt> field contains a low-resolution timestamp when the node was last modified. The time resolution is five seconds. This field is also updated when a branch commit modifies a node.</p>
+<p>The sub-document <tt>_commitRoot</tt> contains commit root depth for the commit in which the node was created against the revision.</p>
+<p>Finally, the <tt>_revisions</tt> sub-document contains commit information about changes marked with a revision. E.g. the single entry in the above document tells us that everything marked with revision <tt>r13f3875b5d1-0-1</tt> is committed and therefore valid. In case the change is done in a branch then the value would be the base revision. It is only added for those nodes which happen to be the commit root for any give commit.</p>
+<p>Adding a property <tt>prop</tt> with value <tt>foo</tt> to the node in a next step will result in the following document:</p>
+
+<div class="source">
+<pre>{
+    &quot;_deleted&quot; : {
+        &quot;r13f3875b5d1-0-1&quot; : &quot;false&quot;
+    },
+    &quot;_id&quot; : &quot;1:/node&quot;,
+    &quot;_lastRev&quot; : {
+        &quot;1&quot; : &quot;r13f38818ab6-0-1&quot;
+    },
+    &quot;_modified&quot; : NumberLong(274208516),
+    &quot;_revisions&quot; : {
+        &quot;r13f3875b5d1-0-1&quot; : &quot;c&quot;,
+        &quot;r13f38818ab6-0-1&quot; : &quot;c&quot;
+    },
+    &quot;prop&quot; : {
+        &quot;r13f38818ab6-0-1&quot; : &quot;\&quot;foo\&quot;&quot;
+    }
+}
+</pre></div>
+<p>Now the document contains a new sub-document with the name of the new property. The value of the property is annotated with the revision the property was set. With each successful commit to this node, a new field is added to the <tt>_revisions</tt> sub-document. Similarly the <tt>_lastRev</tt> sub-document and <tt>_modified</tt> field are updated.</p>
+<p>After the node is deleted the document looks like this:</p>
+
+<div class="source">
+<pre>{
+    &quot;_deleted&quot; : {
+        &quot;r13f3875b5d1-0-1&quot; : &quot;false&quot;,
+        &quot;r13f38835063-2-1&quot; : &quot;true&quot;
+    },
+    &quot;_id&quot; : &quot;1:/node&quot;,
+    &quot;_lastRev&quot; : {
+        &quot;1&quot; : &quot;r13f38835063-2-1&quot;
+    },
+    &quot;_modified&quot; : NumberLong(274208539),
+    &quot;_revisions&quot; : {
+        &quot;r13f3875b5d1-0-1&quot; : &quot;c&quot;,
+        &quot;r13f38818ab6-0-1&quot; : &quot;c&quot;,
+        &quot;r13f38835063-2-1&quot; : &quot;c&quot;
+    },
+    &quot;prop&quot; : {
+        &quot;r13f38818ab6-0-1&quot; : &quot;\&quot;foo\&quot;&quot;
+    }
+}
+</pre></div>
+<p>The <tt>_deleted</tt> sub-document now contains a <tt>r13f38835063-2-1</tt> field marking the node as deleted in this revision.</p>
+<p>Reading the node in previous revisions is still possible, even if it is now marked as deleted as of revision <tt>r13f38835063-2-1</tt>.</p></div>
+<div class="section">
+<h2>Revisions<a name="Revisions"></a></h2>
+<p>As seen in the examples above, a revision is a String and may look like this: <tt>r13f38835063-2-1</tt>. It consists of three parts:</p>
+
+<ul>
+  
+<li>A timestamp derived from the system time of the machine it was generated on: <tt>13f38835063</tt></li>
+  
+<li>A counter to distinguish revisions created with the same timestamp: <tt>-2</tt></li>
+  
+<li>The cluster node id where this revision was created: <tt>-1</tt></li>
+</ul></div>
+<div class="section">
+<h2>Branches<a name="Branches"></a></h2>
+<p>MicroKernel implementations support branches, which allows a client to stage multiple commits and make them visible with a single merge call. In MongoMK a branch commit looks very similar to a regular commit, but instead of setting the value of an entry in <tt>_revisions</tt> to <tt>c</tt> (committed), it marks it with the base revision of the branch commit. In contrast to regular commits where the commit root is the common ancestor of all nodes modified in a commit, the commit root of a branch commit is always the root node. This is because a branch will likely have multiple commits and a commit root must already be known when the first commit happens on a branch. To make sure the following branch commits can use the same commit root, MongoMK simply picks the root node, which always works in this case.</p>
+<p>A root node may look like this:</p>
+
+<div class="source">
+<pre>{
+    &quot;_deleted&quot; : {
+        &quot;r13fcda88ac0-0-1&quot; : &quot;false&quot;,
+    },
+    &quot;_id&quot; : &quot;0:/&quot;,
+    &quot;_lastRev&quot; : {
+        &quot;1&quot; : &quot;r13fcda91720-0-1&quot;
+    },
+    &quot;_modified&quot; : NumberLong(274708995),
+    &quot;_revisions&quot; : {
+        &quot;r13fcda88ac0-0-1&quot; : &quot;c&quot;,
+        &quot;r13fcda91720-0-1&quot; : &quot;c&quot;
+    },
+    &quot;prop&quot; : {
+        &quot;r13fcda91720-0-1&quot; : &quot;\&quot;foo\&quot;&quot;
+    }
+}
+</pre></div>
+<p>The root node was created in revision <tt>r13fcda88ac0-0-1</tt> and later in revision <tt>r13fcda91720-0-1</tt> property <tt>prop</tt> was set to <tt>foo</tt>. To keep the example simple, we now assume a branch is created based on the revision the root node was last modified and a branch commit is done to modify the existing property. After the branch commit the root node looks like this:</p>
+
+<div class="source">
+<pre>{
+    &quot;_deleted&quot; : {
+        &quot;r13fcda88ac0-0-1&quot; : &quot;false&quot;,
+    },
+    &quot;_id&quot; : &quot;0:/&quot;,
+    &quot;_lastRev&quot; : {
+        &quot;1&quot; : &quot;r13fcda91720-0-1&quot;
+    },
+    &quot;_modified&quot; : NumberLong(274708995),
+    &quot;_revisions&quot; : {
+        &quot;r13fcda88ac0-0-1&quot; : &quot;c&quot;,
+        &quot;r13fcda91720-0-1&quot; : &quot;c&quot;,
+       &quot;r13fcda919eb-0-1&quot; : &quot;r13fcda91720-0-1&quot;
+    },
+    &quot;prop&quot; : {
+        &quot;r13fcda91720-0-1&quot; : &quot;\&quot;foo\&quot;&quot;,
+       &quot;r13fcda919eb-0-1&quot; : &quot;\&quot;bar\&quot;&quot;,
+    }
+}
+</pre></div>
+<p>At this point the modified property is only visible to a reader when it reads with the branch revision <tt>r13fcda919eb-0-1</tt> because the revision is marked with the base version of this commit in the <tt>_revisions</tt> sub-document. Note, the <tt>_lastRev</tt> is not updated for branch commits but only when a branch is merged.</p>
+<p>When the branch is later merged, the root node will look like this:</p>
+
+<div class="source">
+<pre>{
+    &quot;_deleted&quot; : {
+        &quot;r13fcda88ac0-0-1&quot; : &quot;false&quot;,
+    },
+    &quot;_id&quot; : &quot;0:/&quot;,
+    &quot;_lastRev&quot; : {
+        &quot;1&quot; : &quot;r13fcda91b12-0-1&quot;
+    },
+    &quot;_modified&quot; : NumberLong(274708995),
+    &quot;_revisions&quot; : {
+        &quot;r13fcda88ac0-0-1&quot; : &quot;c&quot;,
+        &quot;r13fcda91720-0-1&quot; : &quot;c&quot;,
+       &quot;r13fcda919eb-0-1&quot; : &quot;c-r13fcda91b12-0-1&quot;
+    },
+    &quot;prop&quot; : {
+        &quot;r13fcda91720-0-1&quot; : &quot;\&quot;foo\&quot;&quot;,
+       &quot;r13fcda919eb-0-1&quot; : &quot;\&quot;bar\&quot;&quot;,
+    }
+}
+</pre></div>
+<p>Now, the changed property is visible to readers with a revision equal or newer than <tt>r13fcda91b12-0-1</tt>.</p>
+<p>The same logic is used for changes to other nodes that belong to a branch commit. MongoMK internally resolves the commit revision for a modification before it decides whether a reader is able to see a given change.</p></div>
+<div class="section">
+<h2>Background Operations<a name="Background_Operations"></a></h2>
+<p>Each MongoMK instance connecting to same database in Mongo server performs certain background task.</p>
+<div class="section">
+<h3>Renew Cluster Id Lease<a name="Renew_Cluster_Id_Lease"></a></h3></div>
+<div class="section">
+<h3>Background Writes<a name="Background_Writes"></a></h3>
+<p>While performing commits there are certain nodes which are modified but do not become part of commit. For example when a node under /a/b/c is updated then the <tt>_lastRev</tt> property also needs to be updated to the commit revision. Such changes are accumulated and flushed periodically through a asynchronous job.</p></div>
+<div class="section">
+<h3>Background Reads<a name="Background_Reads"></a></h3></div></div>
+<div class="section">
+<h2>Pending Topics<a name="Pending_Topics"></a></h2>
+<div class="section">
+<h3>Conflict Detection and Handling<a name="Conflict_Detection_and_Handling"></a></h3></div></div>
+<div class="section">
+<h2>License<a name="License"></a></h2>
+<p>(see the top-level <a href="../LICENSE.txt">LICENSE.txt</a> for full license details)</p>
+<p>Collective work: Copyright 2013 The Apache Software Foundation.</p>
+<p>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 &#x201c;License&#x201d;); you may not use this file except in compliance with the License. You may obtain a copy of the License at</p>
+
+<div class="source">
+<pre> http://www.apache.org/licenses/LICENSE-2.0
+</pre></div>
+<p>Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an &#x201c;AS IS&#x201d; 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.</p></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2012-2013
+                        <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/sandbox/oak-site-test/mongomk.html
------------------------------------------------------------------------------
    svn:eol-style = native

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

Propchange: jackrabbit/sandbox/oak-site-test/nodestate-r1.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: jackrabbit/sandbox/oak-site-test/nodestate-r1.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/oak-site-test/nodestate-r1.uxf?rev=1509192&view=auto
==============================================================================
--- jackrabbit/sandbox/oak-site-test/nodestate-r1.uxf (added)
+++ jackrabbit/sandbox/oak-site-test/nodestate-r1.uxf Thu Aug  1 12:11:52 2013
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<diagram program="umlet" version="12.0">
+  <zoom_level>10</zoom_level>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>250</x>
+      <y>180</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=yellow</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>210</x>
+      <y>110</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=yellow</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>160</x>
+      <y>40</y>
+      <w>80</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;-</panel_attributes>
+    <additional_attributes>60;70;30;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>130</x>
+      <y>110</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=green</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>170</x>
+      <y>40</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=yellow</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>50</x>
+      <y>110</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=green</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>90</x>
+      <y>40</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=green</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>0</x>
+      <y>110</y>
+      <w>80</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;-
+</panel_attributes>
+    <additional_attributes>30;70;60;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>200</x>
+      <y>110</y>
+      <w>80</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;-</panel_attributes>
+    <additional_attributes>60;70;30;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>10</x>
+      <y>180</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=green</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>40</x>
+      <y>110</y>
+      <w>80</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;-</panel_attributes>
+    <additional_attributes>60;70;30;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>50</x>
+      <y>40</y>
+      <w>150</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;-
+</panel_attributes>
+    <additional_attributes>30;70;130;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>40</x>
+      <y>40</y>
+      <w>80</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;-
+</panel_attributes>
+    <additional_attributes>30;70;60;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>80</x>
+      <y>40</y>
+      <w>80</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;-</panel_attributes>
+    <additional_attributes>60;70;30;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>90</x>
+      <y>180</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=green</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.custom.Text</type>
+    <coordinates>
+      <x>170</x>
+      <y>10</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>r2</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.custom.Text</type>
+    <coordinates>
+      <x>90</x>
+      <y>10</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>r1</panel_attributes>
+    <additional_attributes/>
+  </element>
+</diagram>

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

Propchange: jackrabbit/sandbox/oak-site-test/nodestate-r2.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: jackrabbit/sandbox/oak-site-test/nodestate-r2.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/oak-site-test/nodestate-r2.uxf?rev=1509192&view=auto
==============================================================================
--- jackrabbit/sandbox/oak-site-test/nodestate-r2.uxf (added)
+++ jackrabbit/sandbox/oak-site-test/nodestate-r2.uxf Thu Aug  1 12:11:52 2013
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<diagram program="umlet" version="12.0">
+  <zoom_level>10</zoom_level>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>60</x>
+      <y>190</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=green</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.custom.Text</type>
+    <coordinates>
+      <x>140</x>
+      <y>20</y>
+      <w>130</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>with access control</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>20</x>
+      <y>120</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=green</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>230</x>
+      <y>120</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=white
+bt=.
+</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>150</x>
+      <y>120</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=white
+bt=.</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.custom.Text</type>
+    <coordinates>
+      <x>230</x>
+      <y>80</y>
+      <w>40</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>baz</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>190</x>
+      <y>50</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=green</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.custom.Text</type>
+    <coordinates>
+      <x>30</x>
+      <y>20</y>
+      <w>90</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>raw content</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>140</x>
+      <y>120</y>
+      <w>80</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;-</panel_attributes>
+    <additional_attributes>60;70;30;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>140</x>
+      <y>50</y>
+      <w>80</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;.</panel_attributes>
+    <additional_attributes>30;70;60;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.custom.Text</type>
+    <coordinates>
+      <x>20</x>
+      <y>160</y>
+      <w>40</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bar</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>180</x>
+      <y>50</y>
+      <w>80</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;.</panel_attributes>
+    <additional_attributes>60;70;30;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>190</x>
+      <y>190</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=green</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>10</x>
+      <y>50</y>
+      <w>80</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;-</panel_attributes>
+    <additional_attributes>30;70;60;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.Class</type>
+    <coordinates>
+      <x>60</x>
+      <y>50</y>
+      <w>30</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bg=green</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.custom.Text</type>
+    <coordinates>
+      <x>150</x>
+      <y>80</y>
+      <w>40</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>foo</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.Relation</type>
+    <coordinates>
+      <x>10</x>
+      <y>120</y>
+      <w>80</w>
+      <h>90</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;-</panel_attributes>
+    <additional_attributes>60;70;30;30</additional_attributes>
+  </element>
+  <element>
+    <type>com.umlet.element.custom.Text</type>
+    <coordinates>
+      <x>20</x>
+      <y>80</y>
+      <w>40</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>foo</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <type>com.umlet.element.custom.Text</type>
+    <coordinates>
+      <x>150</x>
+      <y>160</y>
+      <w>40</w>
+      <h>30</h>
+    </coordinates>
+    <panel_attributes>bar</panel_attributes>
+    <additional_attributes/>
+  </element>
+</diagram>

Added: jackrabbit/sandbox/oak-site-test/nodestate.html
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/oak-site-test/nodestate.html?rev=1509192&view=auto
==============================================================================
--- jackrabbit/sandbox/oak-site-test/nodestate.html (added)
+++ jackrabbit/sandbox/oak-site-test/nodestate.html Thu Aug  1 12:11:52 2013
@@ -0,0 +1,567 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2013-08-01
+ | 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="20130801" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Jackrabbit Oak - </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>
+                  
+                      <li>      <a href="from_here.html"  title="From here">From here</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="nodestate.html"  title="Understanding the node state model">Understanding the node state model</a>
+</li>
+                  
+                      <li>      <a href="microkernel.html"  title="Microkernel">Microkernel</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="differences.html"  title="Differences to Jackrabbit 2">Differences to Jackrabbit 2</a>
+</li>
+                  
+                      <li>      <a href="dos_and_donts.html"  title="Dos and don'ts">Dos and don'ts</a>
+</li>
+                  
+                      <li>      <a href="when_things_go_wrong.html"  title="When things go wrong">When things go wrong</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">
+                </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: 2013-08-01</li>
+                  <li class="divider">|</li> <li id="projectVersion">Version: 0.9-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>
+    
+                          <a href="from_here.html" title="From here">
+          <i class="none"></i>
+        From here</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>Understanding the node state model</a>
+          </li>
+                  
+      <li>
+    
+                          <a href="microkernel.html" title="Microkernel">
+          <i class="none"></i>
+        Microkernel</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="differences.html" title="Differences to Jackrabbit 2">
+          <i class="none"></i>
+        Differences to Jackrabbit 2</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="when_things_go_wrong.html" title="When things go wrong">
+          <i class="none"></i>
+        When things go wrong</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>
+                </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 node state model that is the core design abstraction inside the oak-core 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 oak-core. 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 are <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></div>
+<div class="section">
+<h2>The commit hook mechanism<a name="The_commit_hook_mechanism"></a></h2>
+<p>TODO</p></div>
+<div class="section">
+<h2>Commit validation<a name="Commit_validation"></a></h2>
+<p>TODO</p>
+<p>TODO: Basic validator class</p>
+
+<div class="source">
+<pre>class DenyContentWithName extends DefaultValidator {
+
+    private final String name;
+
+    public DenyContentWithName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public void propertyAdded(PropertyState after)
+            throws CommitFailedException {
+        if (name.equals(after.getName())) {
+            throw new CommitFailedException(
+                    &quot;Properties named &quot; + name + &quot; are not allowed&quot;);
+        }
+    }
+
+
+}
+</pre></div>
+<p>TODO: Example of how the validator works</p>
+
+<div class="source">
+<pre>Repository repository = new Jcr()
+    .with(new DenyContentWithName(&quot;bar&quot;))
+    .createRepository();
+
+Session session = repository.login();
+Node root = session.getRootNode();
+root.setProperty(&quot;foo&quot;, &quot;abc&quot;);
+session.save();
+root.setProperty(&quot;bar&quot;, &quot;def&quot;);
+session.save(); // will throw an exception
+</pre></div>
+<p>TODO: Extended example that also works below root and covers also node names</p>
+
+<div class="source">
+<pre>class DenyContentWithName extends DefaultValidator {
+
+    private final String name;
+
+    public DenyContentWithName(String name) {
+        this.name = name;
+    }
+
+    private void testName(String addedName) throws CommitFailedException {
+        if (name.equals(addedName)) {
+            throw new CommitFailedException(
+                    &quot;Content named &quot; + name + &quot; is not allowed&quot;);
+        }
+    }
+
+    @Override
+    public void propertyAdded(PropertyState after)
+            throws CommitFailedException {
+        testName(after.getName());
+    }
+
+    @Override
+    public Validator childNodeAdded(String name, NodeState after)
+            throws CommitFailedException {
+        testName(name);
+        return this;
+    }
+
+    @Override
+    public Validator childNodeChanged(
+            String name, NodeState before, NodeState after)
+            throws CommitFailedException {
+        return this;
+    }
+
+}
+</pre></div></div>
+<div class="section">
+<h2>Commit modification<a name="Commit_modification"></a></h2>
+<p>TODO</p>
+<p>TODO: Basic commit hook example</p>
+
+<div class="source">
+<pre>class RenameContentHook implements CommitHook {
+
+    private final String name;
+
+    private final String rename;
+
+    public RenameContentHook(String name, String rename) {
+        this.name = name;
+        this.rename = rename;
+    }
+
+    @Override @Nonnull
+    public NodeState processCommit(NodeState before, NodeState after)
+            throws CommitFailedException {
+        PropertyState property = after.getProperty(name);
+        if (property != null) {
+            NodeBuilder builder = after.builder();
+            builder.removeProperty(name);
+            if (property.isArray()) {
+                builder.setProperty(rename, property.getValues());
+            } else {
+                builder.setProperty(rename, property.getValue());
+            }
+            return builder.getNodeState();
+        }
+        return after;
+    }
+
+}
+</pre></div>
+<p>TODO: Using the commit hook to avoid the exception from a validator</p>
+
+<div class="source">
+<pre>Repository repository = new Jcr()
+    .with(new RenameContentHook(&quot;bar&quot;, &quot;foo&quot;))
+    .with(new DenyContentWithName(&quot;bar&quot;))
+    .createRepository();
+
+Session session = repository.login();
+Node root = session.getRootNode();
+root.setProperty(&quot;foo&quot;, &quot;abc&quot;);
+session.save();
+root.setProperty(&quot;bar&quot;, &quot;def&quot;);
+session.save(); // will not throw an exception!
+System.out.println(root.getProperty(&quot;foo&quot;).getString()); // Prints &quot;def&quot;!
+</pre></div></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2012-2013
+                        <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/sandbox/oak-site-test/nodestate.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/sandbox/oak-site-test/overview.html
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/oak-site-test/overview.html?rev=1509192&view=auto
==============================================================================
--- jackrabbit/sandbox/oak-site-test/overview.html (added)
+++ jackrabbit/sandbox/oak-site-test/overview.html Thu Aug  1 12:11:52 2013
@@ -0,0 +1,342 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2013-08-01
+ | 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="20130801" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Jackrabbit Oak - </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>
+                  
+                      <li>      <a href="from_here.html"  title="From here">From here</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="nodestate.html"  title="Understanding the node state model">Understanding the node state model</a>
+</li>
+                  
+                      <li>      <a href="microkernel.html"  title="Microkernel">Microkernel</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="differences.html"  title="Differences to Jackrabbit 2">Differences to Jackrabbit 2</a>
+</li>
+                  
+                      <li>      <a href="dos_and_donts.html"  title="Dos and don'ts">Dos and don'ts</a>
+</li>
+                  
+                      <li>      <a href="when_things_go_wrong.html"  title="When things go wrong">When things go wrong</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">
+                </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: 2013-08-01</li>
+                  <li class="divider">|</li> <li id="projectVersion">Version: 0.9-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>
+    
+                          <a href="from_here.html" title="From here">
+          <i class="none"></i>
+        From here</a>
+            </li>
+                              <li class="nav-header">Concepts and architecture</li>
+                                
+      <li class="active">
+    
+            <a href="#"><i class="none"></i>Overview</a>
+          </li>
+                  
+      <li>
+    
+                          <a href="nodestate.html" title="Understanding the node state model">
+          <i class="none"></i>
+        Understanding the node state model</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="microkernel.html" title="Microkernel">
+          <i class="none"></i>
+        Microkernel</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="differences.html" title="Differences to Jackrabbit 2">
+          <i class="none"></i>
+        Differences to Jackrabbit 2</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="when_things_go_wrong.html" title="When things go wrong">
+          <i class="none"></i>
+        When things go wrong</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>
+                </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" >
+                                  
+            <p>TODO: Document core concepts and architecture:</p>
+
+<ul>
+  
+<li>MVCC</li>
+  
+<li>Microkernel</li>
+  
+<li>JSOP</li>
+  
+<li>NodeStateDiff</li>
+  
+<li>NodeStore</li>
+  
+<li>Tree</li>
+  
+<li>Plugins</li>
+  
+<li>APIs (MK, oak-core, oak-jcr)</li>
+  
+<li>SPIs (&#x2026;)</li>
+  
+<li>Clustering</li>
+  
+<li>Search and indexing</li>
+  
+<li>Security</li>
+  
+<li><a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/README.md">Oak Core</a></li>
+  
+<li>&#x2026;</li>
+</ul>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2012-2013
+                        <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/sandbox/oak-site-test/overview.html
------------------------------------------------------------------------------
    svn:eol-style = native