You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2019/05/20 11:23:20 UTC

svn commit: r1859550 [22/26] - in /jackrabbit/site/live/archive: ./ wiki/ wiki/JCR/ wiki/JCR/attachments/ wiki/JCR/attachments/115513387/ wiki/JCR/attachments/115513390/ wiki/JCR/attachments/115513408/ wiki/JCR/attachments/115513413/ wiki/JCR/attachmen...

Added: jackrabbit/site/live/archive/wiki/JCR/Support-usage-of-JAAS-based-authentication-with-Repository-in-OSGi_115513515.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/Support-usage-of-JAAS-based-authentication-with-Repository-in-OSGi_115513515.html?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/Support-usage-of-JAAS-based-authentication-with-Repository-in-OSGi_115513515.html (added)
+++ jackrabbit/site/live/archive/wiki/JCR/Support-usage-of-JAAS-based-authentication-with-Repository-in-OSGi_115513515.html Mon May 20 11:23:18 2019
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Apache Jackrabbit : Support usage of JAAS based authentication with Repository in OSGi</title>
+        <link rel="stylesheet" href="styles/site.css" type="text/css" />
+        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+
+    <body class="theme-default aui-theme-default">
+        <div id="page">
+            <div id="main" class="aui-page-panel">
+                <div id="main-header">
+                    <div id="breadcrumb-section">
+                        <ol id="breadcrumbs">
+                            <li class="first">
+                                <span><a href="index.html">Apache Jackrabbit</a></span>
+                            </li>
+                                                    <li>
+                                <span><a href="Home_70731.html">Home</a></span>
+                            </li>
+                                                </ol>
+                    </div>
+                    <h1 id="title-heading" class="pagetitle">
+                                                <span id="title-text">
+                            Apache Jackrabbit : Support usage of JAAS based authentication with Repository in OSGi
+                        </span>
+                    </h1>
+                </div>
+
+                <div id="content" class="view">
+                    <div class="page-metadata">
+                        
+        
+    
+        
+    
+        
+        
+            Created by <span class='author'> ASF Infrabot</span> on May 20, 2019
+                        </div>
+                    <div id="main-content" class="wiki-content group">
+                    <p><a href="https://issues.apache.org/jira/browse/FELIX-3705" class="external-link" rel="nofollow">FELIX-3705</a>  simplify JAAS usage in OSGi. It would be nice to leverage this feature for OAK installations deployed in OSGis environments.</p>
+
+
+
+<p>See also <a href="https://issues.apache.org/jira/browse/OAK-696" class="external-link" rel="nofollow">https://issues.apache.org/jira/browse/OAK-696</a></p>
+                    </div>
+
+                    
+                                                      
+                </div>             </div> 
+            <div id="footer" role="contentinfo">
+                <section class="footer-body">
+                    <p>Document generated by Confluence on May 20, 2019 11:11</p>
+                    <div id="footer-logo"><a href="http://www.atlassian.com/">Atlassian</a></div>
+                </section>
+            </div>
+        </div>     </body>
+</html>

