You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2022/12/13 13:11:14 UTC

svn commit: r1905958 [3/21] - in /jackrabbit/site/live/jcr: ./ components/ css/ fonts/ js/ ocm/ status/

Modified: jackrabbit/site/live/jcr/components/jackrabbit-spi.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/jcr/components/jackrabbit-spi.html?rev=1905958&r1=1905957&r2=1905958&view=diff
==============================================================================
--- jackrabbit/site/live/jcr/components/jackrabbit-spi.html (original)
+++ jackrabbit/site/live/jcr/components/jackrabbit-spi.html Tue Dec 13 13:11:12 2022
@@ -1,40 +1,42 @@
 <!DOCTYPE html>
-
-
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src\site\markdown/components\jackrabbit-spi.md at 2022-10-16
- | Rendered using Apache Maven Fluido Skin 1.11.1
+ | Generated by Apache Maven Doxia Site Renderer 1.9.2 from src\site\markdown/components\jackrabbit-spi.md at 2022-05-12
+ | Rendered using Apache Maven Fluido Skin 1.9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
-    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
+    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.9.2" />
     <title>Apache Jackrabbit &#x2013; Jackrabbit SPI</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.11.1.min.css" />
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.9.min.css" />
     <link rel="stylesheet" href="../css/site.css" />
     <link rel="stylesheet" href="../css/print.css" media="print" />
-    <script src="../js/apache-maven-fluido-1.11.1.min.js"></script>
-
-    <!-- Matomo -->
-    <script>
-        var _paq = window._paq = window._paq || [];
-                _paq.push(['disableCookies']);
-                    _paq.push(['trackPageView']);
-                    _paq.push(['enableLinkTracking']);
-        
-        (function() {
-            var u="https://analytics.apache.org";
-            _paq.push(['setTrackerUrl', u+'/matomo.php']);
-            _paq.push(['setSiteId', '4']);
-            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-            g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
-        })();
-    </script>
-    <!-- End Matomo Code -->
+    <script src="../js/apache-maven-fluido-1.9.min.js"></script>
+<!-- Matomo -->
+<script>
+  var _paq = window._paq = window._paq || [];
+  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
+  /* We explicitly disable cookie tracking to avoid privacy issues */
+  _paq.push(['disableCookies']);
+  _paq.push(['trackPageView']);
+  _paq.push(['enableLinkTracking']);
+  (function() {
+    var u="https://matomo.privacy.apache.org/";
+    _paq.push(['setTrackerUrl', u+'matomo.php']);
+    _paq.push(['setSiteId', '4']);
+    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+  })();
+</script>
+<!-- End Matomo Code -->
   </head>
   <body class="topBarEnabled">
-    <a class="github-fork-ribbon right-top" href="https://github.com/apache/jackrabbit" data-ribbon="Fork me on GitHub" title="Fork me on GitHub">Fork me on GitHub</a>
+    <a href="https://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>
     <header id="topbar" class="navbar navbar-fixed-top ">
       <div class="navbar-inner">
         <div class="container-fluid">
@@ -47,7 +49,7 @@
 </a>
             <ul class="nav">
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Apache Jackrabbit <b class="caret"></b></a>
+        <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>
@@ -58,7 +60,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
+        <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>
@@ -73,7 +75,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <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>
@@ -88,7 +90,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
         <ul class="dropdown-menu">
             <li><a href="https://www.apache.org/foundation/how-it-works.html" title="Introduction">Introduction</a></li>
             <li><a href="https://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
@@ -103,7 +105,7 @@
     <div class="container-fluid">
       <header>
         <div id="banner">
-          <div class="pull-left"><div id="bannerLeft"><h1>Apache Jackrabbit Site</h1>
+          <div class="pull-left"><div id="bannerLeft"><h2>Apache Jackrabbit Site</h2>
 </div>
 </div>
           <div class="pull-right"></div>
@@ -112,7 +114,7 @@
 
         <div id="breadcrumbs">
           <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2022-10-16</li>
+        <li id="publishDate">Last Published: 2022-05-12</li>
           </ul>
         </div>
       </header>
@@ -157,6 +159,7 @@
   </ul>
           </nav>
           <div class="well sidebar-nav">
+            <hr />
             <div id="poweredBy">
               <div class="clear"></div>
               <div class="clear"></div>
@@ -183,27 +186,14 @@
    limitations under the License.
 -->
 <h1>Jackrabbit SPI</h1>
