You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2015/04/08 22:27:20 UTC

svn commit: r1672164 [15/43] - in /jackrabbit/site/staging/jcr: ./ a-simple-ocm-project-with-maven-eclipse.data/ components/ concurrency-control.data/ css/ deployment-models.data/ how-jackrabbit-works.data/ how-to-map-associations-between-objects.data/...

Modified: jackrabbit/site/staging/jcr/how-jackrabbit-works.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/how-jackrabbit-works.html?rev=1672164&r1=1672163&r2=1672164&view=diff
==============================================================================
--- jackrabbit/site/staging/jcr/how-jackrabbit-works.html (original)
+++ jackrabbit/site/staging/jcr/how-jackrabbit-works.html Wed Apr  8 20:27:17 2015
@@ -1,125 +1,523 @@
-
-<!-- 
-  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. 
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2015-04-08 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
 -->
+<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="20150408" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Apache Jackrabbit - How Jackrabbit works</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.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.1.min.js"></script>
+
+    
+                  </head>
+        <body class="topBarEnabled">
+          
+    
+    
+            
+    
+    
+    <a href="http://github.com/apache/jackrabbit">
+      <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>
+                
+                                                                                <a class="brand" href="index.html"  title="Apache Jackrabbit">
+
+                                
+                                                                                                                    <img src="images/logos/jlogo.gif" alt="Apache Jackrabbit" />
+                
+                </a>
+                    
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache Jackrabbit <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="Welcome">Welcome</a>
+</li>
+                  
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="articles.html"  title="Articles">Articles</a>
+</li>
+                  
+                      <li>      <a href="frequently-asked-questions.html"  title="FAQ">FAQ</a>
+</li>
+                  
+                      <li>      <a href="http://wiki.apache.org/jackrabbit/FrontPage"  title="Jackrabbit Wiki">Jackrabbit Wiki</a>
+</li>
+                  
+                      <li>      <a href="jackrabbit-history.html"  title="Jackrabbit History">Jackrabbit History</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="getting-started-with-apache-jackrabbit.html"  title="Getting Started">Getting Started</a>
+</li>
+                  
+                      <li>      <a href="standalone-server.html"  title="Standalone Server">Standalone Server</a>
+</li>
+                  
+                      <li>      <a href="jackrabbit-components.html"  title="Jackrabbit Components">Jackrabbit Components</a>
+</li>
+                  
+                      <li>      <a href="first-hops.html"  title="First Hops">First Hops</a>
+</li>
+                  
+                      <li>      <a href="jcr-api.html"  title="JCR & API">JCR & API</a>
+</li>
+                  
+                      <li>      <a href="jackrabbit-architecture.html"  title="Jackrabbit Architecture">Jackrabbit Architecture</a>
+</li>
+                  
+                      <li>      <a href="deployment-models.html"  title="Deployment Models">Deployment Models</a>
+</li>
+                  
+                      <li>      <a href="jackrabbit-configuration.html"  title="Jackrabbit Configuration">Jackrabbit Configuration</a>
+</li>
+                  
+                      <li>      <a href="node-types.html"  title="Node Types">Node Types</a>
+</li>
+                  
+                      <li>      <a href="object-content-mapping.html"  title="Object Content Mapping">Object Content Mapping</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="jackrabbit-team.html"  title="Jackrabbit Team">Jackrabbit Team</a>
+</li>
+                  
+                      <li>      <a href="jackrabbit-roadmap.html"  title="Jackrabbit Roadmap">Jackrabbit Roadmap</a>
+</li>
+                  
+                      <li>      <a href="building-jackrabbit.html"  title="Building Jackrabbit">Building Jackrabbit</a>
+</li>
+                  
+                      <li>      <a href="mailing-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="issue-tracker.html"  title="Issue Tracker">Issue Tracker</a>
+</li>
+                  
+                      <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                  
+                      <li>      <a href="continuous-integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                  
+                      <li>      <a href="website.html"  title="Website">Website</a>
+</li>
+                  
+                      <li>      <a href="creating-releases.html"  title="Creating Releases">Creating Releases</a>
+</li>
+                  
+                      <li>      <a href="supporting-software-attribution.html"  title="Attribution">Attribution</a>
+</li>
+                  
+                      <li>      <a href="privacy-policy.html"  title="Privacy">Privacy</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="Introduction">Introduction</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsorship">Sponsorship</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Current Sponsors">Current Sponsors</a>
+</li>
+                          </ul>
+      </li>
+                  </ul>
+          
+          
+          
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container-fluid">
+          <div id="banner">
+        <div class="pull-left">
+                                <div id="bannerLeft">
+                <h2>Apache Jackrabbit Site</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: 2015-04-08
+                   </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">Apache Jackrabbit</li>
+                              
+      <li>
+  
+                          <a href="index.html" title="Welcome">
+          <i class="none"></i>
+        Welcome</a>
+            </li>
+                
+      <li>
+  
+                          <a href="downloads.html" title="Downloads">
+          <i class="none"></i>
+        Downloads</a>
+            </li>
+                
+      <li>
+  
+                          <a href="articles.html" title="Articles">
+          <i class="none"></i>
+        Articles</a>
+            </li>
+                
+      <li>
+  
+                          <a href="frequently-asked-questions.html" title="FAQ">
+          <i class="none"></i>
+        FAQ</a>
+            </li>
+                
+      <li>
+  
+                          <a href="http://wiki.apache.org/jackrabbit/FrontPage" class="externalLink" title="Jackrabbit Wiki">
+          <i class="none"></i>
+        Jackrabbit Wiki</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jackrabbit-history.html" title="Jackrabbit History">
+          <i class="none"></i>
+        Jackrabbit History</a>
+            </li>
+                              <li class="nav-header">Documentation</li>
+                              
+      <li>
+  
+                          <a href="getting-started-with-apache-jackrabbit.html" title="Getting Started">
+          <i class="none"></i>
+        Getting Started</a>
+            </li>
+                
+      <li>
+  
+                          <a href="standalone-server.html" title="Standalone Server">
+          <i class="none"></i>
+        Standalone Server</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jackrabbit-components.html" title="Jackrabbit Components">
+          <i class="none"></i>
+        Jackrabbit Components</a>
+            </li>
+                
+      <li>
+  
+                          <a href="first-hops.html" title="First Hops">
+          <i class="none"></i>
+        First Hops</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jcr-api.html" title="JCR & API">
+          <i class="none"></i>
+        JCR & API</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jackrabbit-architecture.html" title="Jackrabbit Architecture">
+          <i class="none"></i>
+        Jackrabbit Architecture</a>
+            </li>
+                
+      <li>
+  
+                          <a href="deployment-models.html" title="Deployment Models">
+          <i class="none"></i>
+        Deployment Models</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jackrabbit-configuration.html" title="Jackrabbit Configuration">
+          <i class="none"></i>
+        Jackrabbit Configuration</a>
+            </li>
+                
+      <li>
+  
+                          <a href="node-types.html" title="Node Types">
+          <i class="none"></i>
+        Node Types</a>
+            </li>
+                
+      <li>
+  
+                          <a href="object-content-mapping.html" title="Object Content Mapping">
+          <i class="none"></i>
+        Object Content Mapping</a>
+            </li>
+                              <li class="nav-header">Development</li>
+                              
+      <li>
+  
+                          <a href="jackrabbit-team.html" title="Jackrabbit Team">
+          <i class="none"></i>
+        Jackrabbit Team</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jackrabbit-roadmap.html" title="Jackrabbit Roadmap">
+          <i class="none"></i>
+        Jackrabbit Roadmap</a>
+            </li>
+                
+      <li>
+  
+                          <a href="building-jackrabbit.html" title="Building Jackrabbit">
+          <i class="none"></i>
+        Building Jackrabbit</a>
+            </li>
+                
+      <li>
+  
+                          <a href="mailing-lists.html" title="Mailing Lists">
+          <i class="none"></i>
+        Mailing Lists</a>
+            </li>
+                
+      <li>
+  
+                          <a href="issue-tracker.html" title="Issue Tracker">
+          <i class="none"></i>
+        Issue Tracker</a>
+            </li>
+                
+      <li>
+  
+                          <a href="source-repository.html" title="Source Repository">
+          <i class="none"></i>
+        Source Repository</a>
+            </li>
+                
+      <li>
+  
+                          <a href="continuous-integration.html" title="Continuous Integration">
+          <i class="none"></i>
+        Continuous Integration</a>
+            </li>
+                
+      <li>
+  
+                          <a href="website.html" title="Website">
+          <i class="none"></i>
+        Website</a>
+            </li>
+                
+      <li>
+  
+                          <a href="creating-releases.html" title="Creating Releases">
+          <i class="none"></i>
+        Creating Releases</a>
+            </li>
+                
+      <li>
+  
+                          <a href="supporting-software-attribution.html" title="Attribution">
+          <i class="none"></i>
+        Attribution</a>
+            </li>
+                
+      <li>
+  
+                          <a href="privacy-policy.html" title="Privacy">
+          <i class="none"></i>
+        Privacy</a>
+            </li>
+                              <li class="nav-header">Apache Software Foundation</li>
+                              
+      <li>
+  
+                          <a href="http://www.apache.org/foundation/how-it-works.html" class="externalLink" title="Introduction">
+          <i class="none"></i>
+        Introduction</a>
+            </li>
+                
+      <li>
+  
+                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">
+          <i class="none"></i>
+        Sponsorship</a>
+            </li>
+                
+      <li>
+  
+                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Current Sponsors">
+          <i class="none"></i>
+        Current Sponsors</a>
+            </li>
+            </ul>
+                
+                    
+                
+          <hr />
+
+           <div id="poweredBy">
+                   
+    <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
+
+    
+    <div class="g-plusone" data-href="http://www.apache.org/jackrabbit-site/" data-size="tall" ></div>
+
+                   <div class="clear"></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>How Jackrabbit works</h1>
+<p>The diagram on the left explains which components of the Jackrabbit are used when a user of the JCR API modified content in the content repository. This is a simple and very common operation, that touches a large portion of the components in the Jackrabbit implementation. Please keep in mind that this implementation architecture is not mandated by JCR, but has been designed from scratch based on JCR.</p>
+<p><img src="how-jackrabbit-works-ism.jpg" alt="Item State Manager" /></p>
+<p>The used components and their respective functions in the order of their appearance in the use case of writing or modifying content in the content repository:</p>
+
+<ul>
+  
+<li><b>Transient Item State Manager</b><br />Once content items are read by a session they are cached in the Transient Item State Manager. When those items are modified the modification is only visible to that same session, in the so-called &#x201c;transient&#x201d; space.</li>
+</ul>
+
+<ul>
+  
+<li><b>Transactional Item State Manager</b> When the Application persists the modified items using the JCR <tt>Item.save()</tt> or <tt>Session.save()</tt> the transient Items are promoted into the Transactional ISM. The modifications are still only visible within the scope of this transaction, meaning that other sessions will not see the modification until they are committed. The commit is implicit if the Content Repository is not running in an XA environment.</li>
+</ul>
+
+<ul>
+  
+<li><b>Shared Item State Manager</b> Once a transaction is committed the Shared Item State Manager receives the changelog and publishes the changes to all the sessions logged into the same workspace. This means that all the Item States that are cached and referenced by other sessions are notified and possibly updated or invalidated. The Shared Item State Manager also triggers the observation and hands the changelog over to the persistence manager that is configured for this workspace.</li>
+</ul>
+
+<ul>
+  
+<li><b>Persistence Manager</b><br />The Persistence Manager persists all the Item States in the changelog passed by the Shared ISM. The persistence manager is a very simple, fast and transactional interface that is very low-level and does not need to understand the complexities of the repository operations, but basically just needs to be able persist and retrieve a given item based on its item id.</li>
+</ul>
+
+<ul>
+  
+<li><b>Observation</b><br />When a transaction is committed the Shared Item State Manager triggers the Observation mechanism. This allows applications to asynchronously subscribe changes in the workspace. Jackrabbit also non-standard offers a synchronous observation.</li>
+</ul>
+
+<ul>
+  
+<li><b>Query Manager / Index</b><br />Through a synchronous observation event the Query Manager is instructed to index the new or modified items. A content repository index is much more complex than a classical RDB index since it deals with content repository features like the item hierarchy, nodetype inheritance or fulltext searches.</li>
+</ul>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+                      <div class="row-fluid">
+                              <p >Copyright &copy;                    2015
+                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
 
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-  <HEAD>
-    <TITLE>How Jackrabbit works</TITLE>
-    <LINK type="text/css" rel="stylesheet" href="http://jackrabbit.apache.org/style/site.css">
-  <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
-  <BODY>
-    <DIV id="page">
-      <DIV id="header">
-        <P id="jcr"><A href="http://jackrabbit.apache.org/"><IMG src="http://jackrabbit.apache.org/style/jlogo.gif" alt="Apache Jackrabbit" height="100" width="336"></A></P>
-        <P id="asf"><A href="http://www.apache.org/"><IMG src="http://jackrabbit.apache.org/style/asf-logo.gif" alt="Apache Software Foundation" height="100" width="387"></A></P>
-      </DIV>
-      <DIV id="body">
-        <DIV id="navigation">
-  <UL>
-	<LI>Apache Jackrabbit
-	<UL>
-		<LI><A href="welcome-to-apache-jackrabbit.html" title="Welcome to Apache Jackrabbit">Welcome</A></LI>
-		<LI><A href="downloads.html" title="Downloads">Downloads</A></LI>
-		<LI><A href="frequently-asked-questions.html" title="Frequently Asked Questions">FAQ</A></LI>
-		<LI><A href="http://wiki.apache.org/jackrabbit/FrontPage" class="external-link">Jackrabbit Wiki</A></LI>
-		<LI><A href="jackrabbit-history.html" title="Jackrabbit History">Jackrabbit History</A></LI>
-	</UL>
-	</LI>
-	<LI>Documentation
-	<UL>
-		<LI><A href="getting-started-with-apache-jackrabbit.html" title="Getting Started with Apache Jackrabbit">Getting Started</A></LI>
-		<LI><A href="standalone-server.html" title="Standalone Server">Standalone Server</A></LI>
-		<LI><A href="jackrabbit-components.html" title="Jackrabbit Components">Jackrabbit Components</A></LI>
-		<LI><A href="first-hops.html" title="First Hops">First Hops</A></LI>
-		<LI><A href="jcr-api.html" title="JCR & API">JCR &amp; API</A></LI>
-		<LI><A href="jackrabbit-architecture.html" title="Jackrabbit Architecture">Jackrabbit Architecture</A></LI>
-		<LI><A href="deployment-models.html" title="Deployment Models">Deployment Models</A></LI>
-		<LI><A href="jackrabbit-configuration.html" title="Jackrabbit Configuration">Jackrabbit Configuration</A></LI>
-		<LI><A href="node-types.html" title="Node Types">Node Types</A></LI>
-		<LI><A href="object-content-mapping.html" title="Object Content Mapping">Object Content Mapping</A></LI>
-	</UL>
-	</LI>
-	<LI>Development
-	<UL>
-		<LI><A href="jackrabbit-team.html" title="Jackrabbit Team">Jackrabbit Team</A></LI>
-		<LI><A href="jackrabbit-roadmap.html" title="Jackrabbit Roadmap">Jackrabbit Roadmap</A></LI>
-		<LI><A href="building-jackrabbit.html" title="Building Jackrabbit">Building Jackrabbit</A></LI>
-		<LI><A href="mailing-lists.html" title="Mailing Lists">Mailing Lists</A></LI>
-		<LI><A href="issue-tracker.html" title="Issue Tracker">Issue Tracker</A></LI>
-		<LI><A href="source-repository.html" title="Source Repository">Source Repository</A></LI>
-		<LI><A href="continuous-integration.html" title="Continuous Integration">Continuous Integration</A></LI>
-		<LI><A href="website.html" title="Website">Website</A></LI>
-		<LI><A href="creating-releases.html" title="Creating Releases">Creating Releases</A></LI>
-		<LI><A href="supporting-software-attribution.html" title="Supporting software attribution">Attribution</A></LI>
-	</UL>
-	</LI>
-	<LI>Apache Software Foundation
-	<UL>
-		<LI><A href="http://www.apache.org/foundation/how-it-works.html" class="external-link">Introduction</A></LI>
-		<LI><A href="http://www.apache.org/foundation/sponsorship.html" class="external-link">Sponsorship</A></LI>
-		<LI><A href="http://www.apache.org/foundation/thanks.html" class="external-link">Current Sponsors</A></LI>
-	</UL>
-	</LI>
-</UL>
-        </DIV>
-        <DIV id="content">
-          <H1>How Jackrabbit works</H1>
-  <P>The diagram on the left explains which components of the Jackrabbit are used when a user of the JCR API modified content in the content repository. This is a simple and very common operation, that touches a large portion of the components in the Jackrabbit implementation. Please keep in mind that this implementation architecture is not mandated by JCR, but has been designed from scratch based on JCR.</P>
-
-<DIV class="" align="center"><SPAN class="image-wrap" style=""><IMG src="how-jackrabbit-works.data/jackrabbit-ism_small.jpg" style="border: 0px solid black"></SPAN></DIV>
-
-
-<P>The used components and their respective functions in the order of their appearance in the use case of writing or modifying content in the content repository:</P>
-
-<UL>
-	<LI><B>Transient Item State Manager</B> Once content items are read by a session they are cached in the Transient Item State Manager. When those items are modified the modification is only visible to that same session, in the so-called &quot;transient&quot; space.</LI>
-	<LI><B>Transactional Item State Manager</B> When the Application persists the modified items using the JCR Item.save() or Session.save() the transient Items are promoted into the Transactional ISM. The modifications are still only visible within the scope of this transaction, meaning that other sessions will not see the modification until they are committed. The commit is implicit if the Content Repository is not running in an XA environment.</LI>
-	<LI><B>Shared Item State Manager</B> Once a transaction is committed the Shared Item State Manager receives the changelog and publishes the changes to all the sessions logged into the same workspace. This means that all the Item States that are cached and referenced by other sessions are notified and possibly updated or invalidated. The Shared Item State Manager also triggers the observation and hands the changelog over to the persistence manager that is configured for this workspace.</LI>
-	<LI><B>Persistence Manager</B> The Persistence Manager persists all the Item States in the changelog passed by the Shared ISM. The persistence manager is a very simple, fast and transactional interface that is very low-level and does not need to understand the complexities of the repository operations, but basically just needs to be able persist and retrieve a given item based on its item id.</LI>
-	<LI><B>Observation</B> When a transaction is committed the Shared Item State Manager triggers the Observation mechanism. This allows applications to asynchronously subscribe changes in the workspace. Jackrabbit also non-standard offers a synchronous observation.</LI>
-	<LI><B>Query Manager / Index</B> Through a synchronous observation event the Query Manager is instructed to index the new or modified items. A content repository index is much more complex than a classical RDB index since it deals with content repository features like the item hierarchy, nodetype inheritance or fulltext searches.</LI>
-</UL>
-
-        </DIV>
-        <DIV id="end"></DIV>
-      </DIV>
-      <DIV id="footer">
-        <P>
-          &copy; 2004-2010 The Apache Software Foundation.
-          - <A href="http://jackrabbit.apache.org/privacy-policy.html">Privacy Policy</A> -
-          [<A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=75334">edit this page</A>]
-          <BR>
-          Apache Jackrabbit, Jackrabbit, Apache, the Apache feather logo, and the Apache
-          Jackrabbit project logo are trademarks of The Apache Software Foundation.
-        </P>
-      </DIV>
-    </DIV>
-<!-- JCR- 1315: Add Google Analytics to Jackrabbit web site -->
-<SCRIPT type="text/javascript">
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</SCRIPT>
-<SCRIPT type="text/javascript">
-var pageTracker = _gat._getTracker("UA-837900-2");
-pageTracker._initData();
-pageTracker._trackPageview();
-</SCRIPT>
-  </BODY>
-</HTML>
+        
+        
+          
+    
+    
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/jackrabbit/widgets/project_users_logo.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
+</html>
\ No newline at end of file

Added: jackrabbit/site/staging/jcr/images/accessories-text-editor.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/accessories-text-editor.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/accessories-text-editor.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/add.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/add.gif?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/add.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/apache-maven-project-2.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/apache-maven-project-2.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/apache-maven-project-2.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/application-certificate.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/application-certificate.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/application-certificate.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/contact-new.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/contact-new.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/contact-new.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/document-properties.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/document-properties.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/document-properties.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/drive-harddisk.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/drive-harddisk.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/drive-harddisk.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/fix.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/fix.gif?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/fix.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/icon_error_sml.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/icon_error_sml.gif?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/icon_error_sml.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/icon_help_sml.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/icon_help_sml.gif?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/icon_help_sml.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/icon_info_sml.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/icon_info_sml.gif?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/icon_info_sml.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/icon_success_sml.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/icon_success_sml.gif?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/icon_success_sml.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/icon_warning_sml.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/icon_warning_sml.gif?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/icon_warning_sml.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/image-x-generic.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/image-x-generic.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/image-x-generic.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/internet-web-browser.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/internet-web-browser.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/internet-web-browser.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/logos/asf-logo.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/logos/asf-logo.gif?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/logos/asf-logo.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/logos/build-by-maven-black.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/logos/build-by-maven-black.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/logos/build-by-maven-black.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/logos/build-by-maven-white.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/logos/build-by-maven-white.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/logos/build-by-maven-white.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/logos/jlogo.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/logos/jlogo.gif?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/logos/jlogo.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/logos/maven-feather.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/logos/maven-feather.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/logos/maven-feather.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/network-server.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/network-server.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/network-server.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/package-x-generic.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/package-x-generic.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/package-x-generic.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/profiles/pre-release.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/profiles/pre-release.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/profiles/pre-release.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/profiles/retired.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/profiles/retired.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/profiles/retired.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/profiles/sandbox.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/profiles/sandbox.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/profiles/sandbox.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/remove.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/remove.gif?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/remove.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/rss.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/rss.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/rss.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/update.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/update.gif?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/update.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/images/window-new.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/images/window-new.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/images/window-new.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/img/glyphicons-halflings-white.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/img/glyphicons-halflings-white.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/img/glyphicons-halflings-white.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/img/glyphicons-halflings.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/img/glyphicons-halflings.png?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/img/glyphicons-halflings.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/index-readers-per-query-handler.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/index-readers-per-query-handler.jpg?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/index-readers-per-query-handler.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/staging/jcr/index-readers-per-segment.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/index-readers-per-segment.jpg?rev=1672164&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/staging/jcr/index-readers-per-segment.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: jackrabbit/site/staging/jcr/index-readers.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/staging/jcr/index-readers.html?rev=1672164&r1=1672163&r2=1672164&view=diff
==============================================================================
--- jackrabbit/site/staging/jcr/index-readers.html (original)
+++ jackrabbit/site/staging/jcr/index-readers.html Wed Apr  8 20:27:17 2015
@@ -1,148 +1,517 @@
-
-<!-- 
-  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. 
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2015-04-08 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
 -->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-  <HEAD>
-    <TITLE>Index readers</TITLE>
-    <LINK type="text/css" rel="stylesheet" href="http://jackrabbit.apache.org/style/site.css">
-  <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
-  <BODY>
-    <DIV id="page">
-      <DIV id="header">
-        <P id="jcr"><A href="http://jackrabbit.apache.org/"><IMG src="http://jackrabbit.apache.org/style/jlogo.gif" alt="Apache Jackrabbit" height="100" width="336"></A></P>
-        <P id="asf"><A href="http://www.apache.org/"><IMG src="http://jackrabbit.apache.org/style/asf-logo.gif" alt="Apache Software Foundation" height="100" width="387"></A></P>
-      </DIV>
-      <DIV id="body">
-        <DIV id="navigation">
-  <UL>
-	<LI>Apache Jackrabbit
-	<UL>
-		<LI><A href="welcome-to-apache-jackrabbit.html" title="Welcome to Apache Jackrabbit">Welcome</A></LI>
-		<LI><A href="downloads.html" title="Downloads">Downloads</A></LI>
-		<LI><A href="frequently-asked-questions.html" title="Frequently Asked Questions">FAQ</A></LI>
-		<LI><A href="http://wiki.apache.org/jackrabbit/FrontPage" class="external-link">Jackrabbit Wiki</A></LI>
-		<LI><A href="jackrabbit-history.html" title="Jackrabbit History">Jackrabbit History</A></LI>
-	</UL>
-	</LI>
-	<LI>Documentation
-	<UL>
-		<LI><A href="getting-started-with-apache-jackrabbit.html" title="Getting Started with Apache Jackrabbit">Getting Started</A></LI>
-		<LI><A href="standalone-server.html" title="Standalone Server">Standalone Server</A></LI>
-		<LI><A href="jackrabbit-components.html" title="Jackrabbit Components">Jackrabbit Components</A></LI>
-		<LI><A href="first-hops.html" title="First Hops">First Hops</A></LI>
-		<LI><A href="jcr-api.html" title="JCR & API">JCR &amp; API</A></LI>
-		<LI><A href="jackrabbit-architecture.html" title="Jackrabbit Architecture">Jackrabbit Architecture</A></LI>
-		<LI><A href="deployment-models.html" title="Deployment Models">Deployment Models</A></LI>
-		<LI><A href="jackrabbit-configuration.html" title="Jackrabbit Configuration">Jackrabbit Configuration</A></LI>
-		<LI><A href="node-types.html" title="Node Types">Node Types</A></LI>
-		<LI><A href="object-content-mapping.html" title="Object Content Mapping">Object Content Mapping</A></LI>
-	</UL>
-	</LI>
-	<LI>Development
-	<UL>
-		<LI><A href="jackrabbit-team.html" title="Jackrabbit Team">Jackrabbit Team</A></LI>
-		<LI><A href="jackrabbit-roadmap.html" title="Jackrabbit Roadmap">Jackrabbit Roadmap</A></LI>
-		<LI><A href="building-jackrabbit.html" title="Building Jackrabbit">Building Jackrabbit</A></LI>
-		<LI><A href="mailing-lists.html" title="Mailing Lists">Mailing Lists</A></LI>
-		<LI><A href="issue-tracker.html" title="Issue Tracker">Issue Tracker</A></LI>
-		<LI><A href="source-repository.html" title="Source Repository">Source Repository</A></LI>
-		<LI><A href="continuous-integration.html" title="Continuous Integration">Continuous Integration</A></LI>
-		<LI><A href="website.html" title="Website">Website</A></LI>
-		<LI><A href="creating-releases.html" title="Creating Releases">Creating Releases</A></LI>
-		<LI><A href="supporting-software-attribution.html" title="Supporting software attribution">Attribution</A></LI>
-	</UL>
-	</LI>
-	<LI>Apache Software Foundation
-	<UL>
-		<LI><A href="http://www.apache.org/foundation/how-it-works.html" class="external-link">Introduction</A></LI>
-		<LI><A href="http://www.apache.org/foundation/sponsorship.html" class="external-link">Sponsorship</A></LI>
-		<LI><A href="http://www.apache.org/foundation/thanks.html" class="external-link">Current Sponsors</A></LI>
-	</UL>
-	</LI>
-</UL>
-        </DIV>
-        <DIV id="content">
-          <H1>Index readers</H1>
-  <P>Jackrabbit uses Lucene as the underlying index implementation and provides several extensions and customizations that help improve performance in an environment where changes to the index are frequent. The extensions also cover features that are not supported by Lucene, like hierarchical queries.</P>
-
-<DIV class="" align="center"><SPAN class="image-wrap" style=""><IMG src="index-readers.data/index-readers-per-segment.jpg" style="border: 0px solid black"></SPAN></DIV>
-
-
-<H2><A name="Indexreaders-CachingIndexReader"></A>CachingIndexReader</H2>
-
-<P>The CachingIndexReader is at the very bottom of the index reader stack in Jackrabbit. It's main purpose is to cache the parent relationship of a node. Each node is represented with a document in the index and one of the fields is _:PARENT. The value of this field is the string representation of the parent nodes UUID. In case of the root node the the parent field contains an empty string as its value. Several queries in Jackrabbit are hierarchical and check whether a node is a descendant of another node. For the very simple case, where one needs to know if a node is the child of another node, we can just look up both nodes (lucene documents) in the index and compare the parent field on one node with the _:UUID field of the other. If they match the one is the child of the other node. When it comes to evaluating a descendant axis, this becomes much more expensive and will cause lots of document lookups in lucene. By caching the parent child relationship of documents, hierarchical op
 erations can be executed much faster.</P>
-
-<P>The cache consists of an array of DocId instances. The length of this array corresponds to the number of documents accessible through the index reader. That is every document in the index has a corresponding cache entry in the array. Initially the cache is empty and is filled as it is accessed. There are two kinds of DocIds: PlainDocId and UUIDDocId. When the parent of a node resides in the same index segment a PlainDocId is created, which simply contains the document number of the parent. If the parent resides in a different index segment a UUIDDocId is created, which contains the UUID of the parent node. When a UUIDDocId is resolved it is passed an index reader, which allows it to get the document number for the UUID and cache it for later reuse.</P>
-
-<H2><A name="Indexreaders-OverwritingDocId"></A>Overwriting DocId</H2>
-
-<P>It may happen that a PlainDocId is present in the cache of a CachingIndexReader but must be considered invalid in the context of a call. CachingIndexReader.getParent() may be called from a ReadOnlyIndexReader instance which has the target of the PlainDocId in the set of deleted document. This indicates that the nodes has been deleted or modified. Thus it has traveled to another index segment. In this case the PlainDocId is overwritten with a UUIDDocId. The opposite never happens. A UUIDDocId is never overwritten with a PlainDocId because when a document is added to an index a new CachingIndexReader is created.</P>
-
-<H2><A name="Indexreaders-SharedIndexReader"></A>SharedIndexReader</H2>
-
-<P>The SharedIndexReader wraps a CachingIndexReader and adds a reference count facility. A SharedIndexReader is kept open for the entire lifetime of a PersistentIndex. Even if documents are marked deleted in the underlying index (by another thread through CommittableIndexReader), the SharedIndexReader will still be kept open and considers the documents as valid. The reference counting is needed because it may happen that a client of the SharedIndexReader is still in use while the underlying PersistentIndex is closed. This may happen when the index merger replaces indexes while a query still operates on the indexes to be deleted. Using reference counts, closing the SharedIndexReader is delayed until all clients are finished with the  SharedIndexReader.</P>
-
-<H2><A name="Indexreaders-ReadOnlyIndexReader"></A>ReadOnlyIndexReader</H2>
-
-<P>The inconsistency introduced by the SharedIndexReader (considers deleted documents as still valid) is corrected by the ReadOnlyIndexReader. Whenever a new instance of this reader is created it copies the currently marked deleted documents from the CommittableIndexReader. At the same time all methods that attempt delete documents will throw a UnsupportedOperationException.</P>
-
-<H2><A name="Indexreaders-CommittableIndexReader"></A>CommittableIndexReader</H2>
-
-<P>This is the index reader where documents are marked deleted in a PersistentIndex. As with the SharedIndexReader the CommittableIndexReader is kept open for the entire lifetime of the PersistentIndex. To achieve this the CommittableIndexReader exposes a method commitDeleted, which forces the underlying native lucene index reader to commit changes. Only committing changes whithout closing the index reader is otherwise not possible using the plain lucene index reader.</P>
-
-<H2><A name="Indexreaders-Combiningtheindexsegments"></A>Combining the index segments</H2>
-
-<DIV class="" align="center"><SPAN class="image-wrap" style=""><IMG src="index-readers.data/index-readers-per-query-handler.jpg" style="border: 0px solid black"></SPAN></DIV>
-
-
-<H2><A name="Indexreaders-CachingMultiIndexReader"></A>CachingMultiIndexReader</H2>
-
-<P>The index for the content of a workspace consists of multiple segments, that is multiple ReadOnlyIndexReaders. They are combined in a MultiIndex using a CachingMultiIndexReader. In order to speed up lookups by UUID the CachingMultiIndexReader also has a DocNumberCache. This cache uses a LRU algorithm to keep a limitted amount of UUID to document number mappings.</P>
-
-<H2><A name="Indexreaders-CombinedIndexReader"></A>CombinedIndexReader</H2>
-
-<P>This index reader is similar to the CachingMultiIndexReader, in fact both implement MultiIndexReader and HierarchyResolver. A CombinedIndexReader is created when a query needs an index reader that spans both the workspace index as well as the jcr:system index, where the version store resides.</P>
-        </DIV>
-        <DIV id="end"></DIV>
-      </DIV>
-      <DIV id="footer">
-        <P>
-          &copy; 2004-2010 The Apache Software Foundation.
-          - <A href="http://jackrabbit.apache.org/privacy-policy.html">Privacy Policy</A> -
-          [<A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=75338">edit this page</A>]
-          <BR>
-          Apache Jackrabbit, Jackrabbit, Apache, the Apache feather logo, and the Apache
-          Jackrabbit project logo are trademarks of The Apache Software Foundation.
-        </P>
-      </DIV>
-    </DIV>
-<!-- JCR- 1315: Add Google Analytics to Jackrabbit web site -->
-<SCRIPT type="text/javascript">
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</SCRIPT>
-<SCRIPT type="text/javascript">
-var pageTracker = _gat._getTracker("UA-837900-2");
-pageTracker._initData();
-pageTracker._trackPageview();
-</SCRIPT>
-  </BODY>
-</HTML>
+<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="20150408" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Apache Jackrabbit - Index readers</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.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.1.min.js"></script>
+
+    
+                  </head>
+        <body class="topBarEnabled">
+          
+    
+    
+            
+    
+    
+    <a href="http://github.com/apache/jackrabbit">
+      <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>
+                
+                                                                                <a class="brand" href="index.html"  title="Apache Jackrabbit">
+
+                                
+                                                                                                                    <img src="images/logos/jlogo.gif" alt="Apache Jackrabbit" />
+                
+                </a>
+                    
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache Jackrabbit <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="Welcome">Welcome</a>
+</li>
+                  
+                      <li>      <a href="downloads.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="articles.html"  title="Articles">Articles</a>
+</li>
+                  
+                      <li>      <a href="frequently-asked-questions.html"  title="FAQ">FAQ</a>
+</li>
+                  
+                      <li>      <a href="http://wiki.apache.org/jackrabbit/FrontPage"  title="Jackrabbit Wiki">Jackrabbit Wiki</a>
+</li>
+                  
+                      <li>      <a href="jackrabbit-history.html"  title="Jackrabbit History">Jackrabbit History</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="getting-started-with-apache-jackrabbit.html"  title="Getting Started">Getting Started</a>
+</li>
+                  
+                      <li>      <a href="standalone-server.html"  title="Standalone Server">Standalone Server</a>
+</li>
+                  
+                      <li>      <a href="jackrabbit-components.html"  title="Jackrabbit Components">Jackrabbit Components</a>
+</li>
+                  
+                      <li>      <a href="first-hops.html"  title="First Hops">First Hops</a>
+</li>
+                  
+                      <li>      <a href="jcr-api.html"  title="JCR & API">JCR & API</a>
+</li>
+                  
+                      <li>      <a href="jackrabbit-architecture.html"  title="Jackrabbit Architecture">Jackrabbit Architecture</a>
+</li>
+                  
+                      <li>      <a href="deployment-models.html"  title="Deployment Models">Deployment Models</a>
+</li>
+                  
+                      <li>      <a href="jackrabbit-configuration.html"  title="Jackrabbit Configuration">Jackrabbit Configuration</a>
+</li>
+                  
+                      <li>      <a href="node-types.html"  title="Node Types">Node Types</a>
+</li>
+                  
+                      <li>      <a href="object-content-mapping.html"  title="Object Content Mapping">Object Content Mapping</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="jackrabbit-team.html"  title="Jackrabbit Team">Jackrabbit Team</a>
+</li>
+                  
+                      <li>      <a href="jackrabbit-roadmap.html"  title="Jackrabbit Roadmap">Jackrabbit Roadmap</a>
+</li>
+                  
+                      <li>      <a href="building-jackrabbit.html"  title="Building Jackrabbit">Building Jackrabbit</a>
+</li>
+                  
+                      <li>      <a href="mailing-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="issue-tracker.html"  title="Issue Tracker">Issue Tracker</a>
+</li>
+                  
+                      <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                  
+                      <li>      <a href="continuous-integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                  
+                      <li>      <a href="website.html"  title="Website">Website</a>
+</li>
+                  
+                      <li>      <a href="creating-releases.html"  title="Creating Releases">Creating Releases</a>
+</li>
+                  
+                      <li>      <a href="supporting-software-attribution.html"  title="Attribution">Attribution</a>
+</li>
+                  
+                      <li>      <a href="privacy-policy.html"  title="Privacy">Privacy</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="Introduction">Introduction</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsorship">Sponsorship</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Current Sponsors">Current Sponsors</a>
+</li>
+                          </ul>
+      </li>
+                  </ul>
+          
+          
+          
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container-fluid">
+          <div id="banner">
+        <div class="pull-left">
+                                <div id="bannerLeft">
+                <h2>Apache Jackrabbit Site</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: 2015-04-08
+                   </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">Apache Jackrabbit</li>
+                              
+      <li>
+  
+                          <a href="index.html" title="Welcome">
+          <i class="none"></i>
+        Welcome</a>
+            </li>
+                
+      <li>
+  
+                          <a href="downloads.html" title="Downloads">
+          <i class="none"></i>
+        Downloads</a>
+            </li>
+                
+      <li>
+  
+                          <a href="articles.html" title="Articles">
+          <i class="none"></i>
+        Articles</a>
+            </li>
+                
+      <li>
+  
+                          <a href="frequently-asked-questions.html" title="FAQ">
+          <i class="none"></i>
+        FAQ</a>
+            </li>
+                
+      <li>
+  
+                          <a href="http://wiki.apache.org/jackrabbit/FrontPage" class="externalLink" title="Jackrabbit Wiki">
+          <i class="none"></i>
+        Jackrabbit Wiki</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jackrabbit-history.html" title="Jackrabbit History">
+          <i class="none"></i>
+        Jackrabbit History</a>
+            </li>
+                              <li class="nav-header">Documentation</li>
+                              
+      <li>
+  
+                          <a href="getting-started-with-apache-jackrabbit.html" title="Getting Started">
+          <i class="none"></i>
+        Getting Started</a>
+            </li>
+                
+      <li>
+  
+                          <a href="standalone-server.html" title="Standalone Server">
+          <i class="none"></i>
+        Standalone Server</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jackrabbit-components.html" title="Jackrabbit Components">
+          <i class="none"></i>
+        Jackrabbit Components</a>
+            </li>
+                
+      <li>
+  
+                          <a href="first-hops.html" title="First Hops">
+          <i class="none"></i>
+        First Hops</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jcr-api.html" title="JCR & API">
+          <i class="none"></i>
+        JCR & API</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jackrabbit-architecture.html" title="Jackrabbit Architecture">
+          <i class="none"></i>
+        Jackrabbit Architecture</a>
+            </li>
+                
+      <li>
+  
+                          <a href="deployment-models.html" title="Deployment Models">
+          <i class="none"></i>
+        Deployment Models</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jackrabbit-configuration.html" title="Jackrabbit Configuration">
+          <i class="none"></i>
+        Jackrabbit Configuration</a>
+            </li>
+                
+      <li>
+  
+                          <a href="node-types.html" title="Node Types">
+          <i class="none"></i>
+        Node Types</a>
+            </li>
+                
+      <li>
+  
+                          <a href="object-content-mapping.html" title="Object Content Mapping">
+          <i class="none"></i>
+        Object Content Mapping</a>
+            </li>
+                              <li class="nav-header">Development</li>
+                              
+      <li>
+  
+                          <a href="jackrabbit-team.html" title="Jackrabbit Team">
+          <i class="none"></i>
+        Jackrabbit Team</a>
+            </li>
+                
+      <li>
+  
+                          <a href="jackrabbit-roadmap.html" title="Jackrabbit Roadmap">
+          <i class="none"></i>
+        Jackrabbit Roadmap</a>
+            </li>
+                
+      <li>
+  
+                          <a href="building-jackrabbit.html" title="Building Jackrabbit">
+          <i class="none"></i>
+        Building Jackrabbit</a>
+            </li>
+                
+      <li>
+  
+                          <a href="mailing-lists.html" title="Mailing Lists">
+          <i class="none"></i>
+        Mailing Lists</a>
+            </li>
+                
+      <li>
+  
+                          <a href="issue-tracker.html" title="Issue Tracker">
+          <i class="none"></i>
+        Issue Tracker</a>
+            </li>
+                
+      <li>
+  
+                          <a href="source-repository.html" title="Source Repository">
+          <i class="none"></i>
+        Source Repository</a>
+            </li>
+                
+      <li>
+  
+                          <a href="continuous-integration.html" title="Continuous Integration">
+          <i class="none"></i>
+        Continuous Integration</a>
+            </li>
+                
+      <li>
+  
+                          <a href="website.html" title="Website">
+          <i class="none"></i>
+        Website</a>
+            </li>
+                
+      <li>
+  
+                          <a href="creating-releases.html" title="Creating Releases">
+          <i class="none"></i>
+        Creating Releases</a>
+            </li>
+                
+      <li>
+  
+                          <a href="supporting-software-attribution.html" title="Attribution">
+          <i class="none"></i>
+        Attribution</a>
+            </li>
+                
+      <li>
+  
+                          <a href="privacy-policy.html" title="Privacy">
+          <i class="none"></i>
+        Privacy</a>
+            </li>
+                              <li class="nav-header">Apache Software Foundation</li>
+                              
+      <li>
+  
+                          <a href="http://www.apache.org/foundation/how-it-works.html" class="externalLink" title="Introduction">
+          <i class="none"></i>
+        Introduction</a>
+            </li>
+                
+      <li>
+  
+                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">
+          <i class="none"></i>
+        Sponsorship</a>
+            </li>
+                
+      <li>
+  
+                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Current Sponsors">
+          <i class="none"></i>
+        Current Sponsors</a>
+            </li>
+            </ul>
+                
+                    
+                
+          <hr />
+
+           <div id="poweredBy">
+                   
+    <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
+
+    
+    <div class="g-plusone" data-href="http://www.apache.org/jackrabbit-site/" data-size="tall" ></div>
+
+                   <div class="clear"></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>Index readers</h1>
+<p>Jackrabbit uses Lucene as the underlying index implementation and provides several extensions and customizations that help improve performance in an environment where changes to the index are frequent. The extensions also cover features that are not supported by Lucene, like hierarchical queries.</p>
+<p><img src="index-readers-per-segment.jpg" alt="Per Index Segment" /></p>
+<div class="section">
+<h2>CachingIndexReader<a name="CachingIndexReader"></a></h2>
+<p>The <tt>CachingIndexReader</tt> is at the very bottom of the index reader stack in Jackrabbit. It&#x2019;s main purpose is to cache the parent relationship of a node. Each node is represented with a document in the index and one of the fields is <tt>_:PARENT</tt>. The value of this field is the string representation of the parent nodes UUID. In case of the root node the the parent field contains an empty string as its value. Several queries in Jackrabbit are hierarchical and check whether a node is a descendant of another node. For the very simple case, where one needs to know if a node is the child of another node, we can just look up both nodes (lucene documents) in the index and compare the parent field on one node with the <tt>_:UUID</tt> field of the other. If they match the one is the child of the other node. When it comes to evaluating a descendant axis, this becomes much more expensive and will cause lots of document lookups in lucene. By caching the parent child relation
 ship of documents, hierarchical operations can be executed much faster.</p>
+<p>The cache consists of an array of DocId instances. The length of this array corresponds to the number of documents accessible through the index reader. That is every document in the index has a corresponding cache entry in the array. Initially the cache is empty and is filled as it is accessed. There are two kinds of DocIds: PlainDocId and UUIDDocId. When the parent of a node resides in the same index segment a PlainDocId is created, which simply contains the document number of the parent. If the parent resides in a different index segment a UUIDDocId is created, which contains the UUID of the parent node. When a UUIDDocId is resolved it is passed an index reader, which allows it to get the document number for the UUID and cache it for later reuse.</p></div>
+<div class="section">
+<h2>Overwriting DocId<a name="Overwriting_DocId"></a></h2>
+<p>It may happen that a PlainDocId is present in the cache of a <tt>CachingIndexReader</tt> but must be considered invalid in the context of a call. <tt>CachingIndexReader.getParent()</tt> may be called from a ReadOnlyIndexReader instance which has the target of the PlainDocId in the set of deleted document. This indicates that the nodes has been deleted or modified. Thus it has traveled to another index segment. In this case the PlainDocId is overwritten with a UUIDDocId. The opposite never happens. A UUIDDocId is never overwritten with a PlainDocId because when a document is added to an index a new CachingIndexReader is created.</p></div>
+<div class="section">
+<h2>SharedIndexReader<a name="SharedIndexReader"></a></h2>
+<p>The SharedIndexReader wraps a CachingIndexReader and adds a reference count facility. A SharedIndexReader is kept open for the entire lifetime of a PersistentIndex. Even if documents are marked deleted in the underlying index (by another thread through CommittableIndexReader), the SharedIndexReader will still be kept open and considers the documents as valid. The reference counting is needed because it may happen that a client of the SharedIndexReader is still in use while the underlying PersistentIndex is closed. This may happen when the index merger replaces indexes while a query still operates on the indexes to be deleted. Using reference counts, closing the SharedIndexReader is delayed until all clients are finished with the SharedIndexReader.</p></div>
+<div class="section">
+<h2>ReadOnlyIndexReader<a name="ReadOnlyIndexReader"></a></h2>
+<p>The inconsistency introduced by the SharedIndexReader (considers deleted documents as still valid) is corrected by the ReadOnlyIndexReader. Whenever a new instance of this reader is created it copies the currently marked deleted documents from the CommittableIndexReader. At the same time all methods that attempt delete documents will throw a UnsupportedOperationException.</p></div>
+<div class="section">
+<h2>CommittableIndexReader<a name="CommittableIndexReader"></a></h2>
+<p>This is the index reader where documents are marked deleted in a PersistentIndex. As with the SharedIndexReader the CommittableIndexReader is kept open for the entire lifetime of the PersistentIndex. To achieve this the CommittableIndexReader exposes a method commitDeleted, which forces the underlying native lucene index reader to commit changes. Only committing changes whithout closing the index reader is otherwise not possible using the plain lucene index reader.</p></div>
+<div class="section">
+<h2>Combining the index segments<a name="Combining_the_index_segments"></a></h2>
+<p><img src="index-readers-per-query-handler.jpg" alt="Per Query Handler" /></p></div>
+<div class="section">
+<h2>CachingMultiIndexReader<a name="CachingMultiIndexReader"></a></h2>
+<p>The index for the content of a workspace consists of multiple segments, that is multiple ReadOnlyIndexReaders. They are combined in a MultiIndex using a CachingMultiIndexReader. In order to speed up lookups by UUID the CachingMultiIndexReader also has a DocNumberCache. This cache uses a LRU algorithm to keep a limited amount of UUID to document number mappings.</p></div>
+<div class="section">
+<h2>CombinedIndexReader<a name="CombinedIndexReader"></a></h2>
+<p>This index reader is similar to the CachingMultiIndexReader, in fact both implement MultiIndexReader and HierarchyResolver. A CombinedIndexReader is created when a query needs an index reader that spans both the workspace index as well as the jcr:system index, where the version store resides.</p></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+                      <div class="row-fluid">
+                              <p >Copyright &copy;                    2015
+                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+        
+        
+          
+    
+    
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/jackrabbit/widgets/project_users_logo.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
+</html>
\ No newline at end of file