Propchange: jackrabbit/site/live/archive/wiki/JCR/Support-usage-of-JAAS-based-authentication-with-Repository-in-OSGi_115513515.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/Support-usage-of-JAAS-based-authentication-with-Repository-in-OSGi_115513515.html
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/Synchronous-Lucene-Property-Indexes_115513516.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/Synchronous-Lucene-Property-Indexes_115513516.html?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/Synchronous-Lucene-Property-Indexes_115513516.html (added)
+++ jackrabbit/site/live/archive/wiki/JCR/Synchronous-Lucene-Property-Indexes_115513516.html Mon May 20 11:23:18 2019
@@ -0,0 +1,272 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Apache Jackrabbit : Synchronous Lucene Property Indexes</title>
+        <link rel="stylesheet" href="styles/site.css" type="text/css" />
+        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+
+    <body class="theme-default aui-theme-default">
+        <div id="page">
+            <div id="main" class="aui-page-panel">
+                <div id="main-header">
+                    <div id="breadcrumb-section">
+                        <ol id="breadcrumbs">
+                            <li class="first">
+                                <span><a href="index.html">Apache Jackrabbit</a></span>
+                            </li>
+                                                    <li>
+                                <span><a href="Home_70731.html">Home</a></span>
+                            </li>
+                                                </ol>
+                    </div>
+                    <h1 id="title-heading" class="pagetitle">
+                                                <span id="title-text">
+                            Apache Jackrabbit : Synchronous Lucene Property Indexes
+                        </span>
+                    </h1>
+                </div>
+
+                <div id="content" class="view">
+                    <div class="page-metadata">
+                        
+        
+    
+        
+    
+        
+        
+            Created by <span class='author'> ASF Infrabot</span> on May 20, 2019
+                        </div>
+                    <div id="main-content" class="wiki-content group">
+                    <p>Oak 1.6 added support for Lucene Hybrid Index (OAK-4412). That enables near real time (NRT) support for Lucene based indexes. It also had a limited support for sync indexes. This feature aims to improve that to next level and enable support for sync property indexes.</p>
+
+<ol>
+	<li>JIRA Issue - <a href="https://issues.apache.org/jira/browse/OAK-6535" class="external-link" rel="nofollow">OAK-6535</a></li>
+	<li><a href="https://docs.google.com/presentation/d/1QIfnXECc5Aw9kCFVojXVQ6RrB4Qf2yZVsgIN9lYqQ1M/pub?start=false&amp;loop=false&amp;delayms=3000&amp;slide=id.p4" class="external-link" rel="nofollow">Oakathon August 2017 Presentation</a><a href="attachments/115513516/115513517.pdf" data-linked-resource-id="115513517" data-linked-resource-version="1" data-linked-resource-type="attachment" data-linked-resource-default-alias="Hybrid Index v2.pdf" data-nice-type="PDF Document" data-linked-resource-content-type="application/pdf" data-linked-resource-container-id="115513516" data-linked-resource-container-version="1">Hybrid Index v2.pdf</a>
+<br class="atl-forced-newline"/></li>
+</ol>
+
+
+<h2 id="SynchronousLucenePropertyIndexes-SynchronousIndexUsecases">Synchronous Index Usecases</h2>
+
+<p>Synchronous indexes are required in following usecases</p>
+
+<p><span class="confluence-anchor-link" id="SynchronousLucenePropertyIndexes-unique-indexes"></span></p>
+<h3 id="SynchronousLucenePropertyIndexes-UniqueIndexes">Unique Indexes</h3>
+
+<p>For unique indexes like uuid index, principal name index it needs to be ensured that indexed value is unique across whole of the repository at time of commit itself. If the indexed value already exists e.g. principal with same name already exist then that commit should fail. To meet this requirement we need synchronous index which get updated as part of commit itself.</p>
+
+<p><span class="confluence-anchor-link" id="SynchronousLucenePropertyIndexes-property-indexes"></span></p>
+<h3 id="SynchronousLucenePropertyIndexes-PropertyIndexes">Property Indexes</h3>
+
+<p>Depending on application requirements the query results may be </p>
+
+<ol>
+	<li>Eventually Consistent - Any changes done get <em>eventually</em> reflected in query results.</li>
+	<li>Consistent - Any change done gets <em>immediately</em> reflected in query result
+<br class="atl-forced-newline"/></li>
+</ol>
+
+
+<p>For most cases like user driven search eventual consistent search result work fine and hence async indexes can be used. With recent support for NRT indexes (OAK-4412) the user experience get better and changes done by user get reflected <em>very soon</em> in search result.</p>
+
+<p>However for some cases we need to support fully consistent search results. For e.g. assume there is component which maintains a cache for nodes of type <code>app:Component</code> and uses a observation listener to listen for changes in nodes of type <code>app:Component</code> and upon finding any changes it rebuilds the cache by queriying for all such nodes. For this cache to be correct it needs to be ensured query results are consistent wrt session state associated with the listener. Otherwise it may miss on picking a new component and later request to cache for such component would fail.</p>
+
+<p>For such usecases its required that indexes are synchronous and results provided by index are consistent</p>
+
+<h2 id="SynchronousLucenePropertyIndexes-Drawbacksofcurrentpropertyindexes">Drawbacks of current property indexes</h2>
+
+<p>Oak currently has support for synchronous property indexes which are used to meet above usecases. However the current implementation has certain drawbacks</p>
+
+<ol>
+	<li>Perform poorly over remote storage - The property indexes are stores as normal <a class="createlink" href="/confluence/pages/createpage.action?spaceKey=JCR&amp;title=NodeState&amp;linkCreation=true&amp;fromPageId=115513516">NodeState</a> and hence reading them over remote storage like Mongo performs poorly</li>
+	<li>Prone to conflicts - The content mirror store strategy is prone to conflict if the index content is volatile</li>
+	<li>Storage overhead - The storage over head is large specially for remote storage as each <a class="createlink" href="/confluence/pages/createpage.action?spaceKey=JCR&amp;title=NodeState&amp;linkCreation=true&amp;fromPageId=115513516">NodeState</a> is mapped to 1 Document.
+<br class="atl-forced-newline"/></li>
+</ol>
+
+
+<hr/>
+
+<h2 id="SynchronousLucenePropertyIndexes-Proposal">Proposal</h2>
+
+<p>To overcome the drawbacks and still meet the synchronous index requirements we can implement a hybrid index where the indexes content is stored using both property index (for recent enrties) and lucene indexes (for older entries). At high level flow would be</p>
+
+<ol>
+	<li>Store recently added index content as normal property index</li>
+	<li>As part of async indexer run index the same content as part of lucene index</li>
+	<li>Later prune the property index content which would have been indexed as part of lucene index</li>
+	<li>Any query would result in union of query results from both property index and lucene indexes (with some caveats)
+<br class="atl-forced-newline"/></li>
+</ol>
+
+
+<h3 id="SynchronousLucenePropertyIndexes-IndexDefinition">Index Definition</h3>
+
+<p>The synchronous index support would need to be enabled via index definition</p>
+
+<ul>
+	<li><code>async</code> - This needs to have an entry <code>sync</code></li>
+	<li>Set <code>sync</code> to true for each property definition which needs to be indexed in a sync way
+<br class="atl-forced-newline"/></li>
+</ul>
+
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>/oak:index/assetType
+  - jcr:primaryType = &quot;oak:QueryIndexDefinition&quot;
+  - type = &quot;lucene&quot;
+  - async = [&quot;async&quot;, &quot;sync&quot;]
+  + indexRules
+    + nt:base
+      + properties
+        + resourceType
+          - propertyIndex = true
+          - name = &quot;assetType&quot;
+          - sync = true
+</pre>
+</div></div>
+
+<p>For unique indexes set <code>unique</code> i.e. true</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>/oak:index/uuid
+  - jcr:primaryType = &quot;oak:QueryIndexDefinition&quot;
+  - type = &quot;lucene&quot;
+  - async = [&quot;async&quot;, &quot;sync&quot;]
+  + indexRules
+    + nt:base
+      + properties
+        + uuid
+          - propertyIndex = true
+          - name = &quot;jcr:uuid&quot;
+          - unique = true
+</pre>
+</div></div>
+
+<h3 id="SynchronousLucenePropertyIndexes-IndexStorage">Index Storage</h3>
+
+<p>The property index content would be stored as hidden nodes under the index definition nodes. The storage structure would be similar to existing format for property index with some changes</p>
+
+<h4 id="SynchronousLucenePropertyIndexes-UniqueIndexes.1">Unique Indexes</h4>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>/oak:index/assetType
+  + :data   //Stores the lucene index files
+  + :property-index
+    + uuid
+      + &lt;value 1&gt;
+        - entry = [/indexed-content-path]
+        - jcr:created = 1502274302 //creation time in millis
+      + 49652b7e-becd-4534-b104-f867d14c7b6c
+        - entry = [/jcr:system/jcr:versionStorage/63/36/f8/6336f8f5-f155-4cbc-89a4-a87e2f798260/jcr:rootVersion]
+</pre>
+</div></div>
+
+<p>Here</p>
+<ul>
+	<li><code>:property-index</code> - hidden node under which property indexes would be stored for various properties which are marked as sync</li>
+	<li>For unique index entry each entry would also have a time stamp which would later used for pruning
+<br class="atl-forced-newline"/>
+<br class="atl-forced-newline"/></li>
+</ul>
+
+
+<h4 id="SynchronousLucenePropertyIndexes-PropertyIndexes.1">Property Indexes</h4>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>/oak:index/assetType
+  + :data   //Stores the lucene index files
+  + :property-index
+    + resourceType
+      - head = 2
+      - previous = 1
+      + 1
+        - jcr:created = 1502274302 //creation time in millis
+        - lastUpdated = 1502284302 
+        + type1
+          + libs
+            + login
+               + core
+                  - match = true
+        + &lt;value&gt;
+          + &lt;mirror of indexed path&gt;
+      + 2
+        - jcr:created = 1502454302
+        + type1
+          + ...
+</pre>
+</div></div>
+
+<p>Here we create new <em>buckets</em> of index values which simplifies the pruning. New buckets would get created after each successful async indexer run and older buckets would get removed. The bucket would in turn have structure similar to content mirror store strategy</p>
+
+<p>For each property being index keep a <code>head</code> property which refers to the current active <em>bucket</em>. This would be changed by <code>IndexPruner</code>. In addition there would be a <code>previous</code> bucket to refer to the last active bucket.</p>
+
+<p>On each run of <a class="createlink" href="/confluence/pages/createpage.action?spaceKey=JCR&amp;title=IndexPruner&amp;linkCreation=true&amp;fromPageId=115513516">IndexPruner</a></p>
+<ol>
+	<li>Check if <code>IndexStatsMBean#LastIndexedTime</code> is changed from last known time</li>
+	<li>If changed then
+	<ol>
+		<li>Create a new bucket by incrementing the current head value</li>
+		<li>Set <code>previous</code> to current head</li>
+		<li>Set <code>head</code> to new head value</li>
+		<li>Set <code>lastUpdated</code> on <code>previous</code> bucket to now</li>
+	</ol>
+	</li>
+	<li>Remove all other buckets
+<br class="atl-forced-newline"/></li>
+</ol>
+
+
+<p>We require both <code>head</code> and <code>previous</code> bucket as there would be some overlap between content in <code>previous</code></p>
+
+<h4 id="SynchronousLucenePropertyIndexes-IndexPruner">Index Pruner</h4>
+
+<p>Index Pruner is a periodic task which would be responsible for pruning the index content. It would make use of <code>IndexStatsMBean#LastIndexedTime</code> to determine upto which time async indexer has indexed the repository and then remove entries from the property index which are older than that time</p>
+
+<ul>
+	<li>Property index - here pruning would be done by creating a new bucket and then removing the older bucket.</li>
+	<li>Unique index - Here prunining would be done by iterating over current indexed content and removing the older ones
+<br class="atl-forced-newline"/></li>
+</ul>
+
+
+<h3 id="SynchronousLucenePropertyIndexes-QueryEvaluation">Query Evaluation</h3>
+
+<p>On the query side we would be performing a union query over the 2 index types. A union cursor would be created which would consist of </p>
+
+<ul>
+	<li><a class="createlink" href="/confluence/pages/createpage.action?spaceKey=JCR&amp;title=LucenePathCursor&amp;linkCreation=true&amp;fromPageId=115513516">LucenePathCursor</a> - Primary cursor backed by Lucene index</li>
+	<li><a class="createlink" href="/confluence/pages/createpage.action?spaceKey=JCR&amp;title=PropertyIndexCursor&amp;linkCreation=true&amp;fromPageId=115513516">PropertyIndexCursor</a> - A union of path cursor from current <code>head</code> and <code>previous</code> bucket
+<br class="atl-forced-newline"/></li>
+</ul>
+
+
+<h4 id="SynchronousLucenePropertyIndexes-OpenPoints">Open Points</h4>
+
+<p>If there are multiple property definition in Lucene index marked with <code>sync</code> and query involves constraints on more than 1 then which property index should be picked</p>
+                    </div>
+
+                                        <div class="pageSection group">
+                        <div class="pageSectionHeader">
+                            <h2 id="attachments" class="pageSectionTitle">Attachments:</h2>
+                        </div>
+
+                        <div class="greybox" align="left">
+                                                            <img src="images/icons/bullet_blue.gif" height="8" width="8" alt=""/>
+                                <a href="attachments/115513516/115513517.pdf">Hybrid Index v2.pdf</a> (application/pdf)
+                                <br/>
+                                                    </div>
+                    </div>
+                    
+                                                      
+                </div>             </div> 
+            <div id="footer" role="contentinfo">
+                <section class="footer-body">
+                    <p>Document generated by Confluence on May 20, 2019 11:11</p>
+                    <div id="footer-logo"><a href="http://www.atlassian.com/">Atlassian</a></div>
+                </section>
+            </div>
+        </div>     </body>
+</html>