-<p>This is the SPI component of the Apache Jackrabbit project. The SPI enables
-a separation between transient and persistent components of the JCR
-repository. The transient component (&#x201c;repository client&#x201d;) is implemented on
-top of the persistent component (&#x201c;repository server&#x201d;) as a consumer of the
-SPI and, in turn, exposes the JCR API to the application. The SPI is not
-intended to be used by the application directly.</p>
+<p>This is the SPI component of the Apache Jackrabbit project. The SPI enables a separation between transient and persistent components of the JCR repository. The transient component (&#x201c;repository client&#x201d;) is implemented on top of the persistent component (&#x201c;repository server&#x201d;) as a consumer of the SPI and, in turn, exposes the JCR API to the application. The SPI is not intended to be used by the application directly.</p>
 <p><img src="jackrabbit-spi.jpg" alt="Jackrabbit SPI" /></p><section>
 <h2><a name="Primary_Goals"></a>Primary Goals</h2>
-<p>The Primary goals of the SPI approach are to define support for
-client-server architecture and to ease the implementation of the JCR API.</p><section>
+<p>The Primary goals of the SPI approach are to define support for client-server architecture and to ease the implementation of the JCR API.</p><section>
 <h3><a name="Client-Server_architecture"></a>Client-Server architecture</h3>
-<p>The SPI provides a natural division between the client and server
-components of a remote JCR repository. The SPI is designed with this usage
-in mind, enabling an implementation to minimize network traffic. The SPI
-lends itself to protocol mappings to protocols like WebDAV, SOAP or others
-in a straightforward yet meaningful way.</p></section><section>
+<p>The SPI provides a natural division between the client and server components of a remote JCR repository. The SPI is designed with this usage in mind, enabling an implementation to minimize network traffic. The SPI lends itself to protocol mappings to protocols like WebDAV, SOAP or others in a straightforward yet meaningful way.</p></section><section>
 <h3><a name="Implementation_Support"></a>Implementation Support</h3>
-<p>Introducing the SPI can simplify the implementation of JCR on top of an
-existing repository by reducing the task to one of implementing the SPI.
-Such an implementation might then rely on a generic transient layer (such
-as e.g. <a href="jackrabbit-jcr-to-spi.html">Jackrabbit JCR to SPI</a> to provide the JCR API.</p></section></section><section>
+<p>Introducing the SPI can simplify the implementation of JCR on top of an existing repository by reducing the task to one of implementing the SPI. Such an implementation might then rely on a generic transient layer (such as e.g. <a href="jackrabbit-jcr-to-spi.html">Jackrabbit JCR to SPI</a> to provide the JCR API.</p></section></section><section>
 <h2><a name="Architecture_and_Design_Overview"></a>Architecture and Design Overview</h2>
 <p>The specific functions exposed by the SPI are:</p>
 <ul>
@@ -218,25 +208,16 @@ as e.g. <a href="jackrabbit-jcr-to-spi.h
 <li>Storage of the central namespace registry</li>
 <li>Node type management, enforcement of constraints as well as definition storage.</li>
 </ul>
-<p>Therefore SPI designs a set of interfaces and methods needed to expose the
-functionality of the persistent layer of a compliant JCR repository. The
-main interfaces of the SPI are <i>RepositoryService</i> and <i>Batch</i>.</p>
-<p>The <i>RepositoryService</i> interface defines the methods used to retrieve
-information from the persistent layer. In addition it contains the methods
-that affect the persistent state of the repository.</p>
-<p>The <i>Batch</i> is an interface to an ordered list of primitive operations
-against the persistent layer. The <i>Batch</i> is then submitted to the
-<i>RepositoryService</i> to make the specified sequence of changes.</p>
-<p>In addition the SPI defines interfaces for internal representations of JCR
-name, JCR nath and Item identifiers. The SPI itself only uses names and
-paths in their fully qualified.</p></section><section>
+<p>Therefore SPI designs a set of interfaces and methods needed to expose the functionality of the persistent layer of a compliant JCR repository. The main interfaces of the SPI are <i>RepositoryService</i> and <i>Batch</i>.</p>
+<p>The <i>RepositoryService</i> interface defines the methods used to retrieve information from the persistent layer. In addition it contains the methods that affect the persistent state of the repository.</p>
+<p>The <i>Batch</i> is an interface to an ordered list of primitive operations against the persistent layer. The <i>Batch</i> is then submitted to the <i>RepositoryService</i> to make the specified sequence of changes.</p>
+<p>In addition the SPI defines interfaces for internal representations of JCR name, JCR nath and Item identifiers. The SPI itself only uses names and paths in their fully qualified.</p></section><section>
 <h2><a name="Existing_Implementations"></a>Existing Implementations</h2>
 <p>The Jackrabbit project currently provides a single SPI implementation:</p>
 <ul>
 
 <li><a href="jackrabbit-spi-to-jcr.html">Jackrabbit SPI to JCR</a>:<br />
-An implementation of the SPI interfaces wrapping an implementation of the
-JCR API such as e.g. Jackrabbit Core.</li>
+An implementation of the SPI interfaces wrapping an implementation of the JCR API such as e.g. Jackrabbit Core.</li>
 </ul>
 <p>Other SPI implementations can be found in the <i>sandbox</i> folder of the Jackrabbit project.</p>
 <ul>
@@ -244,16 +225,12 @@ JCR API such as e.g. Jackrabbit Core.</l
 <li>
 
 <p><b>SPI to WebDAV</b>:<br />
-SPI implementation on top of WebDAV connecting to a
-<a href="jackrabbit-jcr-server.html">Jackrabbit JCR Server</a>.</p>
+SPI implementation on top of WebDAV connecting to a <a href="jackrabbit-jcr-server.html">Jackrabbit JCR Server</a>.</p>
 </li>
 <li>
 
 <p><b>SPI-RMI</b>:<br />
-A RMI layer.used to remote any SPI implementation. While
-<a href="jackrabbit-spi-to-jcr.html">Jackrabbit SPI to JCR</a>
-and <i>SPI to WebDAV</i> really are repository implementations, the <i>SPI-RMI</i>
-is rather a &#x2018;repeater&#x2019; for SPI calls using RMI.</p>
+A RMI layer.used to remote any SPI implementation. While <a href="jackrabbit-spi-to-jcr.html">Jackrabbit SPI to JCR</a> and <i>SPI to WebDAV</i> really are repository implementations, the <i>SPI-RMI</i> is rather a &#x2018;repeater&#x2019; for SPI calls using RMI.</p>
 </li>
 <li>
 
@@ -261,8 +238,7 @@ is rather a &#x2018;repeater&#x2019; for
 Utility implementation to log SPI usage.</p>
 </li>
 </ul>
-<p>See the image below for a overview over existing and planned SPI
-implementations.</p>
+<p>See the image below for a overview over existing and planned SPI implementations.</p>
 <p><img src="jackrabbit-spi-overview.gif" alt="Jackrabbit SPI Overview" /></p></section>
         </main>
       </div>
@@ -275,12 +251,10 @@ implementations.</p>
 <a href="https://www.apache.org/">The Apache Software Foundation</a> &vert; <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a>
 </p>
         </div>
-      </div>
+    <div id="ohloh" class="pull-right">
+      <script src="https://www.ohloh.net/p/jackrabbit/widgets/project_users_logo.js"></script>
+    </div>
+        </div>
     </footer>
-<script>
-	if(anchors) {
-	  anchors.add();
-	}
-</script>
   </body>
 </html>
\ No newline at end of file

Modified: jackrabbit/site/live/jcr/components/jackrabbit-text-extractors.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/jcr/components/jackrabbit-text-extractors.html?rev=1905958&r1=1905957&r2=1905958&view=diff
==============================================================================
--- jackrabbit/site/live/jcr/components/jackrabbit-text-extractors.html (original)
+++ jackrabbit/site/live/jcr/components/jackrabbit-text-extractors.html Tue Dec 13 13:11:12 2022
@@ -1,40 +1,42 @@
 <!DOCTYPE html>
-
-
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src\site\markdown/components\jackrabbit-text-extractors.md at 2022-10-16
- | Rendered using Apache Maven Fluido Skin 1.11.1
+ | Generated by Apache Maven Doxia Site Renderer 1.9.2 from src\site\markdown/components\jackrabbit-text-extractors.md at 2022-05-12
+ | Rendered using Apache Maven Fluido Skin 1.9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
-    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
+    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.9.2" />
     <title>Apache Jackrabbit &#x2013; Jackrabbit Text Extractors</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.11.1.min.css" />
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.9.min.css" />
     <link rel="stylesheet" href="../css/site.css" />
     <link rel="stylesheet" href="../css/print.css" media="print" />
-    <script src="../js/apache-maven-fluido-1.11.1.min.js"></script>
-
-    <!-- Matomo -->
-    <script>
-        var _paq = window._paq = window._paq || [];
-                _paq.push(['disableCookies']);
-                    _paq.push(['trackPageView']);
-                    _paq.push(['enableLinkTracking']);
-        
-        (function() {
-            var u="https://analytics.apache.org";
-            _paq.push(['setTrackerUrl', u+'/matomo.php']);
-            _paq.push(['setSiteId', '4']);
-            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-            g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
-        })();
-    </script>
-    <!-- End Matomo Code -->
+    <script src="../js/apache-maven-fluido-1.9.min.js"></script>
+<!-- Matomo -->
+<script>
+  var _paq = window._paq = window._paq || [];
+  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
+  /* We explicitly disable cookie tracking to avoid privacy issues */
+  _paq.push(['disableCookies']);
+  _paq.push(['trackPageView']);
+  _paq.push(['enableLinkTracking']);
+  (function() {
+    var u="https://matomo.privacy.apache.org/";
+    _paq.push(['setTrackerUrl', u+'matomo.php']);
+    _paq.push(['setSiteId', '4']);
+    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+  })();
+</script>
+<!-- End Matomo Code -->
   </head>
   <body class="topBarEnabled">
-    <a class="github-fork-ribbon right-top" href="https://github.com/apache/jackrabbit" data-ribbon="Fork me on GitHub" title="Fork me on GitHub">Fork me on GitHub</a>
+    <a href="https://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>
     <header id="topbar" class="navbar navbar-fixed-top ">
       <div class="navbar-inner">
         <div class="container-fluid">
@@ -47,7 +49,7 @@
 </a>
             <ul class="nav">
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Apache Jackrabbit <b class="caret"></b></a>
+        <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>
@@ -58,7 +60,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
+        <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>
@@ -73,7 +75,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <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>
@@ -88,7 +90,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
         <ul class="dropdown-menu">
             <li><a href="https://www.apache.org/foundation/how-it-works.html" title="Introduction">Introduction</a></li>
             <li><a href="https://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
@@ -103,7 +105,7 @@
     <div class="container-fluid">
       <header>
         <div id="banner">
-          <div class="pull-left"><div id="bannerLeft"><h1>Apache Jackrabbit Site</h1>
+          <div class="pull-left"><div id="bannerLeft"><h2>Apache Jackrabbit Site</h2>
 </div>
 </div>
           <div class="pull-right"></div>
@@ -112,7 +114,7 @@
 
         <div id="breadcrumbs">
           <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2022-10-16</li>
+        <li id="publishDate">Last Published: 2022-05-12</li>
           </ul>
         </div>
       </header>
@@ -157,6 +159,7 @@
   </ul>
           </nav>
           <div class="well sidebar-nav">
+            <hr />
             <div id="poweredBy">
               <div class="clear"></div>
               <div class="clear"></div>
@@ -183,9 +186,7 @@
    limitations under the License.
 -->
 <h1>Jackrabbit Text Extractors</h1>
-<p>This is the Text Extractors component of the Apache Jackrabbit project.
-This component contains extractor classes that allow Jackrabbit to extract
-text content from binary properties for full text indexing.</p><section>
+<p>This is the Text Extractors component of the Apache Jackrabbit project. This component contains extractor classes that allow Jackrabbit to extract text content from binary properties for full text indexing.</p><section>
 <h2><a name="Supported_document_formats"></a>Supported document formats</h2>
 <p>The following document formats and MIME types are currently supported:</p>
 <ul>
@@ -250,11 +251,8 @@ text content from binary properties for
 <p>To use these text extractors with the Jackrabbit Core:</p>
 <ol style="list-style-type: decimal">
 
-<li>add the jackrabbit-text-extractors jar file and the dependencies defined
-in the Maven POM in the Jackrabbit classpath, and</li>
-<li>add the fully qualified class names listed above in the
-&#x201c;textFilterClasses&#x201d; parameter of the &#x201c;SearchIndex&#x201d; configuration element of
-a Jackrabbit workspace configuration file (workspace.xml).</li>
+<li>add the jackrabbit-text-extractors jar file and the dependencies defined in the Maven POM in the Jackrabbit classpath, and</li>
+<li>add the fully qualified class names listed above in the &#x201c;textFilterClasses&#x201d; parameter of the &#x201c;SearchIndex&#x201d; configuration element of a Jackrabbit workspace configuration file (workspace.xml).</li>
 </ol></section>
         </main>
       </div>
@@ -267,12 +265,10 @@ a Jackrabbit workspace configuration fil
 <a href="https://www.apache.org/">The Apache Software Foundation</a> &vert; <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a>
 </p>
         </div>
-      </div>
+    <div id="ohloh" class="pull-right">
+      <script src="https://www.ohloh.net/p/jackrabbit/widgets/project_users_logo.js"></script>
+    </div>
+        </div>
     </footer>
-<script>
-	if(anchors) {
-	  anchors.add();
-	}
-</script>
   </body>
 </html>
\ No newline at end of file

Modified: jackrabbit/site/live/jcr/components/jackrabbit-web-application.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/jcr/components/jackrabbit-web-application.html?rev=1905958&r1=1905957&r2=1905958&view=diff
==============================================================================
--- jackrabbit/site/live/jcr/components/jackrabbit-web-application.html (original)
+++ jackrabbit/site/live/jcr/components/jackrabbit-web-application.html Tue Dec 13 13:11:12 2022
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src\site\markdown/components\jackrabbit-web-application.md at 2022-10-16
+ | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src\site\markdown/components\jackrabbit-web-application.md at 2022-12-13
  | Rendered using Apache Maven Fluido Skin 1.11.1
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
@@ -112,7 +112,7 @@
 
         <div id="breadcrumbs">
           <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2022-10-16</li>
+        <li id="publishDate">Last Published: 2022-12-13</li>
           </ul>
         </div>
       </header>

Modified: jackrabbit/site/live/jcr/components/jackrabbit-webdav-library.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/jcr/components/jackrabbit-webdav-library.html?rev=1905958&r1=1905957&r2=1905958&view=diff
==============================================================================
--- jackrabbit/site/live/jcr/components/jackrabbit-webdav-library.html (original)
+++ jackrabbit/site/live/jcr/components/jackrabbit-webdav-library.html Tue Dec 13 13:11:12 2022
@@ -1,40 +1,42 @@
 <!DOCTYPE html>
-
-
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src\site\markdown/components\jackrabbit-webdav-library.md at 2022-10-16
- | Rendered using Apache Maven Fluido Skin 1.11.1
+ | Generated by Apache Maven Doxia Site Renderer 1.9.2 from src\site\markdown/components\jackrabbit-webdav-library.md at 2022-05-12
+ | Rendered using Apache Maven Fluido Skin 1.9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
-    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
+    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.9.2" />
     <title>Apache Jackrabbit &#x2013; Jackrabbit WebDAV Library</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.11.1.min.css" />
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.9.min.css" />
     <link rel="stylesheet" href="../css/site.css" />
     <link rel="stylesheet" href="../css/print.css" media="print" />
-    <script src="../js/apache-maven-fluido-1.11.1.min.js"></script>
-
-    <!-- Matomo -->
-    <script>
-        var _paq = window._paq = window._paq || [];
-                _paq.push(['disableCookies']);
-                    _paq.push(['trackPageView']);
-                    _paq.push(['enableLinkTracking']);
-        
-        (function() {
-            var u="https://analytics.apache.org";
-            _paq.push(['setTrackerUrl', u+'/matomo.php']);
-            _paq.push(['setSiteId', '4']);
-            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-            g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
-        })();
-    </script>
-    <!-- End Matomo Code -->
+    <script src="../js/apache-maven-fluido-1.9.min.js"></script>
+<!-- Matomo -->
+<script>
+  var _paq = window._paq = window._paq || [];
+  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
+  /* We explicitly disable cookie tracking to avoid privacy issues */
+  _paq.push(['disableCookies']);
+  _paq.push(['trackPageView']);
+  _paq.push(['enableLinkTracking']);
+  (function() {
+    var u="https://matomo.privacy.apache.org/";
+    _paq.push(['setTrackerUrl', u+'matomo.php']);
+    _paq.push(['setSiteId', '4']);
+    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+  })();
+</script>
+<!-- End Matomo Code -->
   </head>
   <body class="topBarEnabled">
-    <a class="github-fork-ribbon right-top" href="https://github.com/apache/jackrabbit" data-ribbon="Fork me on GitHub" title="Fork me on GitHub">Fork me on GitHub</a>
+    <a href="https://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>
     <header id="topbar" class="navbar navbar-fixed-top ">
       <div class="navbar-inner">
         <div class="container-fluid">
@@ -47,7 +49,7 @@
 </a>
             <ul class="nav">
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Apache Jackrabbit <b class="caret"></b></a>
+        <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>
@@ -58,7 +60,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
+        <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>
@@ -73,7 +75,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <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>
@@ -88,7 +90,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
         <ul class="dropdown-menu">
             <li><a href="https://www.apache.org/foundation/how-it-works.html" title="Introduction">Introduction</a></li>
             <li><a href="https://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
@@ -103,7 +105,7 @@
     <div class="container-fluid">
       <header>
         <div id="banner">
-          <div class="pull-left"><div id="bannerLeft"><h1>Apache Jackrabbit Site</h1>
+          <div class="pull-left"><div id="bannerLeft"><h2>Apache Jackrabbit Site</h2>
 </div>
 </div>
           <div class="pull-right"></div>
@@ -112,7 +114,7 @@
 
         <div id="breadcrumbs">
           <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2022-10-16</li>
+        <li id="publishDate">Last Published: 2022-05-12</li>
           </ul>
         </div>
       </header>
@@ -157,6 +159,7 @@
   </ul>
           </nav>
           <div class="well sidebar-nav">
+            <hr />
             <div id="poweredBy">
               <div class="clear"></div>
               <div class="clear"></div>
@@ -183,9 +186,7 @@
    limitations under the License.
 -->
 <h1>Jackrabbit WebDAV Library</h1>
-<p>This is the WebDAV Library component of the Apache Jackrabbit project. This
-component provides interfaces and common utility classes used for building
-a WebDAV server or client.</p>
+<p>This is the WebDAV Library component of the Apache Jackrabbit project. This component provides interfaces and common utility classes used for building a WebDAV server or client.</p>
 <p>The following RFCs have been integrated:</p>
 <ul>
 
@@ -213,12 +214,10 @@ a WebDAV server or client.</p>
 <a href="https://www.apache.org/">The Apache Software Foundation</a> &vert; <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a>
 </p>
         </div>
-      </div>
+    <div id="ohloh" class="pull-right">
+      <script src="https://www.ohloh.net/p/jackrabbit/widgets/project_users_logo.js"></script>
+    </div>
+        </div>
     </footer>
-<script>
-	if(anchors) {
-	  anchors.add();
-	}
-</script>
   </body>
 </html>
\ No newline at end of file

Modified: jackrabbit/site/live/jcr/concurrency-control.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/jcr/concurrency-control.html?rev=1905958&r1=1905957&r2=1905958&view=diff
==============================================================================
--- jackrabbit/site/live/jcr/concurrency-control.html (original)
+++ jackrabbit/site/live/jcr/concurrency-control.html Tue Dec 13 13:11:12 2022
@@ -1,40 +1,42 @@
 <!DOCTYPE html>
-
-
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src\site\markdown/concurrency-control.md at 2022-10-16
- | Rendered using Apache Maven Fluido Skin 1.11.1
+ | Generated by Apache Maven Doxia Site Renderer 1.9.2 from src\site\markdown/concurrency-control.md at 2022-05-12
+ | Rendered using Apache Maven Fluido Skin 1.9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
-    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
+    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.9.2" />
     <title>Apache Jackrabbit &#x2013; Concurrency control</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.11.1.min.css" />
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.9.min.css" />
     <link rel="stylesheet" href="./css/site.css" />
     <link rel="stylesheet" href="./css/print.css" media="print" />
-    <script src="./js/apache-maven-fluido-1.11.1.min.js"></script>
-
-    <!-- Matomo -->
-    <script>
-        var _paq = window._paq = window._paq || [];
-                _paq.push(['disableCookies']);
-                    _paq.push(['trackPageView']);
-                    _paq.push(['enableLinkTracking']);
-        
-        (function() {
-            var u="https://analytics.apache.org";
-            _paq.push(['setTrackerUrl', u+'/matomo.php']);
-            _paq.push(['setSiteId', '4']);
-            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-            g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
-        })();
-    </script>
-    <!-- End Matomo Code -->
+    <script src="./js/apache-maven-fluido-1.9.min.js"></script>
+<!-- Matomo -->
+<script>
+  var _paq = window._paq = window._paq || [];
+  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
+  /* We explicitly disable cookie tracking to avoid privacy issues */
+  _paq.push(['disableCookies']);
+  _paq.push(['trackPageView']);
+  _paq.push(['enableLinkTracking']);
+  (function() {
+    var u="https://matomo.privacy.apache.org/";
+    _paq.push(['setTrackerUrl', u+'matomo.php']);
+    _paq.push(['setSiteId', '4']);
+    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+  })();
+</script>
+<!-- End Matomo Code -->
   </head>
   <body class="topBarEnabled">
-    <a class="github-fork-ribbon right-top" href="https://github.com/apache/jackrabbit" data-ribbon="Fork me on GitHub" title="Fork me on GitHub">Fork me on GitHub</a>
+    <a href="https://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>
     <header id="topbar" class="navbar navbar-fixed-top ">
       <div class="navbar-inner">
         <div class="container-fluid">
@@ -47,7 +49,7 @@
 </a>
             <ul class="nav">
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Apache Jackrabbit <b class="caret"></b></a>
+        <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>
@@ -58,7 +60,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
+        <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>
@@ -73,7 +75,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <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>
@@ -88,7 +90,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
         <ul class="dropdown-menu">
             <li><a href="https://www.apache.org/foundation/how-it-works.html" title="Introduction">Introduction</a></li>
             <li><a href="https://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
@@ -103,7 +105,7 @@
     <div class="container-fluid">
       <header>
         <div id="banner">
-          <div class="pull-left"><div id="bannerLeft"><h1>Apache Jackrabbit Site</h1>
+          <div class="pull-left"><div id="bannerLeft"><h2>Apache Jackrabbit Site</h2>
 </div>
 </div>
           <div class="pull-right"></div>
@@ -112,7 +114,7 @@
 
         <div id="breadcrumbs">
           <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2022-10-16</li>
+        <li id="publishDate">Last Published: 2022-05-12</li>
           </ul>
         </div>
       </header>
@@ -157,6 +159,7 @@
   </ul>
           </nav>
           <div class="well sidebar-nav">
+            <hr />
             <div id="poweredBy">
               <div class="clear"></div>
               <div class="clear"></div>
@@ -183,20 +186,12 @@
    limitations under the License.
 -->
 <h1>Concurrency control</h1>
-<p>The internal concurrency model in Apache Jackrabbit is fairly complex and a
-number of deadlock issues have been reported and fixed over the Jackrabbit
-1.x release cycle. This document is the result of a design and code review
-targeted at proactively preventing other similar issues.</p>
-<p>This document is about the internal concurrency and synchronization model
-in Jackrabbit, <i>not</i> about the JCR locking feature. Note that the review
-that led to this document targeted concurrency control at an architectural
-level and did not focus much on issues like thread-safety of individual
-classes or components.</p>
+<p>The internal concurrency model in Apache Jackrabbit is fairly complex and a number of deadlock issues have been reported and fixed over the Jackrabbit 1.x release cycle. This document is the result of a design and code review targeted at proactively preventing other similar issues.</p>
+<p>This document is about the internal concurrency and synchronization model in Jackrabbit, <i>not</i> about the JCR locking feature. Note that the review that led to this document targeted concurrency control at an architectural level and did not focus much on issues like thread-safety of individual classes or components.</p>
 <p>This review is based on Jackrabbit version 1.5 in default configuration.</p><section>
 <h2><a name="Architectural_background"></a>Architectural background</h2>
 <p><img src="concurrency-control-arch.jpg" alt="Architecture" /></p>
-<p>In terms of concurrency control, the Jackrabbit
-architecture can roughly be divided to five main layers:</p>
+<p>In terms of concurrency control, the Jackrabbit architecture can roughly be divided to five main layers:</p>
 <ol style="list-style-type: decimal">
 
 <li>Cluster</li>
@@ -205,130 +200,37 @@ architecture can roughly be divided to f
 <li>Session</li>
 <li>Transaction</li>
 </ol>
-<p>The clustering layer takes care of synchronizing changes across one or more
-cluster nodes that are each treated as individual repositories that happen
-to share their content. Concurrency control across different cluster nodes
-is achieved using a single write lock that a cluster node is required to
-acquire before it can commit any changes to the shared state. On the other
-hand all cluster nodes can read the shared content in parallel with no
-explicit synchronization. Note that since the cluster nodes only share a
-single lock, a deadlock can not occur between the locks in one node and the
-ones in another. A single deadlocked node can still potentially block
-writes to the entire cluster, but the clustering feature can not add any
-new deadlock scenarios if each node would be deadlock-free by itself.</p>
-<p>The repository layer takes care of all global repository state like the
-node type registry and the version storage. Instead of a single global
-repository lock, all the repository-wide components have their own
-synchronization mechanisms. The most notable component from a concurrency
-control point of view is the version storage, that actually contains two
-locking mechanisms; one in VersionManagerImpl for high level versioning
-operations and one in the underlying SharedItemStateManager for controlling
-access to the underlying persistence mechanism.</p>
-<p>A repository consists of one or more workspaces that contain the normal
-content trees of the repository. Each workspace consists of a few
-components like the persistence mechanism and the search index. The
-persistence mechanism is built from a SharedItemStateManager that controls
-all item operations and a PersistenceManager that persists items in
-permanent storage. Most persistence managers use Java synchronization or
-some other locking mechanism for concurrency control, but since they
-typically don't interact much with other parts of the repository they are
-not that critical from a global concurrency perspective. On the other hand,
-the SharedItemStateManager that uses a read-write lock is a key element
-especially given the way it interacts with the repository-wide version
-store. Note that since Jackrabbit 1.4 it has been possible to configure
-locking strategy of the SharedItemStateManager to use a more fine-grained
-set of locks to allow concurrent write access to different parts of the
-content tree. This review focuses on the default case of having just a
-single SharedItemStateManager lock, but from a locking perspective the more
-fine-grained case is roughly equivalent to having more workspaces and thus
-the results of this review should still apply.</p>
-<p>Each workspace can be accessed by zero or more JCR sessions. Each session
-contains a transient space that keeps track of all unsaved changes in that
-session. Since the transient space is local to a session and since a
-session should only be accessed by one thread at a time, there are few
-concurrency concerns associated with the use of sessions. However, note
-that the thread-safety requirements of sessions are in many cases not
-explicitly enforced by Jackrabbit, so a client that intentionally or
-accidentally uses a single session from multiple concurrent threads may
-well end up corrupting the internal state of the session.</p>
-<p>Transactions are handled in Jackrabbit by wrapping all item operations
-(saved transient changes and direct workspace updates, as well as
-versioning and locking operations) into a sort of a larger transient space
-that gets persisted only when the transaction is committed. There is no
-&#x201c;transaction lock&#x201d; in Jackrabbit, but transaction support still
-fundamentally changes Jackrabbit concurrency control as it basically
-replaces all write operations (and related locking) with the larger commit
-operation. This transaction mode is only activated when a session is within
-the context of an XA transaction.</p></section><section>
+<p>The clustering layer takes care of synchronizing changes across one or more cluster nodes that are each treated as individual repositories that happen to share their content. Concurrency control across different cluster nodes is achieved using a single write lock that a cluster node is required to acquire before it can commit any changes to the shared state. On the other hand all cluster nodes can read the shared content in parallel with no explicit synchronization. Note that since the cluster nodes only share a single lock, a deadlock can not occur between the locks in one node and the ones in another. A single deadlocked node can still potentially block writes to the entire cluster, but the clustering feature can not add any new deadlock scenarios if each node would be deadlock-free by itself.</p>
+<p>The repository layer takes care of all global repository state like the node type registry and the version storage. Instead of a single global repository lock, all the repository-wide components have their own synchronization mechanisms. The most notable component from a concurrency control point of view is the version storage, that actually contains two locking mechanisms; one in VersionManagerImpl for high level versioning operations and one in the underlying SharedItemStateManager for controlling access to the underlying persistence mechanism.</p>
+<p>A repository consists of one or more workspaces that contain the normal content trees of the repository. Each workspace consists of a few components like the persistence mechanism and the search index. The persistence mechanism is built from a SharedItemStateManager that controls all item operations and a PersistenceManager that persists items in permanent storage. Most persistence managers use Java synchronization or some other locking mechanism for concurrency control, but since they typically don&#x2019;t interact much with other parts of the repository they are not that critical from a global concurrency perspective. On the other hand, the SharedItemStateManager that uses a read-write lock is a key element especially given the way it interacts with the repository-wide version store. Note that since Jackrabbit 1.4 it has been possible to configure locking strategy of the SharedItemStateManager to use a more fine-grained set of locks to allow concurrent write access to differen
 t parts of the content tree. This review focuses on the default case of having just a single SharedItemStateManager lock, but from a locking perspective the more fine-grained case is roughly equivalent to having more workspaces and thus the results of this review should still apply.</p>
+<p>Each workspace can be accessed by zero or more JCR sessions. Each session contains a transient space that keeps track of all unsaved changes in that session. Since the transient space is local to a session and since a session should only be accessed by one thread at a time, there are few concurrency concerns associated with the use of sessions. However, note that the thread-safety requirements of sessions are in many cases not explicitly enforced by Jackrabbit, so a client that intentionally or accidentally uses a single session from multiple concurrent threads may well end up corrupting the internal state of the session.</p>
+<p>Transactions are handled in Jackrabbit by wrapping all item operations (saved transient changes and direct workspace updates, as well as versioning and locking operations) into a sort of a larger transient space that gets persisted only when the transaction is committed. There is no &#x201c;transaction lock&#x201d; in Jackrabbit, but transaction support still fundamentally changes Jackrabbit concurrency control as it basically replaces all write operations (and related locking) with the larger commit operation. This transaction mode is only activated when a session is within the context of an XA transaction.</p></section><section>
 <h2><a name="Main_synchronization_mechanisms"></a>Main synchronization mechanisms</h2>
 <p><img src="concurrency-control-lock.jpg" alt="Lock" /></p>
-<p>The main synchronization mechanisms in Jackrabbit
-are the read-write locks in the SharedItemStateManager and
-VersionManagerImpl classes. Other components also have concurrency control
-features, for example the LockManagerImpl class (used for handling JCR
-locks) uses a reentrant lock and the NodeTypeRegistry class relies on Java
-synchronization. This review focuses on just the two main components as
-those are by far the most actively used and the ones that could potentially
-block all access to repository content in case of a deadlock. The three
-main locks to be concerned about are:</p>
+<p>The main synchronization mechanisms in Jackrabbit are the read-write locks in the SharedItemStateManager and VersionManagerImpl classes. Other components also have concurrency control features, for example the LockManagerImpl class (used for handling JCR locks) uses a reentrant lock and the NodeTypeRegistry class relies on Java synchronization. This review focuses on just the two main components as those are by far the most actively used and the ones that could potentially block all access to repository content in case of a deadlock. The three main locks to be concerned about are:</p>
 <ul>
 
 <li>&#x201c;Workspace lock&#x201d;, the read-write lock of the per-workspace SharedItemStateManager</li>
 <li>&#x201c;Versioning lock&#x201d;, the read-write lock of the repository-wide VersionManagerImpl</li>
 <li>&#x201c;Version store lock&#x201d;, the read-write lock of the SharedItemStateManager associated with the version manager</li>
 </ul>
-<p>Each of these locks can be locked exclusively for write access or
-inclusively for read access. In other words, any number of concurrent
-readers can keep the lock, but any single writer will block out all other
-readers and writers.</p>
-<p>As noted in the section above, the workspace locks may also be collections
-of more finely grained locks, but this review concentrates on the default
-case. Note also that each workspace has it's own lock, so even if one
-workspace is exclusively locked, other workspaces can still be accessed.</p></section><section>
+<p>Each of these locks can be locked exclusively for write access or inclusively for read access. In other words, any number of concurrent readers can keep the lock, but any single writer will block out all other readers and writers.</p>
+<p>As noted in the section above, the workspace locks may also be collections of more finely grained locks, but this review concentrates on the default case. Note also that each workspace has it&#x2019;s own lock, so even if one workspace is exclusively locked, other workspaces can still be accessed.</p></section><section>
 <h2><a name="Conditions_for_deadlocks"></a>Conditions for deadlocks</h2>
-<p>A deadlock can only occur if the holder of one lock tries to acquire
-another lock and there is another thread (or a series of other threads)
-that tries to do the reverse. This situation can only arise if a) locks are
-acquired in a nested sequence, b) different threads can acquire the nested
-locks in a different order, and c) at least two exclusive locks are being
-acquired.</p>
-<p>Most operations in Jackrabbit avoid deadlocks in one of the following three
-ways:</p>
+<p>A deadlock can only occur if the holder of one lock tries to acquire another lock and there is another thread (or a series of other threads) that tries to do the reverse. This situation can only arise if a) locks are acquired in a nested sequence, b) different threads can acquire the nested locks in a different order, and c) at least two exclusive locks are being acquired.</p>
+<p>Most operations in Jackrabbit avoid deadlocks in one of the following three ways:</p>
 <ul>
 
