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 [23/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/attachments/115513390/115513394.gliffy
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513394.gliffy?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513394.gliffy (added)
+++ jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513394.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":68,"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":10,"y":20},"max":{"x":724.2666666666667,"y":277.5}},"printModel":{"pageSize":"a4","portrait":false,"fitToOnePage":false,"displayPageBreaks":false},"objects":[{"x":580.0,"y":157.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;\"><span 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 sty
 le=\"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":null,"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,"outerP
 addingTop":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:none;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.shap
 e.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":70.0,"uid":null,"order":22,"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;font-family:Arial;\"><span style=\"\">Remote Client</span></span></p><p style=\"text-align:center;\"><span style=\"font-siz
 e: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 add binary into repository</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,"constraints":{"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":67.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,"linePerpValue":0.0,"cardinalityType":null,"html":"<p style=\"text-align:left;\"><span style=\"font-size:12px;font-family:Arial;\"><span style=\"\">1. initiate<br /></span></span></p><p style=\"text-align:left;\"><span style=\"\">3. complete</span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"hidden":false,"layerId":"rAHqoLXTDTNa"}],"hidden":false,"layerId":"rA
 HqoLXTDTNa"},{"x":10.0,"y":187.5,"rotation":0.0,"id":49,"width":70.0,"height":70.0,"uid":"com.gliffy.shape.basic.basic_v1.default.circle","order":41,"lockAspectRatio":true,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ellipse.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.4000000000000001,"y":0.0,"rotation":0.0,"id":50,"width":67.2,"height":28.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;\">Binary to upload</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"hidden":false,"layerId":"rAHqoLXTDTNa"}],"hidden":false,"layerId":"rAHqoLXTDTNa"},{"x":82.0,"y":225.0,"rotation":0.0,"id":53,"width":37.0,"height":4.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":43,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":49,"py":0.5,"px":1.0}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":15,"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":[[-2.0,-2.5],[11.333333333333329,-2.5],[24.66666666666667,-2.5],[38.0,-2.5]],"lock
 Segments":{},"ortho":true}},"linkMap":[],"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":4,"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":[[-1.0367627183860577,-5.500000000000028],[112.3088248544093,-5.500000000000028],[225.65441242720465,-5.5],[339.0,-5.5]],"lockSegments":{},"ortho":true}},"linkMap":[],"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":57,"width":114.0,
 "height":56.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.4911233675586636,"linePerpValue":0.0,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;font-family:Arial;\"><span style=\"\">2. direct upload</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=\"\">optionally leverage<br />transfer acceleration</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"hidden":false,"layerId":"rAHqoLXTDTNa"}],"hidden":false,"layerI
 d":"rAHqoLXTDTNa"},{"x":483.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":[{"x":0.0,"y":0.0,"rotation":0.0,"id":64,"width":103.0,"height":42.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"both","paddin
 gTop":2,"paddingRight":2,"paddingBottom":2,"paddingLeft":2,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":0.3309446679341436,"linePerpValue":0.0,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;font-family:Arial;\"><span style=\"\">check existence<br />initiate multipart<br />complete multipart</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"hidden":false,"layerId":"rAHqoLXTDTNa"}],"hidden":false,"layerId":"rAHqoLXTDTNa"}],"layers":[{"guid":"rAHqoLXTDTNa","order":0,"name":"Layer 0","active":true,"locked":false,"visible":true,"nodeIndex":51}],"shapeStyles":{},"lineStyles":{"global":{"strokeWidth":1,"dashStyle":"8.0,2.0","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.li
 braries.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":1529610185702},"embeddedResources":{"index":0,"resources":[]}}
\ No newline at end of file

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

Added: jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513395.svg
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513395.svg?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513395.svg (added)
+++ jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513395.svg Mon May 20 11:23:18 2019
@@ -0,0 +1,350 @@
+<svg id="mermaid-1529465698147" width="800px" xmlns="http://www.w3.org/2000/svg" height="100%" style="max-width:1150px;" viewBox="-150 -10 1150 1984.4375"><style>
+
+
+#mermaid-1529465698147 .label {
+  font-family: 'trebuchet ms', verdana, arial;
+  color: #333; }
+
+#mermaid-1529465698147 .node rect,
+#mermaid-1529465698147 .node circle,
+#mermaid-1529465698147 .node ellipse,
+#mermaid-1529465698147 .node polygon {
+  fill: #ECECFF;
+  stroke: #9370DB;
+  stroke-width: 1px; }
+
+#mermaid-1529465698147 .node.clickable {
+  cursor: pointer; }
+
+#mermaid-1529465698147 .arrowheadPath {
+  fill: #333333; }
+
+#mermaid-1529465698147 .edgePath .path {
+  stroke: #333333;
+  stroke-width: 1.5px; }
+
+#mermaid-1529465698147 .edgeLabel {
+  background-color: #e8e8e8; }
+
+#mermaid-1529465698147 .cluster rect {
+  fill: #ffffde !important;
+  stroke: #aaaa33 !important;
+  stroke-width: 1px !important; }
+
+#mermaid-1529465698147 .cluster text {
+  fill: #333; }
+
+#mermaid-1529465698147 div.mermaidTooltip {
+  position: absolute;
+  text-align: center;
+  max-width: 200px;
+  padding: 2px;
+  font-family: 'trebuchet ms', verdana, arial;
+  font-size: 12px;
+  background: #ffffde;
+  border: 1px solid #aaaa33;
+  border-radius: 2px;
+  pointer-events: none;
+  z-index: 100; }
+
+#mermaid-1529465698147 .actor {
+  stroke: #CCCCFF;
+  fill: #ECECFF; }
+
+#mermaid-1529465698147 text.actor {
+  fill: black;
+  stroke: none; }
+
+#mermaid-1529465698147 .actor-line {
+  stroke: grey; }
+
+#mermaid-1529465698147 .messageLine0 {
+  stroke-width: 1.5;
+  stroke-dasharray: '2 2';
+  marker-end: 'url(#arrowhead)';
+  stroke: #333; }
+
+#mermaid-1529465698147 .messageLine1 {
+  stroke-width: 1.5;
+  stroke-dasharray: '2 2';
+  stroke: #333; }
+
+#mermaid-1529465698147 #arrowhead {
+  fill: #333; }
+
+#mermaid-1529465698147 #crosshead path {
+  fill: #333 !important;
+  stroke: #333 !important; }
+
+#mermaid-1529465698147 .messageText {
+  fill: #333;
+  stroke: none; }
+
+#mermaid-1529465698147 .labelBox {
+  stroke: #CCCCFF;
+  fill: #ECECFF; }
+
+#mermaid-1529465698147 .labelText {
+  fill: black;
+  stroke: none; }
+
+#mermaid-1529465698147 .loopText {
+  fill: black;
+  stroke: none; }
+
+#mermaid-1529465698147 .loopLine {
+  stroke-width: 2;
+  stroke-dasharray: '2 2';
+  marker-end: 'url(#arrowhead)';
+  stroke: #CCCCFF; }
+
+#mermaid-1529465698147 .note {
+  stroke: #aaaa33;
+  fill: #fff5ad; }
+
+#mermaid-1529465698147 .noteText {
+  fill: black;
+  stroke: none;
+  font-family: 'trebuchet ms', verdana, arial;
+  font-size: 14px; }
+
+
+#mermaid-1529465698147 .section {
+  stroke: none;
+  opacity: 0.2; }
+
+#mermaid-1529465698147 .section0 {
+  fill: rgba(102, 102, 255, 0.49); }
+
+#mermaid-1529465698147 .section2 {
+  fill: #fff400; }
+
+#mermaid-1529465698147 .section1,
+#mermaid-1529465698147 .section3 {
+  fill: white;
+  opacity: 0.2; }
+
+#mermaid-1529465698147 .sectionTitle0 {
+  fill: #333; }
+
+#mermaid-1529465698147 .sectionTitle1 {
+  fill: #333; }
+
+#mermaid-1529465698147 .sectionTitle2 {
+  fill: #333; }
+
+#mermaid-1529465698147 .sectionTitle3 {
+  fill: #333; }
+
+#mermaid-1529465698147 .sectionTitle {
+  text-anchor: start;
+  font-size: 11px;
+  text-height: 14px; }
+
+
+#mermaid-1529465698147 .grid .tick {
+  stroke: lightgrey;
+  opacity: 0.3;
+  shape-rendering: crispEdges; }
+
+#mermaid-1529465698147 .grid path {
+  stroke-width: 0; }
+
+
+#mermaid-1529465698147 .today {
+  fill: none;
+  stroke: red;
+  stroke-width: 2px; }
+
+
+
+#mermaid-1529465698147 .task {
+  stroke-width: 2; }
+
+#mermaid-1529465698147 .taskText {
+  text-anchor: middle;
+  font-size: 11px; }
+
+#mermaid-1529465698147 .taskTextOutsideRight {
+  fill: black;
+  text-anchor: start;
+  font-size: 11px; }
+
+#mermaid-1529465698147 .taskTextOutsideLeft {
+  fill: black;
+  text-anchor: end;
+  font-size: 11px; }
+
+
+#mermaid-1529465698147 .taskText0,
+#mermaid-1529465698147 .taskText1,
+#mermaid-1529465698147 .taskText2,
+#mermaid-1529465698147 .taskText3 {
+  fill: white; }
+
+#mermaid-1529465698147 .task0,
+#mermaid-1529465698147 .task1,
+#mermaid-1529465698147 .task2,
+#mermaid-1529465698147 .task3 {
+  fill: #8a90dd;
+  stroke: #534fbc; }
+
+#mermaid-1529465698147 .taskTextOutside0,
+#mermaid-1529465698147 .taskTextOutside2 {
+  fill: black; }
+
+#mermaid-1529465698147 .taskTextOutside1,
+#mermaid-1529465698147 .taskTextOutside3 {
+  fill: black; }
+
+
+#mermaid-1529465698147 .active0,
+#mermaid-1529465698147 .active1,
+#mermaid-1529465698147 .active2,
+#mermaid-1529465698147 .active3 {
+  fill: #bfc7ff;
+  stroke: #534fbc; }
+
+#mermaid-1529465698147 .activeText0,
+#mermaid-1529465698147 .activeText1,
+#mermaid-1529465698147 .activeText2,
+#mermaid-1529465698147 .activeText3 {
+  fill: black !important; }
+
+
+#mermaid-1529465698147 .done0,
+#mermaid-1529465698147 .done1,
+#mermaid-1529465698147 .done2,
+#mermaid-1529465698147 .done3 {
+  stroke: grey;
+  fill: lightgrey;
+  stroke-width: 2; }
+
+#mermaid-1529465698147 .doneText0,
+#mermaid-1529465698147 .doneText1,
+#mermaid-1529465698147 .doneText2,
+#mermaid-1529465698147 .doneText3 {
+  fill: black !important; }
+
+
+#mermaid-1529465698147 .crit0,
+#mermaid-1529465698147 .crit1,
+#mermaid-1529465698147 .crit2,
+#mermaid-1529465698147 .crit3 {
+  stroke: #ff8888;
+  fill: red;
+  stroke-width: 2; }
+
+#mermaid-1529465698147 .activeCrit0,
+#mermaid-1529465698147 .activeCrit1,
+#mermaid-1529465698147 .activeCrit2,
+#mermaid-1529465698147 .activeCrit3 {
+  stroke: #ff8888;
+  fill: #bfc7ff;
+  stroke-width: 2; }
+
+#mermaid-1529465698147 .doneCrit0,
+#mermaid-1529465698147 .doneCrit1,
+#mermaid-1529465698147 .doneCrit2,
+#mermaid-1529465698147 .doneCrit3 {
+  stroke: #ff8888;
+  fill: lightgrey;
+  stroke-width: 2;
+  cursor: pointer;
+  shape-rendering: crispEdges; }
+
+#mermaid-1529465698147 .doneCritText0,
+#mermaid-1529465698147 .doneCritText1,
+#mermaid-1529465698147 .doneCritText2,
+#mermaid-1529465698147 .doneCritText3 {
+  fill: black !important; }
+
+#mermaid-1529465698147 .activeCritText0,
+#mermaid-1529465698147 .activeCritText1,
+#mermaid-1529465698147 .activeCritText2,
+#mermaid-1529465698147 .activeCritText3 {
+  fill: black !important; }
+
+#mermaid-1529465698147 .titleText {
+  text-anchor: middle;
+  font-size: 18px;
+  fill: black; }
+
+#mermaid-1529465698147 g.classGroup text {
+  fill: #9370DB;
+  stroke: none;
+  font-family: 'trebuchet ms', verdana, arial;
+  font-size: 10px; }
+
+#mermaid-1529465698147 g.classGroup rect {
+  fill: #ECECFF;
+  stroke: #9370DB; }
+
+#mermaid-1529465698147 g.classGroup line {
+  stroke: #9370DB;
+  stroke-width: 1; }
+
+#mermaid-1529465698147 .classLabel .box {
+  stroke: none;
+  stroke-width: 0;
+  fill: #ECECFF;
+  opacity: 0.5; }
+
+#mermaid-1529465698147 .classLabel .label {
+  fill: #9370DB;
+  font-size: 10px; }
+
+#mermaid-1529465698147 .relation {
+  stroke: #9370DB;
+  stroke-width: 1;
+  fill: none; }
+
+#mermaid-1529465698147 #compositionStart {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1; }
+
+#mermaid-1529465698147 #compositionEnd {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1; }
+
+#mermaid-1529465698147 #aggregationStart {
+  fill: #ECECFF;
+  stroke: #9370DB;
+  stroke-width: 1; }
+
+#mermaid-1529465698147 #aggregationEnd {
+  fill: #ECECFF;
+  stroke: #9370DB;
+  stroke-width: 1; }
+
+#mermaid-1529465698147 #dependencyStart {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1; }
+
+#mermaid-1529465698147 #dependencyEnd {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1; }
+
+#mermaid-1529465698147 #extensionStart {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1; }
+
+#mermaid-1529465698147 #extensionEnd {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1; }
+
+#mermaid-1529465698147 .commit-id,
+#mermaid-1529465698147 .commit-msg,
+#mermaid-1529465698147 .branch-label {
+  fill: lightgrey;
+  color: lightgrey; }
+</style><style>#mermaid-1529465698147 {
+    color: rgba(0, 0, 0, 0.65098);
+    font: normal normal normal normal 14px/21px "Monospaced Number", "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
+  }</style><g></g><g><line id="actor5221" x1="75" y1="5" x2="75" y2="1973.4375" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="75" dy="0">Remote Client</tspan></text></g><g><line id="actor5222" x1="275" y1="5" x2="275" y2="1973.4375" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="200" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="275" dy="0">Server Application</tspan></text></g><g><line id="actor5223" x1="475" y1="5" x2="475" y2="1973.4375" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="400" y="0" fill="#eaeaea" 
 stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="475" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="475" dy="0">Oak</tspan></text></g><g><line id="actor5224" x1="675" y1="5" x2="675" y2="1973.4375" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="600" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="675" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="675" dy="0">DataStore</tspan></text></g><g><line id="actor5225" x1="875" y1="5" x2="875" y2="1973.4375" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="800" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="875" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: midd
 le;"><tspan x="875" dy="0">Azure or S3</tspan></text></g><defs><marker id="arrowhead" refX="5" refY="2" markerWidth="6" markerHeight="4" orient="auto"><path d="M 0,0 V 4 L6,2 Z"></path></marker></defs><defs><marker id="crosshead" markerWidth="15" markerHeight="8" orient="auto" refX="16" refY="4"><path fill="black" stroke="#000000" stroke-width="1px" d="M 9,2 V 6 L16,4 Z" style="stroke-dasharray: 0px, 0px;"></path><path fill="none" stroke="#000000" stroke-width="1px" d="M 0,1 L 6,7 M 6,1 L 0,7" style="stroke-dasharray: 0px, 0px;"></path></marker></defs><g><rect x="600" y="75" fill="#EDF2AE" stroke="#666" width="150" height="36.28125" rx="0" ry="0" class="note"></rect><text x="596" y="99" fill="black" class="noteText"><tspan x="616" fill="black">startup</tspan></text></g><g></g><g><text x="777.5" y="139.28125" class="messageText" style="text-anchor: middle;">connect and configure</text><line x1="680" y1="146.28125" x2="875" y2="146.28125" class="messageLine0" stroke-width="2" stroke="
 black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><rect x="-100" y="156.28125" fill="#EDF2AE" stroke="#666" width="150" height="36.28125" rx="0" ry="0" class="note"></rect><text x="-104" y="180.28125" fill="black" class="noteText"><tspan x="-84" fill="black">Phase 1: initiate</tspan></text></g><g><text x="175" y="220.5625" class="messageText" style="text-anchor: middle;">request to upload a binary</text><line x1="75" y1="227.5625" x2="275" y2="227.5625" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><rect x="270" y="229.5625" fill="#f4f4f4" stroke="#666" width="10" height="690.9375" rx="0" ry="0"></rect></g><g><text x="377.5" y="255.5625" class="messageText" style="text-anchor: middle;">initiateHttpUpload(path, maxSize, maxParts)</text><line x1="280" y1="262.5625" x2="475" y2="262.5625" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line><
 /g><g><rect x="470" y="264.5625" fill="#f4f4f4" stroke="#666" width="10" height="620.9375" rx="0" ry="0"></rect></g><g><rect x="400" y="272.5625" fill="#EDF2AE" stroke="#666" width="150" height="68.84375" rx="0" ry="0" class="note"></rect><text x="396" y="296.5625" fill="black" class="noteText"><tspan x="416" fill="black">permission check</tspan></text><text x="396" y="312.84375" fill="black" class="noteText"><tspan x="416" fill="black">to set_property</tspan></text><text x="396" y="329.125" fill="black" class="noteText"><tspan x="416" fill="black">at path</tspan></text></g><g><text x="575" y="369.40625" class="messageText" style="text-anchor: middle;">initiateHttpUpload(maxSize, maxParts)</text><line x1="480" y1="376.40625" x2="670" y2="376.40625" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><rect x="675" y="378.40625" fill="#f4f4f4" stroke="#666" width="10" height="472.09375" rx="0" ry="0"></rect></g><g><rect x
 ="600" y="411.40625" fill="#EDF2AE" stroke="#666" width="150" height="36.28125" rx="0" ry="0" class="note"></rect><text x="596" y="435.40625" fill="black" class="noteText"><tspan x="616" fill="black">new random blob id</tspan></text></g><g><text x="780" y="475.6875" class="messageText" style="text-anchor: middle;">check if  blob id exists</text><line x1="685" y1="482.6875" x2="875" y2="482.6875" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><line x1="590" y1="386.40625" x2="885" y2="386.40625" class="loopLine"></line><line x1="885" y1="386.40625" x2="885" y2="492.6875" class="loopLine"></line><line x1="590" y1="492.6875" x2="885" y2="492.6875" class="loopLine"></line><line x1="590" y1="386.40625" x2="590" y2="492.6875" class="loopLine"></line><polygon points="590,386.40625 640,386.40625 640,399.40625 631.6,406.40625 590,406.40625" class="labelBox"></polygon><text x="597.5" y="401.40625" fill="black" class="labelTe
 xt"><tspan x="597.5" fill="black">loop</tspan></text><text x="737.5" y="401.40625" fill="black" class="loopText" style="text-anchor: middle;"><tspan x="737.5" fill="black">[ until unused blob id found ]</tspan></text></g><g><rect x="600" y="502.6875" fill="#EDF2AE" stroke="#666" width="150" height="68.84375" rx="0" ry="0" class="note"></rect><text x="596" y="526.6875" fill="black" class="noteText"><tspan x="616" fill="black">calculate number</tspan></text><text x="596" y="542.96875" fill="black" class="noteText"><tspan x="616" fill="black">of parts using</tspan></text><text x="596" y="559.25" fill="black" class="noteText"><tspan x="616" fill="black">storage limits</tspan></text></g><g><text x="780" y="624.53125" class="messageText" style="text-anchor: middle;">initiate multipart upload (S3)</text><line x1="685" y1="631.53125" x2="875" y2="631.53125" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><line x1="660" y1="
 581.53125" x2="885" y2="581.53125" class="loopLine"></line><line x1="885" y1="581.53125" x2="885" y2="641.53125" class="loopLine"></line><line x1="660" y1="641.53125" x2="885" y2="641.53125" class="loopLine"></line><line x1="660" y1="581.53125" x2="660" y2="641.53125" class="loopLine"></line><polygon points="660,581.53125 710,581.53125 710,594.53125 701.6,601.53125 660,601.53125" class="labelBox"></polygon><text x="667.5" y="596.53125" fill="black" class="labelText"><tspan x="667.5" fill="black">opt</tspan></text><text x="772.5" y="596.53125" fill="black" class="loopText" style="text-anchor: middle;"><tspan x="772.5" fill="black">[ if multipart ]</tspan></text></g><g><rect x="600" y="651.53125" fill="#EDF2AE" stroke="#666" width="150" height="52.5625" rx="0" ry="0" class="note"></rect><text x="596" y="675.53125" fill="black" class="noteText"><tspan x="616" fill="black">generate</tspan></text><text x="596" y="691.8125" fill="black" class="noteText"><tspan x="616" fill="black">pre-sig
 ned URL(s)</tspan></text></g><g><rect x="600" y="714.09375" fill="#EDF2AE" stroke="#666" width="150" height="101.40625" rx="0" ry="0" class="note"></rect><text x="596" y="738.09375" fill="black" class="noteText"><tspan x="616" fill="black">generate secure</tspan></text><text x="596" y="754.375" fill="black" class="noteText"><tspan x="616" fill="black">upload token</tspan></text><text x="596" y="770.65625" fill="black" class="noteText"><tspan x="616" fill="black">w/ blob id</tspan></text><text x="596" y="786.9375" fill="black" class="noteText"><tspan x="616" fill="black">multipart flag</tspan></text><text x="596" y="803.21875" fill="black" class="noteText"><tspan x="616" fill="black">and upload id (S3)</tspan></text></g><g><text x="575" y="843.5" class="messageText" style="text-anchor: middle;">`partURLs`, `uploadToken`</text><line x1="670" y1="850.5" x2="480" y2="850.5" class="messageLine1" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3px, 3p
 x; fill: none;"></line></g><g><text x="375" y="878.5" class="messageText" style="text-anchor: middle;">`partURLs`, `uploadToken`</text><line x1="470" y1="885.5" x2="280" y2="885.5" class="messageLine1" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3px, 3px; fill: none;"></line></g><g><text x="172.5" y="913.5" class="messageText" style="text-anchor: middle;">json with `partURLs`, `completeURL`</text><line x1="270" y1="920.5" x2="75" y2="920.5" class="messageLine1" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3px, 3px; fill: none;"></line></g><g><rect x="-100" y="930.5" fill="#EDF2AE" stroke="#666" width="150" height="36.28125" rx="0" ry="0" class="note"></rect><text x="-104" y="954.5" fill="black" class="noteText"><tspan x="-84" fill="black">Phase 2: upload</tspan></text></g><g><text x="475" y="1019.78125" class="messageText" style="text-anchor: middle;">upload binary part to `partURL`</text><line x1="75
 " y1="1026.78125" x2="875" y2="1026.78125" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><line x1="65" y1="976.78125" x2="885" y2="976.78125" class="loopLine"></line><line x1="885" y1="976.78125" x2="885" y2="1036.78125" class="loopLine"></line><line x1="65" y1="1036.78125" x2="885" y2="1036.78125" class="loopLine"></line><line x1="65" y1="976.78125" x2="65" y2="1036.78125" class="loopLine"></line><polygon points="65,976.78125 115,976.78125 115,989.78125 106.6,996.78125 65,996.78125" class="labelBox"></polygon><text x="72.5" y="991.78125" fill="black" class="labelText"><tspan x="72.5" fill="black">loop</tspan></text><text x="475" y="991.78125" fill="black" class="loopText" style="text-anchor: middle;"><tspan x="475" fill="black">[ for each part (chunk) and partURL ]</tspan></text></g><g><rect x="-100" y="1046.78125" fill="#EDF2AE" stroke="#666" width="150" height="52.5625" rx="0" ry="0" class="note"></rect><text x
 ="-104" y="1070.78125" fill="black" class="noteText"><tspan x="-84" fill="black">Phase 3: complete </tspan></text><text x="-104" y="1087.0625" fill="black" class="noteText"><tspan x="-84" fill="black">&amp; persist</tspan></text></g><g><text x="175" y="1127.34375" class="messageText" style="text-anchor: middle;">request to `completeURL`</text><line x1="75" y1="1134.34375" x2="275" y2="1134.34375" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><rect x="270" y="1136.34375" fill="#f4f4f4" stroke="#666" width="10" height="752.09375" rx="0" ry="0"></rect></g><g><text x="377.5" y="1162.34375" class="messageText" style="text-anchor: middle;">completeHttpUpload(uploadToken)</text><line x1="280" y1="1169.34375" x2="475" y2="1169.34375" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><rect x="470" y="1171.34375" fill="#f4f4f4" stroke="#666" width="10" height
 ="419.40625" rx="0" ry="0"></rect></g><g><text x="575" y="1197.34375" class="messageText" style="text-anchor: middle;">completeHttpUpload(uploadToken)</text><line x1="480" y1="1204.34375" x2="670" y2="1204.34375" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><rect x="675" y="1206.34375" fill="#f4f4f4" stroke="#666" width="10" height="349.40625" rx="0" ry="0"></rect></g><g><rect x="600" y="1214.34375" fill="#EDF2AE" stroke="#666" width="150" height="36.28125" rx="0" ry="0" class="note"></rect><text x="596" y="1238.34375" fill="black" class="noteText"><tspan x="616" fill="black">validate uploadToken</tspan></text></g><g><rect x="600" y="1260.625" fill="#EDF2AE" stroke="#666" width="150" height="85.125" rx="0" ry="0" class="note"></rect><text x="596" y="1284.625" fill="black" class="noteText"><tspan x="616" fill="black">extract blob id</tspan></text><text x="596" y="1300.90625" fill="black" class="noteText"><tspan x=
 "616" fill="black">extract if multipart</tspan></text><text x="596" y="1317.1875" fill="black" class="noteText"><tspan x="616" fill="black">extract multipart</tspan></text><text x="596" y="1333.46875" fill="black" class="noteText"><tspan x="616" fill="black">upload id (S3)</tspan></text></g><g><text x="780" y="1398.75" class="messageText" style="text-anchor: middle;">check if object exists</text><line x1="685" y1="1405.75" x2="875" y2="1405.75" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><line x1="660" y1="1355.75" x2="885" y2="1355.75" class="loopLine"></line><line x1="885" y1="1355.75" x2="885" y2="1415.75" class="loopLine"></line><line x1="660" y1="1415.75" x2="885" y2="1415.75" class="loopLine"></line><line x1="660" y1="1355.75" x2="660" y2="1415.75" class="loopLine"></line><polygon points="660,1355.75 710,1355.75 710,1368.75 701.6,1375.75 660,1375.75" class="labelBox"></polygon><text x="667.5" y="1370.75" f
 ill="black" class="labelText"><tspan x="667.5" fill="black">opt</tspan></text><text x="772.5" y="1370.75" fill="black" class="loopText" style="text-anchor: middle;"><tspan x="772.5" fill="black">[ if single put ]</tspan></text></g><g><text x="780" y="1468.75" class="messageText" style="text-anchor: middle;">get part list</text><line x1="685" y1="1475.75" x2="875" y2="1475.75" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="780" y="1503.75" class="messageText" style="text-anchor: middle;">complete multipart upload</text><line x1="685" y1="1510.75" x2="875" y2="1510.75" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><line x1="660" y1="1425.75" x2="885" y2="1425.75" class="loopLine"></line><line x1="885" y1="1425.75" x2="885" y2="1520.75" class="loopLine"></line><line x1="660" y1="1520.75" x2="885" y2="1520.75" class="loopLine"></line><line x
 1="660" y1="1425.75" x2="660" y2="1520.75" class="loopLine"></line><polygon points="660,1425.75 710,1425.75 710,1438.75 701.6,1445.75 660,1445.75" class="labelBox"></polygon><text x="667.5" y="1440.75" fill="black" class="labelText"><tspan x="667.5" fill="black">opt</tspan></text><text x="772.5" y="1440.75" fill="black" class="loopText" style="text-anchor: middle;"><tspan x="772.5" fill="black">[ else if multipart ]</tspan></text></g><g><text x="575" y="1548.75" class="messageText" style="text-anchor: middle;">`blobId`</text><line x1="670" y1="1555.75" x2="480" y2="1555.75" class="messageLine1" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3px, 3px; fill: none;"></line></g><g><text x="375" y="1583.75" class="messageText" style="text-anchor: middle;">JCR Binary `binary`</text><line x1="470" y1="1590.75" x2="280" y2="1590.75" class="messageLine1" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3px, 3px; fill
 : none;"></line></g><g><text x="377.5" y="1618.75" class="messageText" style="text-anchor: middle;">create nt:file structure</text><line x1="280" y1="1625.75" x2="475" y2="1625.75" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="377.5" y="1653.75" class="messageText" style="text-anchor: middle;">set `binary` as jcr:data</text><line x1="280" y1="1660.75" x2="475" y2="1660.75" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="377.5" y="1688.75" class="messageText" style="text-anchor: middle;">save()</text><line x1="280" y1="1695.75" x2="475" y2="1695.75" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><rect x="400" y="1705.75" fill="#EDF2AE" stroke="#666" width="150" height="52.5625" rx="0" ry="0" class="note"></rect><text x="396" y="1729.75" fill="black" class="noteTe
 xt"><tspan x="416" fill="black">persist in NodeStore</tspan></text><text x="396" y="1746.03125" fill="black" class="noteText"><tspan x="416" fill="black">w/ blobId reference</tspan></text></g><g><rect x="200" y="1768.3125" fill="#EDF2AE" stroke="#666" width="150" height="85.125" rx="0" ry="0" class="note"></rect><text x="196" y="1792.3125" fill="black" class="noteText"><tspan x="216" fill="black">trigger any</tspan></text><text x="196" y="1808.59375" fill="black" class="noteText"><tspan x="216" fill="black">application events</tspan></text><text x="196" y="1824.875" fill="black" class="noteText"><tspan x="216" fill="black">upon binary upload</tspan></text><text x="196" y="1841.15625" fill="black" class="noteText"><tspan x="216" fill="black">(if needed)</tspan></text></g><g><text x="172.5" y="1881.4375" class="messageText" style="text-anchor: middle;">done</text><line x1="270" y1="1888.4375" x2="75" y2="1888.4375" class="messageLine1" stroke-width="2" stroke="black" marker-end="url(#
 arrowhead)" style="stroke-dasharray: 3px, 3px; fill: none;"></line></g><g><rect x="0" y="1908.4375" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="1940.9375" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="75" dy="0">Remote Client</tspan></text></g><g><rect x="200" y="1908.4375" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="1940.9375" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="275" dy="0">Server Application</tspan></text></g><g><rect x="400" y="1908.4375" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="475" y="1940.9375" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="475" dy="0">Oak</tspan></text></g><g><rect x="600" y="1908.4375" f
 ill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="675" y="1940.9375" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="675" dy="0">DataStore</tspan></text></g><g><rect x="800" y="1908.4375" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="875" y="1940.9375" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="875" dy="0">Azure or S3</tspan></text></g></svg>