Propchange: jackrabbit/site/live/archive/wiki/JCR/Synchronous-Lucene-Property-Indexes_115513516.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/Synchronous-Lucene-Property-Indexes_115513516.html
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/SynonymSearch_115513518.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/SynonymSearch_115513518.html?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/SynonymSearch_115513518.html (added)
+++ jackrabbit/site/live/archive/wiki/JCR/SynonymSearch_115513518.html Mon May 20 11:23:18 2019
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Apache Jackrabbit : SynonymSearch</title>
+        <link rel="stylesheet" href="styles/site.css" type="text/css" />
+        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+
+    <body class="theme-default aui-theme-default">
+        <div id="page">
+            <div id="main" class="aui-page-panel">
+                <div id="main-header">
+                    <div id="breadcrumb-section">
+                        <ol id="breadcrumbs">
+                            <li class="first">
+                                <span><a href="index.html">Apache Jackrabbit</a></span>
+                            </li>
+                                                    <li>
+                                <span><a href="Home_70731.html">Home</a></span>
+                            </li>
+                                                </ol>
+                    </div>
+                    <h1 id="title-heading" class="pagetitle">
+                                                <span id="title-text">
+                            Apache Jackrabbit : SynonymSearch
+                        </span>
+                    </h1>
+                </div>
+
+                <div id="content" class="view">
+                    <div class="page-metadata">
+                        
+        
+    
+        
+    
+        
+        
+            Created by <span class='author'> ASF Infrabot</span> on May 20, 2019
+                        </div>
+                    <div id="main-content" class="wiki-content group">
+                    <p>Searching with synonyms is integrated in the <code>jcr:contains()</code> function and uses the same syntax like synonym searches with Google. If a search term is prefixed with <code>~</code> also synonyms of the search term are considered.</p>
+
+<p>Example:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>SQL: select * from nt:resource where contains(., &#39;~food&#39;)
+
+XPath: //element(*, nt:resource)[jcr:contains(., &#39;~food&#39;)
+</pre>
+</div></div>
+
+<p>This feature is disabled per default and you need to add a configuration parameter to the <a href="SearchIndex_115513505.html">SearchIndex</a> element in your workspace.xml and repository.xml file to enable it. The Jackrabbit core does not include an implementation for a <a class="createlink" href="/confluence/pages/createpage.action?spaceKey=JCR&amp;title=SynonymProvider&amp;linkCreation=true&amp;fromPageId=115513518">SynonymProvider</a> but you may build one from the contribution section. See <a href="http://svn.apache.org/repos/asf/jackrabbit/sandbox/wordnet-synonyms/README.txt" class="external-link" rel="nofollow">http://svn.apache.org/repos/asf/jackrabbit/sandbox/wordnet-synonyms/README.txt</a> for instructions how to build the jar file. Once you have done that you can enable the synonym provider:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>   &lt;param name=&quot;synonymProviderClass&quot; value=&quot;org.apache.jackrabbit.core.query.wordnet.WordNetSynonyms&quot;/&gt;
+</pre>
+</div></div>
+                    </div>
+
+                    
+                                                      
+                </div>             </div> 
+            <div id="footer" role="contentinfo">
+                <section class="footer-body">
+                    <p>Document generated by Confluence on May 20, 2019 11:11</p>
+                    <div id="footer-logo"><a href="http://www.atlassian.com/">Atlassian</a></div>
+                </section>
+            </div>
+        </div>     </body>
+</html>

Propchange: jackrabbit/site/live/archive/wiki/JCR/SynonymSearch_115513518.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/SynonymSearch_115513518.html
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/TextExtractorExamples_115513519.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/TextExtractorExamples_115513519.html?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/TextExtractorExamples_115513519.html (added)
+++ jackrabbit/site/live/archive/wiki/JCR/TextExtractorExamples_115513519.html Mon May 20 11:23:18 2019
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Apache Jackrabbit : TextExtractorExamples</title>
+        <link rel="stylesheet" href="styles/site.css" type="text/css" />
+        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+
+    <body class="theme-default aui-theme-default">
+        <div id="page">
+            <div id="main" class="aui-page-panel">
+                <div id="main-header">
+                    <div id="breadcrumb-section">
+                        <ol id="breadcrumbs">
+                            <li class="first">
+                                <span><a href="index.html">Apache Jackrabbit</a></span>
+                            </li>
+                                                    <li>
+                                <span><a href="Home_70731.html">Home</a></span>
+                            </li>
+                                                </ol>
+                    </div>
+                    <h1 id="title-heading" class="pagetitle">
+                                                <span id="title-text">
+                            Apache Jackrabbit : TextExtractorExamples
+                        </span>
+                    </h1>
+                </div>
+
+                <div id="content" class="view">
+                    <div class="page-metadata">
+                        
+        
+    
+        
+    
+        
+        
+            Created by <span class='author'> ASF Infrabot</span> on May 20, 2019
+                        </div>
+                    <div id="main-content" class="wiki-content group">
+                    
+<h2 id="TextExtractorExamples-Examplesforwritingyourown">Examples for writing your own <a class="createlink" href="/confluence/pages/createpage.action?spaceKey=JCR&amp;title=TextExtractors&amp;linkCreation=true&amp;fromPageId=115513519">TextExtractors</a></h2>
+
+<p>See <a href="http://tika.apache.org/" class="external-link" rel="nofollow">Apache Tika</a></p>
+                    </div>
+
+                    
+                                                      
+                </div>             </div> 
+            <div id="footer" role="contentinfo">
+                <section class="footer-body">
+                    <p>Document generated by Confluence on May 20, 2019 11:11</p>
+                    <div id="footer-logo"><a href="http://www.atlassian.com/">Atlassian</a></div>
+                </section>
+            </div>
+        </div>     </body>
+</html>

Propchange: jackrabbit/site/live/archive/wiki/JCR/TextExtractorExamples_115513519.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/TextExtractorExamples_115513519.html
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/Transactional-model-of-the-Microkernel-based-Jackrabbit-prototype_115513521.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/Transactional-model-of-the-Microkernel-based-Jackrabbit-prototype_115513521.html?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/Transactional-model-of-the-Microkernel-based-Jackrabbit-prototype_115513521.html (added)
+++ jackrabbit/site/live/archive/wiki/JCR/Transactional-model-of-the-Microkernel-based-Jackrabbit-prototype_115513521.html Mon May 20 11:23:18 2019
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Apache Jackrabbit : Transactional model of the Microkernel based Jackrabbit prototype</title>
+        <link rel="stylesheet" href="styles/site.css" type="text/css" />
+        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+
+    <body class="theme-default aui-theme-default">
+        <div id="page">
+            <div id="main" class="aui-page-panel">
+                <div id="main-header">
+                    <div id="breadcrumb-section">
+                        <ol id="breadcrumbs">
+                            <li class="first">
+                                <span><a href="index.html">Apache Jackrabbit</a></span>
+                            </li>
+                                                    <li>
+                                <span><a href="Home_70731.html">Home</a></span>
+                            </li>
+                                                </ol>
+                    </div>
+                    <h1 id="title-heading" class="pagetitle">
+                                                <span id="title-text">
+                            Apache Jackrabbit : Transactional model of the Microkernel based Jackrabbit prototype
+                        </span>
+                    </h1>
+                </div>
+
+                <div id="content" class="view">
+                    <div class="page-metadata">
+                        
+        
+    
+        
+    
+        
+        
+            Created by <span class='author'> ASF Infrabot</span> on May 20, 2019
+                        </div>
+                    <div id="main-content" class="wiki-content group">
+                    <p><p>The <a href="http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/" class="external-link" rel="nofollow">MicroKernel</a> based JCR implementation uses snapshot isolation with a relaxed first committer wins [1] strategy. That is, on login each session is under the impression of operating on its own copy of the repository. Modifications from other sessions do not affect the current session. With the relaxed first committer wins strategy a later session will fail on save when it contains operations which are incompatible with the operations of an earlier session which saved successfully. This is different from the standard first committer wins strategy where failure would occur on conflicting operations rather than on incompatible operations. Incompatible is weaker than conflict since two write operation on the same item do conflict but are not incompatible. The details of what incompatible means are implemented in the <a href="http://svn.apache.org/vie
 wvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java?view=markup" class="external-link" rel="nofollow">MicroKernel's internal mergeNode method</a>.</p></p>
+
+<p><p>Snapshot isolation exhibits write skew [1] which might turn out to be problematic for maintaining consistency guarantees imposed by JCR. Consider the following events for node n which is initially of type nt:unstructured:</p></p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>session1 = login()
+session2 = login()                                                         
+
+n1 = session1.getNode(&quot;n&quot;)
+n1.setPrimaryType(nt:file)
+n1.save()
+
+n2 = session2.getNode(&quot;n&quot;)
+n2.addNode(&quot;foo&quot;)
+n2.save()
+</pre>
+</div></div>
+<p>Both sessions will successfully complete since for each of them the consistency property (nt:file cannot have a child named &quot;foo&quot;). holds. The combined effect however will result in node n being of type nt:file and having a child node foo.</p>
+
+<p><p>To avoid these kind of inconsistencies, the Microkernel needs to impose additional checks on transactions. A technique which avoids write skew effectively resulting in serializable histories is described in [2]. </p></p>
+
+<p>Another way to mitigate the problem is to add a constraint checking capability to the Microkernel. A client would include a specification of its constraint in the commit. The Microkernel would then determine whether that constraint would still hold after having processed the commit. If not the commit would simply fail. Note however, that this does not solve the problem for application constraints encoded in applications on top of the repository. </p>
+
+<p><p>[1] <a href="http://http://research.microsoft.com/apps/pubs/default.aspx?id=69541" class="external-link" rel="nofollow">A Critique of ANSI SQL Isolation Levels</a>. Hal Berenson, Phil Bernstein, Jim Gray, Jim Melton, Elizabeth O'Neil, and Patrick O'Neil. June 1995</p></p>
+
+<p><p>[2] <a href="http://dl.acm.org/citation.cfm?id=1376690" class="external-link" rel="nofollow">Serializable isolation for snapshot databases</a>. Michael J. Cahill, Uwe Röhm, and Alan D. Fekete. 2008.</p></p>
+                    </div>
+
+                    
+                                                      
+                </div>             </div> 
+            <div id="footer" role="contentinfo">
+                <section class="footer-body">
+                    <p>Document generated by Confluence on May 20, 2019 11:11</p>
+                    <div id="footer-logo"><a href="http://www.atlassian.com/">Atlassian</a></div>
+                </section>
+            </div>
+        </div>     </body>
+</html>

Propchange: jackrabbit/site/live/archive/wiki/JCR/Transactional-model-of-the-Microkernel-based-Jackrabbit-prototype_115513521.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/Transactional-model-of-the-Microkernel-based-Jackrabbit-prototype_115513521.html
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/UserManagement_115513522.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/UserManagement_115513522.html?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/UserManagement_115513522.html (added)
+++ jackrabbit/site/live/archive/wiki/JCR/UserManagement_115513522.html Mon May 20 11:23:18 2019
@@ -0,0 +1,140 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Apache Jackrabbit : UserManagement</title>
+        <link rel="stylesheet" href="styles/site.css" type="text/css" />
+        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+
+    <body class="theme-default aui-theme-default">
+        <div id="page">
+            <div id="main" class="aui-page-panel">
+                <div id="main-header">
+                    <div id="breadcrumb-section">
+                        <ol id="breadcrumbs">
+                            <li class="first">
+                                <span><a href="index.html">Apache Jackrabbit</a></span>
+                            </li>
+                                                    <li>
+                                <span><a href="Home_70731.html">Home</a></span>
+                            </li>
+                                                </ol>
+                    </div>
+                    <h1 id="title-heading" class="pagetitle">
+                                                <span id="title-text">
+                            Apache Jackrabbit : UserManagement
+                        </span>
+                    </h1>
+                </div>
+
+                <div id="content" class="view">
+                    <div class="page-metadata">
+                        
+        
+    
+        
+    
+        
+        
+            Created by <span class='author'> ASF Infrabot</span> on May 20, 2019
+                        </div>
+                    <div id="main-content" class="wiki-content group">
+                    <p>Jackrabbit provides an <a href="http://jackrabbit.apache.org/api/2.1/org/apache/jackrabbit/api/security/" class="external-link" rel="nofollow">additional API for security and user management</a>. This is about user &amp; group (principal) management. See <a href="AccessControl_115513330.html">AccessControl</a> on how to set permissions for users and groups.</p>
+
+<h2 id="UserManagement-API">API</h2>
+
+<p>As an example to check if a user is the admin user, use: </p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>JackrabbitSession js = (JackrabbitSession) session;
+User user = ((User) js.getUserManager().getAuthorizable(session.getUserID()));
+boolean isAdmin = user.isAdmin();
+</pre>
+</div></div>
+
+<p>Please note this algorithm can only be used if user management is supported.</p>
+
+
+
+<p>---&gt;&gt;create users</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>session = (JackrabbitSession) session;
+final UserManager userManager = session.getUserManager();
+final User user = userManager.createUser(userName, userName);
+session.save();
+		</pre>
+</div></div>
+
+
+
+<p>--&gt;&gt; remove user</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>
+session = (JackrabbitSession) session;
+final UserManager userManager = session.getUserManager();
+final User user = (User) userManager.getAuthorizable(userName);
+user.remove();
+session.save();
+
+</pre>
+</div></div>
+
+<p>---&gt;&gt; fetch members from a group</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>final List&lt;String&gt; members = new ArrayList&lt;String&gt;();
+final UserManager userManager = ((JackrabbitSession) session)
+					.getUserManager();
+final Authorizable auth2 = userManager.getAuthorizable(groupName);
+if (auth2.isGroup()) {
+Group group = (Group) auth2;
+Iterator&lt;Authorizable&gt; iter = group.getMembers();
+while (iter.hasNext()) {
+Authorizable auth = iter.next();
+if (!auth.isGroup()) {
+members.add(auth.getID());
+			}
+	}
+
+</pre>
+</div></div>
+<p>--&gt;&gt; Retrieve all available users from the repo</p>
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>final List&lt;String&gt; users = new ArrayList&lt;String&gt;();
+
+final UserManager userManager = ((JackrabbitSession) session)
+					.getUserManager();
+Iterator&lt;Authorizable&gt; iter = userManager.findAuthorizables(
+	&quot;jcr:primaryType&quot;, &quot;rep:User&quot;);
+
+while (iter.hasNext()) {
+Authorizable auth = iter.next();
+if (!auth.isGroup()) {
+		users.add(auth.getID());
+	}
+}
+if (!userManager.isAutoSave()) {
+	session.save();
+	}
+
+</pre>
+</div></div>
+<h3 id="UserManagement-TODO">TODO</h3>
+
+<ul>
+	<li>list users</li>
+	<li>change password</li>
+	<li>etc.</li>
+</ul>
+                    </div>
+
+                    
+                                                      
+                </div>             </div> 
+            <div id="footer" role="contentinfo">
+                <section class="footer-body">
+                    <p>Document generated by Confluence on May 20, 2019 11:11</p>
+                    <div id="footer-logo"><a href="http://www.atlassian.com/">Atlassian</a></div>
+                </section>
+            </div>
+        </div>     </body>
+</html>

Propchange: jackrabbit/site/live/archive/wiki/JCR/UserManagement_115513522.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/UserManagement_115513522.html
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/UsingJNDIDataSource_115513523.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/UsingJNDIDataSource_115513523.html?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/UsingJNDIDataSource_115513523.html (added)
+++ jackrabbit/site/live/archive/wiki/JCR/UsingJNDIDataSource_115513523.html Mon May 20 11:23:18 2019
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Apache Jackrabbit : UsingJNDIDataSource</title>
+        <link rel="stylesheet" href="styles/site.css" type="text/css" />
+        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+
+    <body class="theme-default aui-theme-default">
+        <div id="page">
+            <div id="main" class="aui-page-panel">
+                <div id="main-header">
+                    <div id="breadcrumb-section">
+                        <ol id="breadcrumbs">
+                            <li class="first">
+                                <span><a href="index.html">Apache Jackrabbit</a></span>
+                            </li>
+                                                    <li>
+                                <span><a href="Home_70731.html">Home</a></span>
+                            </li>
+                                                </ol>
+                    </div>
+                    <h1 id="title-heading" class="pagetitle">
+                                                <span id="title-text">
+                            Apache Jackrabbit : UsingJNDIDataSource
+                        </span>
+                    </h1>
+                </div>
+
+                <div id="content" class="view">
+                    <div class="page-metadata">
+                        
+        
+    
+        
+    
+        
+        
+            Created by <span class='author'> ASF Infrabot</span> on May 20, 2019
+                        </div>
+                    <div id="main-content" class="wiki-content group">
+                    <h1 id="UsingJNDIDataSource-HowtouseaJNDI">How to use a JNDI <a class="createlink" href="/confluence/pages/createpage.action?spaceKey=JCR&amp;title=DataSource&amp;linkCreation=true&amp;fromPageId=115513523">DataSource</a></h1>
+
+<p>Jackrabbit supports JNDI data sources. The bundle database persistence manager, the database data store, and the file system (including its subclasses) support a JNDI data source in place of the JDBC driver and database URL. Here is how you can configure those two using data sources:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>&lt;FileSystem class=&quot;org.apache.jackrabbit.core.fs.db.DbFileSystem&quot;&gt;
+  &lt;param name=&quot;driver&quot; value=&quot;javax.naming.InitialContext&quot;/&gt;
+  &lt;param name=&quot;url&quot; value=&quot;java:comp/env/jdbc/DataStore&quot;/&gt;
+&lt;/FileSystem&gt;
+</pre>
+</div></div>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>&lt;DataStore class=&quot;org.apache.jackrabbit.core.data.db.DbDataStore&quot;&gt;
+  &lt;param name=&quot;driver&quot; value=&quot;javax.naming.InitialContext&quot;/&gt;
+  &lt;param name=&quot;url&quot; value=&quot;java:comp/env/jdbc/DataStore&quot;/&gt;
+  &lt;param name=&quot;databaseType&quot; value=&quot;postgresql&quot;/&gt;
+&lt;/DataStore&gt;
+</pre>
+</div></div> 
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>&lt;PersistenceManager class=&quot;org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager&quot;&gt;
+  &lt;param name=&quot;driver&quot; value=&quot;javax.naming.InitialContext&quot;/&gt;
+  &lt;param name=&quot;url&quot; value=&quot;java:comp/env/jdbc/Workspaces&quot;/&gt;
+  &lt;param name=&quot;schemaObjectPrefix&quot; value=&quot;${wsp.name}_&quot;/&gt;
+  &lt;param name=&quot;schema&quot; value=&quot;postgresql&quot;/&gt;
+&lt;/PersistenceManager&gt;
+</pre>
+</div></div> 
+
+<p>Please note that 'schema' in the persistence manager has the meaning of 'database type'.</p>
+                    </div>
+
+                    
+                                                      
+                </div>             </div> 
+            <div id="footer" role="contentinfo">
+                <section class="footer-body">
+                    <p>Document generated by Confluence on May 20, 2019 11:11</p>
+                    <div id="footer-logo"><a href="http://www.atlassian.com/">Atlassian</a></div>
+                </section>
+            </div>
+        </div>     </body>
+</html>

Propchange: jackrabbit/site/live/archive/wiki/JCR/UsingJNDIDataSource_115513523.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/UsingJNDIDataSource_115513523.html
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/WebAppFAQ_115513524.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/WebAppFAQ_115513524.html?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/WebAppFAQ_115513524.html (added)
+++ jackrabbit/site/live/archive/wiki/JCR/WebAppFAQ_115513524.html Mon May 20 11:23:18 2019
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Apache Jackrabbit : WebAppFAQ</title>
+        <link rel="stylesheet" href="styles/site.css" type="text/css" />
+        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+
+    <body class="theme-default aui-theme-default">
+        <div id="page">
+            <div id="main" class="aui-page-panel">
+                <div id="main-header">
+                    <div id="breadcrumb-section">
+                        <ol id="breadcrumbs">
+                            <li class="first">
+                                <span><a href="index.html">Apache Jackrabbit</a></span>
+                            </li>
+                                                    <li>
+                                <span><a href="Home_70731.html">Home</a></span>
+                            </li>
+                                                </ol>
+                    </div>
+                    <h1 id="title-heading" class="pagetitle">
+                                                <span id="title-text">
+                            Apache Jackrabbit : WebAppFAQ
+                        </span>
+                    </h1>
+                </div>
+
+                <div id="content" class="view">
+                    <div class="page-metadata">
+                        
+        
+    
+        
+    
+        
+        
+            Created by <span class='author'> ASF Infrabot</span> on May 20, 2019
+                        </div>
+                    <div id="main-content" class="wiki-content group">
+                    <h2 id="WebAppFAQ-WebApplicationFAQ">Web Application FAQ</h2>
+
+<h3 id="WebAppFAQ-SendingPDFContent">Sending PDF Content</h3>
+
+<p>Sending PDF content can be tricky due to browser idiosyncrasities.  What we use at my site is:</p>
+
+<ul>
+	<li>If you provide a filename, e.g., in a Content-Disposition header, you <strong>must</strong> use a .pdf extension.  MSIE will look at filename extensions instead of the mime-type.
+<br class="atl-forced-newline"/></li>
+	<li>Set the Content-Length in the header.  MSIE seems to be the most easily confused.
+<br class="atl-forced-newline"/></li>
+	<li>If you use HTTPS you <strong>must not</strong> set the Cache-Control pragma to 'no-cache'. MSIE is very literal and will discard your content before it can read it!
+<br class="atl-forced-newline"/></li>
+	<li>You need to play with the Content-Disposition header.  At our site we use 'attachment;filename=...' for Firefox, and 'inline' for all other browsers, but we have some weird needs.</li>
+</ul>
+                    </div>
+
+                    
+                                                      
+                </div>             </div> 
+            <div id="footer" role="contentinfo">
+                <section class="footer-body">
+                    <p>Document generated by Confluence on May 20, 2019 11:11</p>
+                    <div id="footer-logo"><a href="http://www.atlassian.com/">Atlassian</a></div>
+                </section>
+            </div>
+        </div>     </body>
+</html>

Propchange: jackrabbit/site/live/archive/wiki/JCR/WebAppFAQ_115513524.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/WebAppFAQ_115513524.html
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/WebDAV_115513525.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/WebDAV_115513525.html?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/WebDAV_115513525.html (added)
+++ jackrabbit/site/live/archive/wiki/JCR/WebDAV_115513525.html Mon May 20 11:23:18 2019
@@ -0,0 +1,240 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Apache Jackrabbit : WebDAV</title>
+        <link rel="stylesheet" href="styles/site.css" type="text/css" />
+        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+
+    <body class="theme-default aui-theme-default">
+        <div id="page">
+            <div id="main" class="aui-page-panel">
+                <div id="main-header">
+                    <div id="breadcrumb-section">
+                        <ol id="breadcrumbs">
+                            <li class="first">
+                                <span><a href="index.html">Apache Jackrabbit</a></span>
+                            </li>
+                                                    <li>
+                                <span><a href="Home_70731.html">Home</a></span>
+                            </li>
+                                                </ol>
+                    </div>
+                    <h1 id="title-heading" class="pagetitle">
+                                                <span id="title-text">
+                            Apache Jackrabbit : WebDAV
+                        </span>
+                    </h1>
+                </div>
+
+                <div id="content" class="view">
+                    <div class="page-metadata">
+                        
+        
+    
+        
+    
+        
+        
+            Created by <span class='author'> ASF Infrabot</span> on May 20, 2019
+                        </div>
+                    <div id="main-content" class="wiki-content group">
+                    <p>The intent of this document is to show how to use Jackrabbit through the WebDAV interface.  This document has primarly been designed to help migrate Jakarta Slide users who mainly used WebDAV for interfacing and would like to migrate their repositories to Jackrabbit – but should be useful for migration from any WebDAV-enabled repository to Jackrabbit.</p>
+
+<p>Please note that Jackrabbit's WebDAV is mainly targeted at exposing a JCR repository over WebDAV. If you want a general purpose WebDAV server framework in Java (such as the old Apache Slide), there are other choices, which might be better: <a href="http://code.google.com/p/sardine/" class="external-link" rel="nofollow">Sardine</a> or <a href="http://milton.ettrema.com/index.html" class="external-link" rel="nofollow">Milton</a>.</p>
+
+<p><strong>Configuration oriented setup</strong></p>
+<ul>
+	<li>Setting up jackrabbit for properties.</li>
+	<li>Indexing properties for faster searching.
+<br class="atl-forced-newline"/></li>
+</ul>
+
+
+<p><strong>Process oriented examples</strong></p>
+<ul>
+	<li>Injecting a binary file.</li>
+	<li>Adding properties about the file.</li>
+	<li>Searching the properties for your file.
+<br class="atl-forced-newline"/></li>
+</ul>
+
+
+<p><strong>WebDAV programming</strong></p>
+<ul>
+	<li>Jackrabbit WebDAV API
+<br class="atl-forced-newline"/></li>
+</ul>
+
+
+<p><strong>Migrating existing data</strong></p>
+<ul>
+	<li>TODO
+<br class="atl-forced-newline"/></li>
+</ul>
+
+
+<p><strong>Security Considerations</strong></p>
+<ul>
+	<li>General SSL access examples - with keystore, ignoring keystores.
+<br class="atl-forced-newline"/></li>
+</ul>
+
+
+<hr/>
+<h3 id="WebDAV-Settingupjackrabbitforproperties">Setting up jackrabbit for properties</h3>
+
+<p>TODO</p>
+<hr/>
+<h3 id="WebDAV-Indexingpropertiesforfastersearching">Indexing properties for faster searching</h3>
+
+<p>TODO</p>
+<hr/>
+<h3 id="WebDAV-Injectingabinaryfile">Injecting a binary file</h3>
+<p>If you have existing code or implementation for injecting WebDAV binary file, that will work without change on Jackrabbit. The only difference is the webdav resource you should use would be something like:</p>
+
+<ul>
+	<li><a href="http://server:8080/" class="external-link" rel="nofollow">http://server:8080/</a>&lt;war resource&gt;/repository/&lt;workspace&gt;</li>
+	<li><a href="http://server:8080/jackrabbit-server/repository/default" class="external-link" rel="nofollow">http://server:8080/jackrabbit-server/repository/default</a></li>
+</ul>
+
+
+<hr/>
+<h3 id="WebDAV-Addingpropertiesaboutthefile">Adding properties about the file</h3>
+<p>If you have existing code or implementation for applying properties to your binary file (PROPPATCH), this will work with work with the default setup provided with Jackrabbit. To restrict the properties or specifically modify the overall import/export behavior of properties, please refer to the configuration options (see resource-config init-param within the web.xml and the related config.xml).</p>
+
+<p>Unlike Jakarta Slide that allowed arbitrary properties, Jackrabbit requires specified nodeType and nodeProperties. See <a href="NodeTypeRegistry_115513461.html">NodeTypeRegistry</a> for some pre-existing nodeType definitions and <a href="http://jackrabbit.apache.org/doc/nodetype/index.html" class="external-link" rel="nofollow">http://jackrabbit.apache.org/doc/nodetype/index.html</a> on defining your own.</p>
+<hr/>
+<h3 id="WebDAV-Searchingthepropertiesforyourfile">Searching the properties for your file</h3>
+<p>The default DASL &lt;basicsearch&gt; mechanisms will not work with Jackrabbit.  Instead, XPATH-style searches and SQL searches within the &lt;searchrequest&gt; tag must be used. </p>
+
+<p>In addition, the webdav libraries from the Jakarta Slide project for the <a class="createlink" href="/confluence/pages/createpage.action?spaceKey=JCR&amp;title=SearchMethod&amp;linkCreation=true&amp;fromPageId=115513525">SearchMethod</a> class do not seem to work correctly with Jackrabbit (not sure if the libs or Jackrabbit), instead you need to use org.apache.jackrabbit.webdav.client.methods.SearchMethod where you need/should use javax.jcr.query.Query.SQL and javax.jcr.query.Query.XPATH constants as parameters to define the query type.</p>
+
+
+<p>Please update with examples.</p>
+
+<p>TODO</p>
+
+<hr/>
+<h3 id="WebDAV-JackrabbitWebDAVAPI">Jackrabbit WebDAV API</h3>
+
+<p>Javadocs:</p>
+
+<ul>
+	<li><a href="http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/package-summary.html" class="external-link" rel="nofollow">org.apache.jackrabbit.webdav</a></li>
+	<li><a href="http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/client/methods/package-summary.html" class="external-link" rel="nofollow">org.apache.jackrabbit.webdav.client.methods</a></li>
+	<li><a href="http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/header/package-summary.html" class="external-link" rel="nofollow">org.apache.jackrabbit.webdav.header</a></li>
+	<li><a href="http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/io/package-summary.html" class="external-link" rel="nofollow">org.apache.jackrabbit.webdav.io</a></li>
+	<li><a href="http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/lock/package-summary.html" class="external-link" rel="nofollow">org.apache.jackrabbit.webdav.lock</a></li>
+	<li><a href="http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/server/package-summary.html" class="external-link" rel="nofollow">org.apache.jackrabbit.webdav.server</a></li>
+	<li><a href="http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/util/package-summary.html" class="external-link" rel="nofollow">org.apache.jackrabbit.webdav.util</a></li>
+	<li><a href="http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/webdav/xml/package-summary.html" class="external-link" rel="nofollow">org.apache.jackrabbit.webdav.xml</a>
+<br class="atl-forced-newline"/></li>
+</ul>
+
+
+<h3 id="WebDAV-UsingtheWebDAV-ClientAPIlinkedwithstandardWebDAV-Server">Using the WebDAV-Client API linked with standard WebDAV-Server</h3>
+
+<ul>
+	<li>Init the Client 
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>        hostConfig = new HostConfiguration();
+	hostConfig.setHost(&quot;www.somehost.com&quot;);	
+	HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
+	HttpConnectionManagerParams params = new HttpConnectionManagerParams();
+	int maxHostConnections = 20;
+	params.setMaxConnectionsPerHost(hostConfig, maxHostConnections);
+	connectionManager.setParams(params);	
+	client = new HttpClient(connectionManager);
+	Credentials creds = new UsernamePasswordCredentials(&quot;userId&quot;, &quot;pw&quot;);
+        client.getState().setCredentials(AuthScope.ANY, creds);
+	client.setHostConfiguration(hostConfig);
+  </pre>
+</div></div></li>
+	<li>Copy a File 
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>        //source, dest, overwrite
+        DavMethod copy=new CopyMethod(&quot;http://www.somehost.com/duff/test3.txt&quot;, &quot;http://www.somehost.com/duff/test4.txt&quot;, true);
+	client.executeMethod(copy);
+	
+	System.out.println(copy.getStatusCode() + &quot; &quot;+ copy.getStatusText());
+  </pre>
+</div></div>
+<br class="atl-forced-newline"/></li>
+	<li>Reading all properties of a resource 
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>    DavMethod pFind = new PropFindMethod(&quot;http://www.somehost.com/duff/test3.txt&quot;, DavConstants.PROPFIND_ALL_PROP, DavConstants.DEPTH_INFINITY);
+    client.executeMethod(pFind);
+
+    MultiStatus multiStatus = pFind.getResponseBodyAsMultiStatus();	 
+	 
+    //Not quite nice, but for a example ok
+    DavPropertySet props = multiStatus.getResponses()[0].getProperties(200);
+	  
+    Collection&lt;DefaultDavProperty&gt; propertyColl=props.getContent(); 
+    propertyColl.iterator();
+    for(Iterator&lt;DefaultDavProperty&gt; iterator = propertyColl.iterator(); iterator.hasNext();){
+	DefaultDavProperty tmpProp=iterator.next();
+	System.out.println(tmpProp.getName() +&quot;  &quot;+ tmpProp.getValue());
+    }
+    
+  </pre>
+</div></div>
+<br class="atl-forced-newline"/>
+<br class="atl-forced-newline"/></li>
+	<li>Getting a list of subresources of a resource 
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>    String host = &quot;http://www.somehost.com&quot;;
+    String resourcePath = &quot;/duff&quot;;
+    DavMethod pFind = new PropFindMethod(host + resourcePath, DavConstants.PROPFIND_ALL_PROP, DavConstants.DEPTH_1);
+    client.executeMethod(pFind);
+
+    MultiStatus multiStatus = pFind.getResponseBodyAsMultiStatus();
+    MultiStatusResponse[] responses = multiStatus.getResponses();
+    MultiStatusResponse currResponse;
+    ArrayList files = new ArrayList();
+    System.out.println(&quot;Folders and files in &quot; + resourcePath + &quot;:&quot;);
+    for (int i=0; i&lt;responses.length; i++) {
+        currResponse = responses[i];
+        if (!(currResponse.getHref().equals(path) || currResponse.getHref().equals(path + &quot;/&quot;))) {
+            System.out.println(currResponse.getHref());
+        }
+    }  
+  </pre>
+</div></div>
+  * Setting a property of a resource 
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>        DavPropertySet newProps=new DavPropertySet();	
+	DavPropertyNameSet removeProperties=new DavPropertyNameSet();
+	
+        DavProperty testProp=new DefaultDavProperty(&quot;TheAnswer&quot;, &quot;42&quot;, DavConstants.NAMESPACE);
+	newProps.add(testProp);
+	PropPatchMethod proPatch=new PropPatchMethod(&quot;http://www.somehost.com/duff/test4.txt&quot;, newProps, removeProperties);
+	
+	client.executeMethod(proPatch);
+	System.out.println(proPatch.getStatusCode() + &quot; &quot;+ proPatch.getStatusText());
+  </pre>
+</div></div></li>
+</ul>
+
+
+<hr/>
+<h3 id="WebDAV-GeneralSSLaccessexamples">General SSL access examples</h3>
+
+<p>TODO</p>
+<hr/>
+<p>History of Page:<br/>
+Started: 2006-11-28</p>
+                    </div>
+
+                    
+                                                      
+                </div>             </div> 
+            <div id="footer" role="contentinfo">
+                <section class="footer-body">
+                    <p>Document generated by Confluence on May 20, 2019 11:11</p>
+                    <div id="footer-logo"><a href="http://www.atlassian.com/">Atlassian</a></div>
+                </section>
+            </div>
+        </div>     </body>
+</html>

Propchange: jackrabbit/site/live/archive/wiki/JCR/WebDAV_115513525.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/WebDAV_115513525.html
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/attachments/115513387/115513388.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/attachments/115513387/115513388.png?rev=1859550&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513387/115513388.png
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513387/115513388.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513391.gliffy
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513391.gliffy?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513391.gliffy (added)
+++ jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513391.gliffy Mon May 20 11:23:18 2019
@@ -0,0 +1 @@
+{"contentType":"application/gliffy+json","version":"1.3","stage":{"background":"#FFFFFF","width":725,"height":278,"nodeIndex":73,"autoFit":true,"exportBorder":false,"gridOn":true,"snapToGrid":true,"drawingGuidesOn":true,"pageBreaksOn":false,"printGridOn":false,"printPaper":null,"printShrinkToFit":false,"printPortrait":false,"maxWidth":5000,"maxHeight":5000,"themeData":null,"imageCache":{},"viewportType":"default","fitBB":{"min":{"x":120,"y":20},"max":{"x":724.2666666666667,"y":277.5}},"printModel":{"pageSize":"a4","portrait":false,"fitToOnePage":false,"displayPageBreaks":false},"objects":[{"x":578.0,"y":216.0,"rotation":0.0,"id":70,"width":57.0,"height":1.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":52,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":4,"py":0.5,"px":0.0}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":6
 8,"py":0.5,"px":1.0}}},"graphic":{"type":"Line","Line":{"strokeWidth":1.0,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":2,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[2.0,1.5],[-18.0,1.5],[-38.0,1.5],[-58.0,1.5]],"lockSegments":{},"ortho":true}},"linkMap":[],"hidden":false,"layerId":"rAHqoLXTDTNa"},{"x":440.0,"y":180.0,"rotation":0.0,"id":68,"width":80.0,"height":75.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":51,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":1.5999999999999999,"y":0.0,"rotation":0.0,"id":69,"width":76.8,"height":42.0,"uid":null,"order":"auto","lockAspectRatio
 ":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">CDN</span></span></p><p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">&nbsp;</span></span></p><p style=\"text-align:center;\"><span style=\"font-style:italic;font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">optional</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"hidden":false,"layerId":"rAHqoLXTDTNa"}],"hidden":false,"layerId":"rAHqoLXTDTNa"},{"x":580.0,"y":15
 7.5,"rotation":0.0,"id":4,"width":140.0,"height":120.0,"uid":"com.gliffy.shape.basic.basic_v1.default.cylinder","order":6,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.cylinder.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":3.7333333333333334,"y":0.0,"rotation":0.0,"id":5,"width":132.5333333333333,"height":98.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><spa
 n style=\"text-decoration:none;\"><br />Cloud Binary Storage (S3, Azure)</span></span></p><p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">&nbsp;</span></span></p><p style=\"text-align:center;\"><span style=\"font-style:italic;font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">provides scalable &amp; high-bandwidth binary storage</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"hidden":false,"layerId":"rAHqoLXTDTNa"}],"hidden":false,"layerId":"rAHqoLXTDTNa"},{"x":322.0,"y":20.0,"rotation":0.0,"id":9,"width":180.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":11,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":nu
 ll,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":3.5999999999999996,"y":0.0,"rotation":0.0,"id":10,"width":172.79999999999998,"height":56.0,"uid":null,"order":13,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">Server Application &#43; Oak</span></span></p><p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">&nbsp;</span></span></p><p style=\"text-align:center;\"><span style=\"font-style:italic;font-size:12px;text-decoration:n
 one;font-family:Arial;\"><span style=\"text-decoration:none;\">coordinates and authorizes<br />individual binary access</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"hidden":false,"layerId":"rAHqoLXTDTNa"}],"hidden":false,"layerId":"rAHqoLXTDTNa"},{"x":120.0,"y":180.0,"rotation":0.0,"id":15,"width":120.0,"height":85.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":20,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":2.399999999999998,"y":0.0,"rotation":0.0,"id":16,"width":115.19999999999997,"height":56.0,"uid":null,"order":22,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"pad
 dingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;font-family:Arial;\"><span style=\"\">Remote Client</span></span></p><p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">&nbsp;</span></span></p><p style=\"text-align:center;\"><span style=\"font-style:italic;font-size:12px;font-family:Arial;\"><span style=\"\">wants to render / download binary</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"hidden":false,"layerId":"rAHqoLXTDTNa"}],"hidden":false,"layerId":"rAHqoLXTDTNa"},{"x":175.0,"y":372.0,"rotation":0.0,"id":39,"width":96.0,"height":1.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":36,"lockAspectRatio":false,"lockShape":false,"co
 nstraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":15,"py":0.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":9,"py":0.5,"px":0.0}}},"graphic":{"type":"Line","Line":{"strokeWidth":1.0,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":2,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[5.0,-192.0],[5.0,-302.0],[147.0,-302.0]],"lockSegments":{},"ortho":true}},"linkMap":[],"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":58,"width":90.0,"height":28.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"both","paddingTop":2,"paddingRight":2,"paddingBottom":2,"paddingLeft":2,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":0.7287791488733073,"linePerpV
 alue":0.0,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;font-family:Arial;\">1. request html<br />with &lt;img&gt; URL<span style=\"text-decoration:none;\"><br /></span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"hidden":false,"layerId":"rAHqoLXTDTNa"}],"hidden":false,"layerId":"rAHqoLXTDTNa"},{"x":241.0,"y":223.0,"rotation":0.0,"id":56,"width":397.0,"height":13.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":46,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":15,"py":0.5,"px":1.0}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":68,"py":0.5,"px":0.0}}},"graphic":{"type":"Line","Line":{"strokeWidth":1.0,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":2,"endArrow":0,"startArrowRotation":"auto","endArrowRotation":"aut
 o","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[-1.0624902374255782,-5.499999999999972],[65.62500650838297,-5.499999999999972],[132.31250325419148,-5.5],[199.0,-5.5]],"lockSegments":{},"ortho":true}},"linkMap":[],"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":57,"width":102.0,"height":28.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"both","paddingTop":2,"paddingRight":2,"paddingBottom":2,"paddingLeft":2,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":0.4764705882352941,"linePerpValue":0.0,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;font-family:Arial;\"><span style=\"\">2. direct download<br />(time limited)</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"hidden":false,"layerId":"rAHqoLXTDTNa"}],"hidden":false,"layerId":"rAHqoLXTDTNa"},{"x":4
 83.0,"y":50.0,"rotation":0.0,"id":61,"width":150.0,"height":98.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":48,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":9,"py":0.5,"px":1.0}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":4,"py":0.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":1.0,"strokeColor":"#000000","fillColor":"none","dashStyle":"8.0,2.0","startArrow":0,"endArrow":2,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[19.0,20.0],[167.0,20.0],[167.0,107.5]],"lockSegments":{},"ortho":true}},"linkMap":[],"children":[],"hidden":false,"layerId":"rAHqoLXTDTNa"}],"layers":[{"guid":"rAHqoLXTDTNa","order":0,"name":"Layer 0","active":true,"locked":false,"visible":true,"nodeIndex":55}],"shapeStyles":{},"lineStyles":{"global":{"strokeWidth"
 :1,"endArrow":2}},"textStyles":{"global":{"size":"11px"}}},"metadata":{"title":"untitled","revision":0,"exportBorder":false,"loadPosition":"default","libraries":["com.gliffy.libraries.basic.basic_v1.default","com.gliffy.libraries.flowchart.flowchart_v1.default","com.gliffy.libraries.swimlanes.swimlanes_v1.default","com.gliffy.libraries.uml.uml_v2.class","com.gliffy.libraries.uml.uml_v2.sequence","com.gliffy.libraries.uml.uml_v2.activity","com.gliffy.libraries.erd.erd_v1.default","com.gliffy.libraries.ui.ui_v3.containers_content","com.gliffy.libraries.ui.ui_v3.forms_controls","com.gliffy.libraries.uml.uml_v1.default","com.gliffy.libraries.images"],"autosaveDisabled":false,"lastSerialized":1529610226428},"embeddedResources":{"index":0,"resources":[]}}
\ No newline at end of file

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513391.gliffy
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513392.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513392.png?rev=1859550&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513392.png
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513392.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513393.png
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513393.png?rev=1859550&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513393.png
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513393.png
------------------------------------------------------------------------------
    svn:mime-type = image/png