-<li>Only a single lock is held at a time, breaking condition a. This case
-covers most of the code doing sanity checks and other preparing work
-associated with many operations.</li>
-<li>In case of nested locks, the code guarded by the inner lock never
-tries to acquire another lock, breaking condition b. This case covers for
-example the numerous calls to the underlying persistence managers that
-typically have their own synchronization mechanism but never call out to
-other Jackrabbit components except perhaps the namespace registry that also
-satisfies this condition.</li>
-<li>None of the nested locks are exclusive. This covers all read
-operations in Jackrabbit, so a deadlock can never occur if all clients only
-read from the repository.</li>
+<li>Only a single lock is held at a time, breaking condition a. This case covers most of the code doing sanity checks and other preparing work associated with many operations.</li>
+<li>In case of nested locks, the code guarded by the inner lock never tries to acquire another lock, breaking condition b. This case covers for example the numerous calls to the underlying persistence managers that typically have their own synchronization mechanism but never call out to other Jackrabbit components except perhaps the namespace registry that also satisfies this condition.</li>
+<li>None of the nested locks are exclusive. This covers all read operations in Jackrabbit, so a deadlock can never occur if all clients only read from the repository.</li>
 </ul>
-<p>The potentially troublesome cases are two or more concurrent write
-operations with nested locks, or a write operation with two nested
-exclusive locks running concurrently with read operations with nested
-locks. See below for the results of the code review that tried to identify
-and clear such cases. The acquired write locks are marked in bold to make
-it easy to spot potential problems.</p></section><section>
+<p>The potentially troublesome cases are two or more concurrent write operations with nested locks, or a write operation with two nested exclusive locks running concurrently with read operations with nested locks. See below for the results of the code review that tried to identify and clear such cases. The acquired write locks are marked in bold to make it easy to spot potential problems.</p></section><section>
 <h2><a name="Code_review"></a>Code review</h2>