\ No newline at end of file

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513390/115513395.svg
------------------------------------------------------------------------------
    svn:eol-style = native

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

Added: jackrabbit/site/live/archive/wiki/JCR/attachments/115513408/115513409.patch
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/attachments/115513408/115513409.patch?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/attachments/115513408/115513409.patch (added)
+++ jackrabbit/site/live/archive/wiki/JCR/attachments/115513408/115513409.patch Mon May 20 11:23:18 2019
@@ -0,0 +1,116 @@
+Index: pom.xml
+===================================================================
+--- pom.xml	(revision 668156)
++++ pom.xml	(working copy)
+@@ -79,6 +79,16 @@
+       <artifactId>jackrabbit-jcr-rmi</artifactId>
+     </dependency>
+     <dependency>
++      <groupId>org.apache.jackrabbit</groupId>
++      <artifactId>jackrabbit-spi-rmi</artifactId>
++      <version>1.5-SNAPSHOT</version>
++    </dependency>
++    <dependency>
++      <groupId>org.apache.jackrabbit</groupId>
++      <artifactId>jackrabbit-spi2jcr</artifactId>
++      <version>1.5-SNAPSHOT</version>
++    </dependency>
++    <dependency>
+       <groupId>org.slf4j</groupId>
+       <artifactId>slf4j-log4j12</artifactId>
+     </dependency>
+Index: src/main/java/org/apache/jackrabbit/j2ee/SPIServerStartupServlet.java
+===================================================================
+--- src/main/java/org/apache/jackrabbit/j2ee/SPIServerStartupServlet.java	(revision 0)
++++ src/main/java/org/apache/jackrabbit/j2ee/SPIServerStartupServlet.java	(revision 0)
+@@ -0,0 +1,90 @@
++package org.apache.jackrabbit.j2ee;
++
++import java.rmi.AlreadyBoundException;
++import java.rmi.RemoteException;
++import java.rmi.registry.LocateRegistry;
++import java.rmi.registry.Registry;
++import java.util.Hashtable;
++
++import javax.jcr.Repository;
++import javax.naming.Context;
++import javax.naming.InitialContext;
++import javax.naming.NamingException;
++import javax.servlet.ServletContext;
++import javax.servlet.ServletException;
++import javax.servlet.http.HttpServlet;
++
++import org.apache.jackrabbit.spi.Name;
++import org.apache.jackrabbit.spi.RepositoryService;
++import org.apache.jackrabbit.spi.rmi.server.ServerRepositoryService;
++import org.apache.jackrabbit.spi2jcr.BatchReadConfig;
++import org.apache.jackrabbit.spi2jcr.RepositoryServiceImpl;
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
++public class SPIServerStartupServlet extends HttpServlet {
++    /**
++     * the default logger
++     */
++    private static final Logger log = LoggerFactory.getLogger(SPIServerStartupServlet.class);
++
++    private ServerRepositoryService remoteService;
++    
++	public void init() throws ServletException {
++		super.init();
++
++		ServletContext servletContext = getServletContext();
++		RepositoryStartupServlet repoServlet = RepositoryStartupServlet.getInstance(servletContext);
++		
++		BootstrapConfig bootConfig = repoServlet.getConfig();
++		
++        Hashtable env = new Hashtable();
++        env.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory");
++        env.put(Context.PROVIDER_URL, "http://www.apache.org/jackrabbit");
++		try {
++			InitialContext ctx = new InitialContext(env);
++			Repository repository = (Repository) ctx.lookup("jackrabbit.repository");
++			log.info("Found repository: " + repository);
++			
++	        RepositoryService repoService = new RepositoryServiceImpl(repository, new BatchReadConfig(){
++	        	// increase the default depth for efficiency 
++	        	public int getDepth(Name ntName) {
++	        		int defaultDepth = super.getDepth(ntName);
++	        		if(defaultDepth == DEPTH_DEFAULT){
++	        			return 1;
++	        		}
++	        		return defaultDepth;
++	        	}
++	        });
++	        log.info("Wrapped with SPI2JCR");
++
++	        // create spi server
++	        remoteService = new ServerRepositoryService(repoService);
++	        log.info("Wrapped with SPI-RMI");
++
++	        // register server
++	        Registry reg = LocateRegistry.getRegistry(bootConfig.getRmiConfig().getRmiHost(), Registry.REGISTRY_PORT);
++	        reg.bind("jackrabbit.spi-server", remoteService);
++	        log.info("Bound to RMI Registry");
++
++	        String[] list = reg.list();
++	        String listStr = "";
++	        for (int i=0; i<list.length; i++) {
++				listStr += list[i] + ", ";
++			}
++	        
++	        log.info("Currently bound objects: " + listStr);
++			
++		} catch (NamingException e) {
++			// TODO Auto-generated catch block
++			e.printStackTrace();
++		} catch (RemoteException e) {
++			// TODO Auto-generated catch block
++			e.printStackTrace();
++		} catch (AlreadyBoundException e) {
++			// TODO Auto-generated catch block
++			e.printStackTrace();
++		}
++
++	}
++}

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513408/115513409.patch
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513408/115513409.patch
------------------------------------------------------------------------------
    svn:executable = *

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Added: jackrabbit/site/live/archive/wiki/JCR/attachments/115513430/115513431.xml
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/attachments/115513430/115513431.xml?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/attachments/115513430/115513431.xml (added)
+++ jackrabbit/site/live/archive/wiki/JCR/attachments/115513430/115513431.xml Mon May 20 11:23:18 2019
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
+<web-app>
+    <display-name>Jackrabbit JCR Server</display-name>
+
+    <!-- ====================================================================== -->
+    <!-- L O G G I N G   S E R V L E T                                          -->
+    <!-- ====================================================================== -->
+    <servlet>
+        <servlet-name>Logging</servlet-name>
+        <description>The logging servlet configures the Log4J logging facility.</description>
+        <servlet-class>org.apache.jackrabbit.j2ee.LoggingServlet</servlet-class>
+
+        <init-param>
+            <param-name>log4j-config</param-name>
+            <param-value>/WEB-INF/log4j.xml</param-value>
+            <description>initial log4j configuration</description>
+        </init-param>
+
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- ====================================================================== -->
+    <!-- R E P O S I T O R Y   S T A R T U P  S E R V L E T                     -->
+    <!-- ====================================================================== -->
+    <!--  
+    <servlet>
+        <servlet-name>RepositoryStartup</servlet-name>
+        <description>
+            Repository servlet that starts the repository and registers it to JNDI ans RMI.
+            If you already have the repository registered in this appservers JNDI context,
+            or if its accessible via RMI, you do not need to use this servlet.
+        </description>
+        <servlet-class>org.apache.jackrabbit.j2ee.RepositoryStartupServlet</servlet-class>
+
+        <init-param>
+            <param-name>repository-config</param-name>
+            <param-value>/WEB-INF/repository/repository.xml</param-value>
+            <description>the repository config location</description>
+        </init-param>
+
+        <init-param>
+            <param-name>repository-home</param-name>
+            <param-value>jackrabbit/repository</param-value>
+            <description>the repository home</description>
+        </init-param>
+
+        <init-param>
+            <param-name>repository-name</param-name>
+            <param-value>jackrabbit.repository</param-value>
+            <description>Repository Name under which the repository is registered via JNDI/RMI</description>
+        </init-param>
+	-->
+        <!--
+            the following 3 parameters deal with registering the repository to
+            a RMI registry. if all parameters are omitted, the repository will
+            not be registered.
+        -->
+        <!--
+        <init-param>
+            <param-name>rmi-port</param-name>
+            <param-value>0</param-value>
+            <description>
+                The RMI port for registering the repository in the RMI Registry.
+                If equals 0, the default port is used.
+            </description>
+        </init-param>
+        <init-param>
+            <param-name>rmi-host</param-name>
+            <param-value>localhost</param-value>
+            <description>
+                The RMI host for registering the repository in the RMI Registry.
+                If equals "" or missing, the default host is used.
+            </description>
+        </init-param>
+        <init-param>
+            <param-name>rmi-uri</param-name>
+            <param-value></param-value>
+            <description>
+                The RMI uri for registering the repository in the RMI Registry.
+                If missing, the uri is composed using the other rmi parameters
+                and will have the format: //{rmi-host}:{rmi-port}/{repository-name}
+            </description>
+        </init-param>
+        -->
+        <!--
+            JNDI environment variables for creating the initial context
+            (all init parameters starting with java.naming.* will be added to the initial context environment).
+        -->
+     <!-- 
+        <init-param>
+            <param-name>java.naming.provider.url</param-name>
+            <param-value>http://www.apache.org/jackrabbit</param-value>
+        </init-param>
+        <init-param>
+            <param-name>java.naming.factory.initial</param-name>
+            <param-value>org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory</param-value>
+        </init-param>
+
+        <load-on-startup>2</load-on-startup>
+    </servlet>
+     -->
+
+    <!-- ====================================================================== -->
+    <!-- R E P O S I T O R Y   S E R V L E T                                    -->
+    <!-- ====================================================================== -->
+    <servlet>
+        <servlet-name>Repository</servlet-name>
+        <description>
+            This servlet provides other servlets and jsps a common way to access
+            the repository. The repository can be accessed via JNDI, RMI or Webdav.
+        </description>
+        <servlet-class>org.apache.jackrabbit.j2ee.RepositoryAccessServlet</servlet-class>
+
+        <init-param>
+            <param-name>repository-name</param-name>
+            <param-value>java:jcr/local</param-value>
+            <description>Repository Name that is used to retrieve it via JNDI</description>
+        </init-param>
+
+        <!--
+        <init-param>
+            <param-name>missing-auth-mapping</param-name>
+            <param-value>anonymous:anonymous</param-value>
+            <description>
+                Defines how a missing authorization header should be handled.
+                1) If this init-param is missing, a 401 response is generated.
+                   This is suiteable for clients (eg. webdav clients) for which
+                   sending a proper authorization header is not possible if the
+                   server never sent a 401.
+                2) If this init-param is present with an empty value,
+                   null-credentials are returned, thus forcing an null login
+                   on the repository.
+                3) If this init-param has a 'user:password' value, the respective
+                   simple credentials are generated.
+            </description>
+        </init-param>
+        -->
+
+        <!--
+            JNDI environment variables for creating the initial context
+            (all init parameters starting with java.naming.* will be added to the initial context environment).
+
+        <init-param>
+            <param-name>java.naming.provider.url</param-name>
+            <param-value>http://www.apache.org/jackrabbit</param-value>
+        </init-param>
+        <init-param>
+            <param-name>java.naming.factory.initial</param-name>
+            <param-value>org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory</param-value>
+        </init-param>
+        -->
+        <!--
+            RMI url, if RMI remoting is needed
+        -->
+        <!--
+        <init-param>
+            <param-name>rmi-uri</param-name>
+            <param-value>///jackrabbit.repository</param-value>
+            <description>The URI for the RMI connection.</description>
+        </init-param>
+        -->
+
+        <load-on-startup>3</load-on-startup>
+    </servlet>
+
+    <!-- ====================================================================== -->
+    <!-- W E B D A V  S E R V L E T                                              -->
+    <!-- ====================================================================== -->
+    <servlet>
+        <servlet-name>Webdav</servlet-name>
+        <description>
+            The webdav servlet that connects HTTP request to the repository.
+        </description>
+        <servlet-class>org.apache.jackrabbit.j2ee.SimpleWebdavServlet</servlet-class>
+
+        <init-param>
+            <param-name>resource-path-prefix</param-name>
+            <param-value>/repository</param-value>
+            <description>
+                defines the prefix for spooling resources out of the repository.
+            </description>
+        </init-param>
+        <!--
+            Optional parameter to define the value of the 'WWW-Authenticate' header
+        -->
+        <!--
+        <init-param>
+            <param-name>authenticate-header</param-name>
+            <param-value>Basic realm="Jackrabbit Webdav Server"</param-value>
+            <description>
+                Defines the value of the 'WWW-Authenticate' header.
+            </description>
+        </init-param>
+        -->
+        <!--
+            Parameter used to configure behaviour of webdav resources such as:
+            - destinction between collections and non-collections
+            - resource filtering
+        -->
+        <init-param>
+            <param-name>resource-config</param-name>
+            <param-value>/WEB-INF/config.xml</param-value>
+            <description>
+                Defines various dav-resource configuration parameters.
+            </description>
+        </init-param>
+        <load-on-startup>4</load-on-startup>
+    </servlet>
+
+    <!-- ====================================================================== -->
+    <!-- W E B D A V  S E R V E R  S E R V L E T                                  -->
+    <!-- ====================================================================== -->
+    <servlet>
+        <servlet-name>JCRWebdavServer</servlet-name>
+        <description>
+            The webdav servlet that connects HTTP request to the repository.
+        </description>
+        <servlet-class>org.apache.jackrabbit.j2ee.JCRWebdavServerServlet</servlet-class>
+        <!--
+            Optional parameter to define the value of the 'WWW-Authenticate' header
+        -->
+        <!--
+        <init-param>
+            <param-name>authenticate-header</param-name>
+            <param-value>Basic realm="Jackrabbit Webdav Server"</param-value>
+            <description>
+                Defines the value of the 'WWW-Authenticate' header.
+            </description>
+        </init-param>
+        -->
+        <init-param>
+            <param-name>resource-path-prefix</param-name>
+            <param-value>/server</param-value>
+            <description>
+                defines the prefix for spooling resources out of the repository.
+            </description>
+        </init-param>
+        <load-on-startup>5</load-on-startup>
+    </servlet>
+
+    <!-- ====================================================================== -->
+    <!-- S E R V L E T   M A P P I N G                                          -->
+    <!-- ====================================================================== -->
+    <servlet-mapping>
+        <servlet-name>Webdav</servlet-name>
+        <url-pattern>/repository/*</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>JCRWebdavServer</servlet-name>
+        <url-pattern>/server/*</url-pattern>
+    </servlet-mapping>
+</web-app>
\ No newline at end of file

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513430/115513431.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513430/115513431.xml
------------------------------------------------------------------------------
    svn:executable = *

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

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513448/115513449.pdf
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513448/115513449.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf

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

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513475/115513476.jpg
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513475/115513476.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/site/live/archive/wiki/JCR/attachments/115513481/115513482.descriptor
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/attachments/115513481/115513482.descriptor?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/attachments/115513481/115513482.descriptor (added)
+++ jackrabbit/site/live/archive/wiki/JCR/attachments/115513481/115513482.descriptor Mon May 20 11:23:18 2019
@@ -0,0 +1,69 @@
+Index: oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/AbstractS3DataStoreService.java
+===================================================================
+--- oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/AbstractS3DataStoreService.java	(revision 1845812)
++++ oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/AbstractS3DataStoreService.java	(working copy)
+@@ -19,16 +19,24 @@
+ 
+ package org.apache.jackrabbit.oak.blob.cloud.s3;
+ 
++import java.util.Collections;
+ import java.util.Dictionary;
+ import java.util.Hashtable;
+ import java.util.Map;
+ import java.util.Properties;
+ 
++import javax.jcr.RepositoryException;
++
+ import org.apache.felix.scr.annotations.Component;
++import org.apache.jackrabbit.commons.SimpleValueFactory;
+ import org.apache.jackrabbit.core.data.DataStore;
+ import org.apache.jackrabbit.core.data.DataStoreException;
++import org.apache.jackrabbit.oak.api.Descriptors;
++import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
+ import org.apache.jackrabbit.oak.plugins.blob.AbstractSharedCachingDataStore;
+ import org.apache.jackrabbit.oak.plugins.blob.datastore.AbstractDataStoreService;
++import org.apache.jackrabbit.oak.spi.descriptors.GenericDescriptors;
++import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
+ import org.osgi.framework.Constants;
+ import org.osgi.framework.ServiceRegistration;
+ import org.osgi.service.component.ComponentContext;
+@@ -39,6 +47,8 @@
+ 
+     private ServiceRegistration delegateReg;
+ 
++    private Registration descRegistry;
++
+     @Override
+     protected DataStore createDataStore(ComponentContext context, Map<String, Object> config) {
+         Properties properties = new Properties();
+@@ -59,11 +69,30 @@
+ 
+         return dataStore;
+     }
++    
++    @Override
++    protected void activate(ComponentContext context, Map<String, Object> config) throws RepositoryException {
++        super.activate(context, config);
++        
++        registerDescriptor(context);
++    }
+ 
++    private void registerDescriptor(ComponentContext context) {
++        final GenericDescriptors desc = new GenericDescriptors();
++        desc.put("store.data.binary.upload", new SimpleValueFactory().createValue(true), true, false);
++        
++        OsgiWhiteboard whiteboard = new OsgiWhiteboard(context.getBundleContext());
++        descRegistry = whiteboard.register(Descriptors.class, desc, Collections.emptyMap());
++    }
++
+     protected void deactivate() throws DataStoreException {
+         if (delegateReg != null) {
+             delegateReg.unregister();
+         }
++        if (descRegistry != null) {
++            descRegistry.unregister();
++            descRegistry = null;
++        }
+         super.deactivate();
+     }
+ 

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513481/115513482.descriptor
------------------------------------------------------------------------------
    svn:executable = *

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

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513496/115513497.pdf
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513496/115513497.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf

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

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

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

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

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

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

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

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

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

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

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513508.jar
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513508.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513509.java
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513509.java?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513509.java (added)
+++ jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513509.java Mon May 20 11:23:18 2019
@@ -0,0 +1,186 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.core.security.jboss;
+
+import java.io.FileInputStream;
+import java.security.Principal;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.Set;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.RepositoryException;
+import javax.security.auth.Subject;
+
+import org.apache.jackrabbit.core.HierarchyManager;
+import org.apache.jackrabbit.core.ItemId;
+import org.apache.jackrabbit.core.security.AMContext;
+import org.apache.jackrabbit.core.security.AccessManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SimpleJbossAccessManager implements AccessManager {
+
+
+    private static Logger log = LoggerFactory.getLogger(SimpleJbossAccessManager.class);
+
+    /**
+     * Subject whose access rights this AccessManager should reflect
+     */
+    protected Subject subject;
+
+    /**
+     * hierarchy manager used for ACL-based access control model
+     */
+    protected HierarchyManager hierMgr;
+
+    private boolean initialized;
+
+    protected boolean system;
+    protected boolean anonymous;
+
+    /**
+     * Empty constructor
+     */
+    public SimpleJbossAccessManager() {
+        initialized = false;
+        anonymous = false;
+        system = false;
+    }
+
+    //--------------------------------------------------------< AccessManager >
+    /**
+     * {@inheritDoc}
+     */
+    public void init(AMContext context)
+            throws AccessDeniedException, Exception {
+        if (initialized) {
+            throw new IllegalStateException("already initialized");
+        }
+
+        subject = context.getSubject();
+        hierMgr = context.getHierarchyManager();
+        Set<Principal> ps = subject.getPrincipals();
+        
+        
+        Properties rolemaps = new Properties();
+        String rolemaploc = context.getHomeDir() + "/rolemappings.properties";
+        FileInputStream rolefs = new FileInputStream(rolemaploc);
+        rolemaps.load(rolefs);
+        rolefs.close();
+        log.info("Load jbossgroup role mappings from " + rolemaploc);
+        
+        for (Principal p : ps){
+//        	log.warn(p.getName());
+        	if (p.getName().equalsIgnoreCase("Roles")){
+//        		log.warn("listing roles:");
+//        		log.warn(p.getClass().toString());
+        		 org.jboss.security.SimpleGroup sg = (org.jboss.security.SimpleGroup)p;
+        		Enumeration<org.jboss.security.SimplePrincipal> em = sg.members();
+        		while (em.hasMoreElements()) {
+        			org.jboss.security.SimplePrincipal myp = em.nextElement();
+        			String role = rolemaps.getProperty(myp.getName());
+        			
+        			if (role != null && role.equalsIgnoreCase("full")){
+        				system = true;
+        			}else if (role != null && role.equalsIgnoreCase("read")){
+        				anonymous = true;
+        			}
+				}
+        	}
+        }
+        
+
+
+        // @todo check permission to access given workspace based on principals
+        initialized = true;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public synchronized void close() throws Exception {
+        if (!initialized) {
+            throw new IllegalStateException("not initialized");
+        }
+
+        initialized = false;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void checkPermission(ItemId id, int permissions)
+            throws AccessDeniedException, ItemNotFoundException,
+            RepositoryException {
+        if (!initialized) {
+            throw new IllegalStateException("not initialized");
+        }
+
+        if (system) {
+            // system has always all permissions
+            return;
+        } else if (anonymous) {
+            // anonymous is always denied WRITE & REMOVE permissions
+            if ((permissions & WRITE) == WRITE
+                    || (permissions & REMOVE) == REMOVE) {
+                throw new AccessDeniedException();
+            }
+        }else{
+        	//no permissions
+            throw new AccessDeniedException();
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isGranted(ItemId id, int permissions)
+            throws ItemNotFoundException, RepositoryException {
+        if (!initialized) {
+            throw new IllegalStateException("not initialized");
+        }
+
+        if (system) {
+            // system has always all permissions
+            return true;
+        } else if (anonymous) {
+            // anonymous is always denied WRITE & REMOVE premissions
+            if ((permissions & WRITE) == WRITE
+                    || (permissions & REMOVE) == REMOVE) {
+                return false;
+            }else{
+            	return true;
+            }
+        }
+        //default to false
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean canAccess(String workspaceName)
+            throws NoSuchWorkspaceException, RepositoryException {
+    	
+    	if (system || anonymous) return true;
+    	
+    	return false;
+    }
+}

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513509.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513509.java
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513510.xml
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513510.xml?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513510.xml (added)
+++ jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513510.xml Mon May 20 11:23:18 2019
@@ -0,0 +1,49 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+                             http://maven.apache.org/maven-v4_0_0.xsd ">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.jackrabbit</groupId>
+  <artifactId>SimpleJbossAccessManager</artifactId>
+  <packaging>jar</packaging>
+  <name>Simple role-based mapper and Jboss Access Manager for Jackrabbit</name>
+  <version>1.0-SNAPSHOT</version>
+  <description></description>
+  
+  
+<build>
+<plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <target>1.5</target>
+          <source>1.5</source>
+        </configuration>
+      </plugin>
+</plugins>
+</build>  
+    <dependencies>
+    <!-- 
+    note that jackrabbit-core pom.xml lists jsr170/jcr-1.0 dependency
+    instead of javax.jcr/jcr-1.0 dependency. Require
+    local/manual fix. -->
+  	<dependency>
+	    <groupId>org.apache.jackrabbit</groupId>
+	    <artifactId>jackrabbit-core</artifactId>
+	    <version>1.1</version>
+	</dependency>
+
+  	<dependency>
+	    <groupId>jboss</groupId>
+	    <artifactId>jbosssx</artifactId>
+	    <version>4.0.5.GA</version>
+<!-- point to lib location on local machine. No compliant jboss maven2 repo exists.
+	    <systemPath></systemPath>
+	    -->
+	</dependency>
+  </dependencies>
+
+
+
+
+</project>
\ No newline at end of file

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513510.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513507/115513510.xml
------------------------------------------------------------------------------
    svn:executable = *

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

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513516/115513517.pdf
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/115513516/115513517.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf

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

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/70731/3113013.gif
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/70731/3113013.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

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

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/70731/59671319.jpg
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/attachments/70731/59671319.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

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

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

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

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

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

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

Added: jackrabbit/site/live/archive/wiki/JCR/images/icons/bullet_blue.gif
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/images/icons/bullet_blue.gif?rev=1859550&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/site/live/archive/wiki/JCR/images/icons/bullet_blue.gif
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/images/icons/bullet_blue.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

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

Propchange: jackrabbit/site/live/archive/wiki/JCR/images/icons/contenttypes/home_page_16.png
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jackrabbit/site/live/archive/wiki/JCR/images/icons/contenttypes/home_page_16.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/forbidden.svg
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/forbidden.svg?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/forbidden.svg (added)
+++ jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/forbidden.svg Mon May 20 11:23:18 2019
@@ -0,0 +1 @@
+<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><circle fill="#DE350B" cx="8" cy="8" r="8"/><rect fill="#FFF" x="3" y="7" width="10" height="2" rx="1"/></g></svg>
\ No newline at end of file

Propchange: jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/forbidden.svg
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/forbidden.svg
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/smile.svg
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/smile.svg?rev=1859550&view=auto
==============================================================================
--- jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/smile.svg (added)
+++ jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/smile.svg Mon May 20 11:23:18 2019
@@ -0,0 +1 @@
+<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M0 16h16V0H0z"/></defs><g transform="matrix(1 0 0 -1 0 16)" fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><g mask="url(#b)" fill-rule="nonzero"><path d="M16 8A8 8 0 1 0 0 8a8 8 0 0 0 16 0" fill="#FFCC4D"/><path d="M4.673 5.502c.02-.08.52-1.946 3.327-1.946 2.808 0 3.307 1.866 3.326 1.946a.222.222 0 0 1-.371.212c-.009-.009-.869-.825-2.955-.825-2.086 0-2.947.816-2.955.825a.224.224 0 0 1-.266.035.222.222 0 0 1-.106-.247M6.444 10c0-.86-.497-1.556-1.11-1.556-.614 0-1.112.696-1.112 1.556 0 .86.498 1.556 1.111 1.556.614 0 1.111-.697 1.111-1.556M11.778 10c0-.86-.498-1.556-1.111-1.556-.614 0-1.111.696-1.111 1.556 0 .86.497 1.556 1.11 1.556.614 0 1.112-.697 1.112-1.556" fill="#664500"/></g></g></svg>
\ No newline at end of file

Propchange: jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/smile.svg
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/site/live/archive/wiki/JCR/images/icons/emoticons/smile.svg
------------------------------------------------------------------------------
    svn:executable = *