-<p>This section contains the results of a code review whose purpose was to
-identify the order and nesting of the locks acquired by many common
-operations in Jackrabbit. The results of the review were compared to the
-above conditions for deadlock.</p>
-<p>Note that the descriptions of the write operations below assume
-non-transactional context. See the last subsection for the behaviour in
-transactional environments.</p><section>
+<p>This section contains the results of a code review whose purpose was to identify the order and nesting of the locks acquired by many common operations in Jackrabbit. The results of the review were compared to the above conditions for deadlock.</p>
+<p>Note that the descriptions of the write operations below assume non-transactional context. See the last subsection for the behaviour in transactional environments.</p><section>
 <h3><a name="Normal_read_access"></a>Normal read access</h3>
-<p>Read access to the workspace typically only requires a read lock on the
-SharedItemStateManager of that workspace, but since the version store is
-mapped to the virtual <code>/jcr:system/jcr:versionStorage</code> inside the repository,
-there are cases where also the read lock of the version store needs to be
-acquired.</p>
+<p>Read access to the workspace typically only requires a read lock on the SharedItemStateManager of that workspace, but since the version store is mapped to the virtual <code>/jcr:system/jcr:versionStorage</code> inside the repository, there are cases where also the read lock of the version store needs to be acquired.</p>
 <ol style="list-style-type: decimal">
 
 <li>Workspace read lock, for reading normal node content
@@ -338,12 +240,9 @@ acquired.</p>
 </ol>
 </li>
 </ol>
-<p>This nested lock is potentially unsafe in a transactional context, see the
-subsection on transaction commit below for more details.</p></section><section>
+<p>This nested lock is potentially unsafe in a transactional context, see the subsection on transaction commit below for more details.</p></section><section>
 <h3><a name="Versioning_read_access"></a>Versioning read access</h3>
-<p>Some version accesses are handled directly through the version manager
-instead of looking through the <code>/jcr:system/jcr:versionStorage</code> tree. Such
-accessed are guarded with the VersionManagerImpl read lock.</p>
+<p>Some version accesses are handled directly through the version manager instead of looking through the <code>/jcr:system/jcr:versionStorage</code> tree. Such accessed are guarded with the VersionManagerImpl read lock.</p>
 <ol style="list-style-type: decimal">
 
 <li>Versioning read lock, for accessing version information
@@ -353,22 +252,11 @@ accessed are guarded with the VersionMan
 </ol>
 </li>
 </ol>
-<p>The nested lock here is safe as the version store lock never covers code
-that tries to acquire the versioning lock.</p></section><section>
+<p>The nested lock here is safe as the version store lock never covers code that tries to acquire the versioning lock.</p></section><section>
 <h3><a name="Transient_changes"></a>Transient changes</h3>
-<p>All transient changes like those created by <code>Node.addNode()</code> or
-<code>Session.move()</code> are stored in the session-local transient space without
-needing any synchronization except for the read locks used for accessing
-the underlying workspace state. A write lock is only needed when the
-accumulated changes are being persisted using the <code>save()</code> call described
-below.</p></section><section>
+<p>All transient changes like those created by <code>Node.addNode()</code> or <code>Session.move()</code> are stored in the session-local transient space without needing any synchronization except for the read locks used for accessing the underlying workspace state. A write lock is only needed when the accumulated changes are being persisted using the <code>save()</code> call described below.</p></section><section>
 <h3><a name="Save"></a>Save</h3>
-<p>The ItemImpl.save() method (that SessionImpl.save() also calls) collects
-all current transient changes to a single change log that is then persisted
-as an atomic update. Any new versionable nodes will cause empty version
-histories to be created in the version store. Note that ItemImpl.save() is
-synchronized on the current session, enforcing the rule that no two threads
-should be concurrently using the same session.</p>
+<p>The ItemImpl.save() method (that SessionImpl.save() also calls) collects all current transient changes to a single change log that is then persisted as an atomic update. Any new versionable nodes will cause empty version histories to be created in the version store. Note that ItemImpl.save() is synchronized on the current session, enforcing the rule that no two threads should be concurrently using the same session.</p>
 <ol style="list-style-type: decimal">
 
 <li>Workspace read lock, for sanity checks and other preliminary work
@@ -393,29 +281,17 @@ should be concurrently using the same se
 </ol>
 </li>
 </ol>
-<p>Many of the other write operations below call <code>ItemImpl.save()</code> internally to
-persist changes in the current workspace. However, in the descriptions I've
-only included the last &#x201c;Workspace write lock&#x201d; branch (with the &#x201c;Version
-store write lock&#x201d; excluded if it's clear that no back-references need to be
-updated) as the operations are guaranteed to never contain cases where new
-version histories would need to be created.</p>
-<p>Here we have three cases of nested locks involving one or more exclusive
-locks:</p>
+<p>Many of the other write operations below call <code>ItemImpl.save()</code> internally to persist changes in the current workspace. However, in the descriptions I&#x2019;ve only included the last &#x201c;Workspace write lock&#x201d; branch (with the &#x201c;Version store write lock&#x201d; excluded if it&#x2019;s clear that no back-references need to be updated) as the operations are guaranteed to never contain cases where new version histories would need to be created.</p>
+<p>Here we have three cases of nested locks involving one or more exclusive locks:</p>
 <ul>
 
 <li>Versioning write lock -&gt; Version store write lock</li>
 <li>Workspace write lock -&gt; Version store read lock</li>
 <li>Workspace write lock -&gt; Version store write lock</li>
 </ul>
-<p>All these nested locks are safe in non-transactional context since the
-version store lock never covers code that tries to acquire one of the other
-locks. The same is true for the first case also in transactional context,
-but see the transaction commit subsection below for a discussion of how the
-other two cases are different with transactions.</p></section><section>
+<p>All these nested locks are safe in non-transactional context since the version store lock never covers code that tries to acquire one of the other locks. The same is true for the first case also in transactional context, but see the transaction commit subsection below for a discussion of how the other two cases are different with transactions.</p></section><section>
 <h3><a name="Merge_and_update"></a>Merge and update</h3>
-<p>The <code>Node.merge()</code> and <code>Node.update()</code> methods both call
-<code>NodeImpl.internalMerge()</code> that acquires a new session on the source
-workspace and copies relevant content to the current workspace.</p>
+<p>The <code>Node.merge()</code> and <code>Node.update()</code> methods both call <code>NodeImpl.internalMerge()</code> that acquires a new session on the source workspace and copies relevant content to the current workspace.</p>
 <ol style="list-style-type: decimal">
 
 <li>Multiple non-overlapping instances of
@@ -435,12 +311,7 @@ workspace and copies relevant content to
 </ol>
 <p>The nested locks above are discussed in the section on the save operation.</p></section><section>
 <h3><a name="Copy.2C_clone_and_move"></a>Copy, clone and move</h3>
-<p>The various <code>copy()</code>, <code>clone()</code> and <code>move()</code> methods in WorkspaceImpl use the
-similarly called methods in BatchedItemOperations to perform batch
-operations within a single workspace or across two workspaces. From a
-synchronization perspective these operations are much like the merge and
-update operations above, the difference is mostly that the source workspace
-may be the same as the current workspace.</p>
+<p>The various <code>copy()</code>, <code>clone()</code> and <code>move()</code> methods in WorkspaceImpl use the similarly called methods in BatchedItemOperations to perform batch operations within a single workspace or across two workspaces. From a synchronization perspective these operations are much like the merge and update operations above, the difference is mostly that the source workspace may be the same as the current workspace.</p>
 <ol style="list-style-type: decimal">
 
 <li>Multiple non-overlapping instances of
@@ -460,9 +331,7 @@ may be the same as the current workspace
 </ol>
 <p>The nested locks above are discussed in the section on the save operation.</p></section><section>
 <h3><a name="Checkin"></a>Checkin</h3>
-<p>The <code>NodeImpl.checkin()</code> method first creates a new version of the node in
-the shared version store and then updates the appropriate mix:versionable
-properties of the node.</p>
+<p>The <code>NodeImpl.checkin()</code> method first creates a new version of the node in the shared version store and then updates the appropriate mix:versionable properties of the node.</p>
 <ol style="list-style-type: decimal">
 
 <li>Workspace read lock, for sanity checks and other preliminary work</li>
@@ -487,16 +356,10 @@ properties of the node.</p>
 </ol>
 </li>
 </ol>
-<p>The overlapping lock region above is not troublesome as there are no cases
-where a versioning lock is acquired within the scope of a workspace lock.
-Note that there previously were such cases, but this code review shows that
-all of them have since been solved.</p>
-<p>The nested locks above are discussed in the sections on versioning read
-access and the save operation.</p></section><section>
+<p>The overlapping lock region above is not troublesome as there are no cases where a versioning lock is acquired within the scope of a workspace lock. Note that there previously were such cases, but this code review shows that all of them have since been solved.</p>
+<p>The nested locks above are discussed in the sections on versioning read access and the save operation.</p></section><section>
 <h3><a name="Checkout"></a>Checkout</h3>
-<p>The <code>NodeImpl.checkout()</code> method simply does some sanity checks and updates
-the versioning metadata of the node to reflect the changed state. No access
-to the shared version store is needed.</p>
+<p>The <code>NodeImpl.checkout()</code> method simply does some sanity checks and updates the versioning metadata of the node to reflect the changed state. No access to the shared version store is needed.</p>
 <ol style="list-style-type: decimal">
 
 <li>Workspace read lock, for sanity checks</li>
@@ -509,10 +372,7 @@ to the shared version store is needed.</
 </ol>
 <p>The nested lock above is discussed in the section on the save operation.</p></section><section>
 <h3><a name="Restore"></a>Restore</h3>
-<p>The various <code>Node.restore()</code> and <code>Workspace.restore()</code> methods all end up
-calling <code>NodeImpl.internalRestore()</code> that copies contents of the selected
-version back to the workspace. Finally the changes are persisted with a
-<code>ItemImpl.save()</code> call.</p>
+<p>The various <code>Node.restore()</code> and <code>Workspace.restore()</code> methods all end up calling <code>NodeImpl.internalRestore()</code> that copies contents of the selected version back to the workspace. Finally the changes are persisted with a <code>ItemImpl.save()</code> call.</p>
 <ol style="list-style-type: decimal">
 
 <li>Multiple non-overlapping instances of:
@@ -533,11 +393,7 @@ version back to the workspace. Finally t
 <p>The nested locks above are discussed in the section on the save operation.</p></section><section>
 <h3><a name="Transaction_commit"></a>Transaction commit</h3>
 <p><img src="concurrency-control-deadlock.jpg" alt="Deadlock" /></p>
-<p>As discussed in the architecture section above,
-a transaction context overrides all the other write operations in favor of
-the two-phase commit driven by the transaction manager. The Jackrabbit part
-of a potentially distributed transaction is coordinated by the
-XASessionImpl class that causes the following locking behavior:</p>
+<p>As discussed in the architecture section above, a transaction context overrides all the other write operations in favor of the two-phase commit driven by the transaction manager. The Jackrabbit part of a potentially distributed transaction is coordinated by the XASessionImpl class that causes the following locking behavior:</p>
 <ol style="list-style-type: decimal">
 
 <li>Versioning <i>write lock</i>, for the entire commit
@@ -552,63 +408,23 @@ XASessionImpl class that causes the foll
 </ol>
 </li>
 </ol>
-<p>The curious ordering of the locks is caused by the way the prepare and
-commit parts of the different transaction components are nested. This
-nesting of the workspace lock within the version store lock is a bit
-troublesome in comparison with the nesting in read operations and
-non-transactional writes where the order of the locks is reverse. The
-nesting order here can not be easily changed as any new versions and
-version histories need to be persisted before workspace content that refers
-to them. Possible solutions could be either to disable or redesign the
-reference checks done in a transactional context, or to relax transaction
-semantics by persisting the version history changes already in the prepare
-phase in which case the version store lock wouldn't need to cover the
-workspace lock. However, even before this issue is fixed, the impact is
-quite limited and can easily be worked around by typical clients.</p>
-<p>In read operations the version store read lock is only acquired after the
-workspace lock if reading content in <code>/jcr:system/jcr:versionStorage</code>.
-Clients that never looks at the <code>/jcr:system/jcr:versionStorage</code> tree and
-uses the JCR API methods like getVersionHistory() to access version
-information will not trigger the potential deadlock case.</p>
-<p>Write operations can only cause a deadlock when both transactional and
-non-transactional writes are performed concurrently against the same
-repository. A repository that is consistently accessed either
-transactionally or non-transactionally will not trigger this deadlock. Note
-that this restriction is workspace-specific, i.e. one workspace can safely
-be written to transactionally even if another workspace is concurrently
-written to non-transactionally.</p></section></section><section>
+<p>The curious ordering of the locks is caused by the way the prepare and commit parts of the different transaction components are nested. This nesting of the workspace lock within the version store lock is a bit troublesome in comparison with the nesting in read operations and non-transactional writes where the order of the locks is reverse. The nesting order here can not be easily changed as any new versions and version histories need to be persisted before workspace content that refers to them. Possible solutions could be either to disable or redesign the reference checks done in a transactional context, or to relax transaction semantics by persisting the version history changes already in the prepare phase in which case the version store lock wouldn&#x2019;t need to cover the workspace lock. However, even before this issue is fixed, the impact is quite limited and can easily be worked around by typical clients.</p>
+<p>In read operations the version store read lock is only acquired after the workspace lock if reading content in <code>/jcr:system/jcr:versionStorage</code>. Clients that never looks at the <code>/jcr:system/jcr:versionStorage</code> tree and uses the JCR API methods like getVersionHistory() to access version information will not trigger the potential deadlock case.</p>
+<p>Write operations can only cause a deadlock when both transactional and non-transactional writes are performed concurrently against the same repository. A repository that is consistently accessed either transactionally or non-transactionally will not trigger this deadlock. Note that this restriction is workspace-specific, i.e. one workspace can safely be written to transactionally even if another workspace is concurrently written to non-transactionally.</p></section></section><section>
 <h2><a name="Summary_and_future_work"></a>Summary and future work</h2>
-<p>This review shows that while the internal locking behaviour in Jackrabbit
-is still far from simple, there aren't any major deadlock scenarios
-remaining. The two issues identified in the review can be easily avoided by
-following these two rules:</p>
+<p>This review shows that while the internal locking behaviour in Jackrabbit is still far from simple, there aren&#x2019;t any major deadlock scenarios remaining. The two issues identified in the review can be easily avoided by following these two rules:</p>
 <ul>
 
-<li>Use the JCR versioning API instead of the
-/jcr:system/jcr:versionStorage tree to access version information</li>
-<li>Don't mix concurrent transactional and non-transactional writes to a
-single workspace</li>
+<li>Use the JCR versioning API instead of the /jcr:system/jcr:versionStorage tree to access version information</li>
+<li>Don&#x2019;t mix concurrent transactional and non-transactional writes to a single workspace</li>
 </ul>
-<p>The transaction commit subsection above outlines some possible solutions to
-make even these workarounds unnecessary.</p>
-<p>The following other potential improvements were identified during the code
-review:</p>
+<p>The transaction commit subsection above outlines some possible solutions to make even these workarounds unnecessary.</p>
+<p>The following other potential improvements were identified during the code review:</p>
 <ul>
 
-<li>Storing the version history back-references in the workspaces that
-contain the references would simplify a lot of code and remove a major
-source of interaction between the workspace and version store when updating
-content. The downside of this change is that removing versions and version
-histories would be much more difficult as all workspaces would need to be
-checked for potential references.</li>
-<li>The current design contains lots of cases where read locks are
-acquired and released multiple times in sequence. This is often caused by
-the need to check the transient space when reading something from the
-repository. It might be useful to extend the workspace read lock to cover
-also all the transient spaces even when the transient spaces would still be
-session-specific.</li>
-<li>Adopting a single global repository lock for all per-repository
-components would simplify lots of code at the expense of some performance.</li>
+<li>Storing the version history back-references in the workspaces that contain the references would simplify a lot of code and remove a major source of interaction between the workspace and version store when updating content. The downside of this change is that removing versions and version histories would be much more difficult as all workspaces would need to be checked for potential references.</li>
+<li>The current design contains lots of cases where read locks are acquired and released multiple times in sequence. This is often caused by the need to check the transient space when reading something from the repository. It might be useful to extend the workspace read lock to cover also all the transient spaces even when the transient spaces would still be session-specific.</li>
+<li>Adopting a single global repository lock for all per-repository components would simplify lots of code at the expense of some performance.</li>
 </ul></section>
         </main>
       </div>
@@ -621,12 +437,10 @@ components would simplify lots of code a
 <a href="https://www.apache.org/">The Apache Software Foundation</a> &vert; <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a>
 </p>
         </div>
-      </div>
+    <div id="ohloh" class="pull-right">
+      <script src="https://www.ohloh.net/p/jackrabbit/widgets/project_users_logo.js"></script>
+    </div>
+        </div>
     </footer>
-<script>
-	if(anchors) {
-	  anchors.add();
-	}
-</script>
   </body>
 </html>
\ No newline at end of file

Modified: jackrabbit/site/live/jcr/continuous-integration.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/jcr/continuous-integration.html?rev=1905958&r1=1905957&r2=1905958&view=diff
==============================================================================
--- jackrabbit/site/live/jcr/continuous-integration.html (original)
+++ jackrabbit/site/live/jcr/continuous-integration.html Tue Dec 13 13:11:12 2022
@@ -1,40 +1,42 @@
 <!DOCTYPE html>
-
-
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src\site\markdown/continuous-integration.md at 2022-10-16
- | Rendered using Apache Maven Fluido Skin 1.11.1
+ | Generated by Apache Maven Doxia Site Renderer 1.9.2 from src\site\markdown/continuous-integration.md at 2022-05-12
+ | Rendered using Apache Maven Fluido Skin 1.9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
-    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
+    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.9.2" />
     <title>Apache Jackrabbit &#x2013; Continuous Integration</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.11.1.min.css" />
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.9.min.css" />
     <link rel="stylesheet" href="./css/site.css" />
     <link rel="stylesheet" href="./css/print.css" media="print" />
-    <script src="./js/apache-maven-fluido-1.11.1.min.js"></script>
-
-    <!-- Matomo -->
-    <script>
-        var _paq = window._paq = window._paq || [];
-                _paq.push(['disableCookies']);
-                    _paq.push(['trackPageView']);
-                    _paq.push(['enableLinkTracking']);
-        
-        (function() {
-            var u="https://analytics.apache.org";
-            _paq.push(['setTrackerUrl', u+'/matomo.php']);
-            _paq.push(['setSiteId', '4']);
-            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-            g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
-        })();
-    </script>
-    <!-- End Matomo Code -->
+    <script src="./js/apache-maven-fluido-1.9.min.js"></script>
+<!-- Matomo -->
+<script>
+  var _paq = window._paq = window._paq || [];
+  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
+  /* We explicitly disable cookie tracking to avoid privacy issues */
+  _paq.push(['disableCookies']);
+  _paq.push(['trackPageView']);
+  _paq.push(['enableLinkTracking']);
+  (function() {
+    var u="https://matomo.privacy.apache.org/";
+    _paq.push(['setTrackerUrl', u+'matomo.php']);
+    _paq.push(['setSiteId', '4']);
+    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+  })();
+</script>
+<!-- End Matomo Code -->
   </head>
   <body class="topBarEnabled">
-    <a class="github-fork-ribbon right-top" href="https://github.com/apache/jackrabbit" data-ribbon="Fork me on GitHub" title="Fork me on GitHub">Fork me on GitHub</a>
+    <a href="https://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>
     <header id="topbar" class="navbar navbar-fixed-top ">
       <div class="navbar-inner">
         <div class="container-fluid">
@@ -47,7 +49,7 @@
 </a>
             <ul class="nav">
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Apache Jackrabbit <b class="caret"></b></a>
+        <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>
@@ -58,7 +60,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
+        <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>
@@ -73,7 +75,7 @@
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <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>
@@ -81,14 +83,14 @@
             <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 title="Continuous Integration">Continuous Integration</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>
         </ul>
       </li>
       <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache Software Foundation <b class="caret"></b></a>
         <ul class="dropdown-menu">
             <li><a href="https://www.apache.org/foundation/how-it-works.html" title="Introduction">Introduction</a></li>
             <li><a href="https://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
@@ -103,7 +105,7 @@
     <div class="container-fluid">
       <header>
         <div id="banner">
-          <div class="pull-left"><div id="bannerLeft"><h1>Apache Jackrabbit Site</h1>
+          <div class="pull-left"><div id="bannerLeft"><h2>Apache Jackrabbit Site</h2>
 </div>
 </div>
           <div class="pull-right"></div>
@@ -112,7 +114,7 @@
 
         <div id="breadcrumbs">
           <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2022-10-16</li>
+        <li id="publishDate">Last Published: 2022-05-12</li>
           </ul>
         </div>
       </header>
@@ -145,7 +147,7 @@
     <li><a href="mailing-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a></li>
     <li><a href="issue-tracker.html" title="Issue Tracker"><span class="none"></span>Issue Tracker</a></li>
     <li><a href="source-repository.html" title="Source Repository"><span class="none"></span>Source Repository</a></li>
-    <li class="active"><a><span class="none"></span>Continuous Integration</a></li>
+    <li class="active"><a href="#"><span class="none"></span>Continuous Integration</a></li>
     <li><a href="website.html" title="Website"><span class="none"></span>Website</a></li>
     <li><a href="creating-releases.html" title="Creating Releases"><span class="none"></span>Creating Releases</a></li>
     <li><a href="supporting-software-attribution.html" title="Attribution"><span class="none"></span>Attribution</a></li>
@@ -157,6 +159,7 @@
   </ul>
           </nav>
           <div class="well sidebar-nav">
+            <hr />
             <div id="poweredBy">
               <div class="clear"></div>
               <div class="clear"></div>
@@ -185,12 +188,8 @@
 <h1>Continuous Integration</h1>
 <p>Apache Jackrabbit uses <a class="externalLink" href="https://www.jenkins.io/">Jenkins</a> for continuous integration builds.</p><section>
 <h2><a name="Build_targets_and_schedule"></a>Build targets and schedule</h2>
-<p>See the <a class="externalLink" href="https://ci-builds.apache.org/job/Jackrabbit/">Jackrabbit page</a>
-on the Jenkins server for the list of configured Jackrabbit builds and
-their current status.</p>
-<p>The builds are configured to daily check the Subversion server for updates
-and to run builds whenever there are changes. Build and test errors are
-reported on the dev@ mailing list.</p></section>
+<p>See the <a class="externalLink" href="https://ci-builds.apache.org/job/Jackrabbit/">Jackrabbit page</a> on the Jenkins server for the list of configured Jackrabbit builds and their current status.</p>
+<p>The builds are configured to daily check the Subversion server for updates and to run builds whenever there are changes. Build and test errors are reported on the dev@ mailing list.</p></section>
         </main>
       </div>
     </div>
@@ -202,12 +201,10 @@ reported on the dev@ mailing list.</p></
 <a href="https://www.apache.org/">The Apache Software Foundation</a> &vert; <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a>
 </p>
         </div>
-      </div>
+    <div id="ohloh" class="pull-right">
+      <script src="https://www.ohloh.net/p/jackrabbit/widgets/project_users_logo.js"></script>
+    </div>
+        </div>
     </footer>
-<script>
-	if(anchors) {
-	  anchors.add();
-	}
-</script>
   </body>
 </html>
\ No newline at end of file

Modified: jackrabbit/site/live/jcr/creating-releases.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/jcr/creating-releases.html?rev=1905958&r1=1905957&r2=1905958&view=diff
==============================================================================
--- jackrabbit/site/live/jcr/creating-releases.html (original)
+++ jackrabbit/site/live/jcr/creating-releases.html Tue Dec 13 13:11:12 2022
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src\site\markdown/creating-releases.md at 2022-12-01
+ | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src\site\markdown/creating-releases.md at 2022-12-13
  | Rendered using Apache Maven Fluido Skin 1.11.1
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
@@ -112,7 +112,7 @@
 
         <div id="breadcrumbs">
           <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2022-12-01</li>
+        <li id="publishDate">Last Published: 2022-12-13</li>
           </ul>
         </div>
       </header>
@@ -246,7 +246,9 @@ useful source of required information: O
 or <a class="externalLink" href="https://issues.apache.org/jira/projects/OAK?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page">Oak Jira</a> page,
 click on the release, then on the &#x201c;Release Notes&#x201d; link on the top.
 Double-check that all version numbers in the updated Release Notes are accurate.
-When done, commit the file.</p>
+If the project release has a <code>project.build.outputTimestamp</code> variable defined in the parent pom, and the release plugin in use does
+not yet support adjusting it upon release, do so now.
+When done, commit the file(s).</p>
 </li>
 <li>
 

Added: jackrabbit/site/live/jcr/css/apache-maven-fluido-1.9.min.css
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/jcr/css/apache-maven-fluido-1.9.min.css?rev=1905958&view=auto
==============================================================================
--- jackrabbit/site/live/jcr/css/apache-maven-fluido-1.9.min.css (added)
+++ jackrabbit/site/live/jcr/css/apache-maven-fluido-1.9.min.css Tue Dec 13 13:11:12 2022
@@ -0,0 +1,17 @@
+/*!
+ * Bootstrap v2.3.2
+ *
+ * Copyright 2013 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world by @mdo and @fat.

[... 11 lines stripped ...]