You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ch...@apache.org on 2017/08/11 10:24:08 UTC

svn commit: r1804769 - /jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/exporter/CNDStreamWriter.java

Author: chetanm
Date: Fri Aug 11 10:24:07 2017
New Revision: 1804769

URL: http://svn.apache.org/viewvc?rev=1804769&view=rev
Log:
OAK-6545 - Tooling to serialize NodeState as json along with blobs

Strip common types codes

Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/exporter/CNDStreamWriter.java

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/exporter/CNDStreamWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/exporter/CNDStreamWriter.java?rev=1804769&r1=1804768&r2=1804769&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/exporter/CNDStreamWriter.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/exporter/CNDStreamWriter.java Fri Aug 11 10:24:07 2017
@@ -22,15 +22,32 @@ package org.apache.jackrabbit.oak.export
 import java.io.Closeable;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.util.Set;
 
 import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableSet;
 import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
 import org.apache.jackrabbit.oak.commons.json.JsopWriter;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
+/**
+ * Writes nodes in CND format
+ *
+ * <pre>
+ *       + projects
+ *          - jcr:primaryType = "sling:OrderedFolder"
+ *          - jcr:mixinTypes = ["rep:AccessControllable"]
+ *          - jcr:createdBy = "admin"
+ *          - jcr:created = "2017-01-26T08:02:08.602+05:30"
+ *          - sling:resourceType = "sling/projects"
+ *          + rep:policy
+ *            - jcr:primaryType = "rep:ACL"
+ * </pre>
+ */
 class CNDStreamWriter implements JsopWriter, Closeable {
+    private static final Set<String> COMMON_TYPE_CODES = ImmutableSet.of("nam:", "dat:");
     private enum State {NONE, STARTED, BEGIN, END}
     private final PrintWriter w;
     private State arrayState = State.NONE;
@@ -99,7 +116,7 @@ class CNDStreamWriter implements JsopWri
 
     @Override
     public JsopWriter value(String value) {
-        return encodedValue(JsopBuilder.encode(value));
+        return encodedValue(JsopBuilder.encode(stripTypeCode(value)));
     }
 
     @Override
@@ -148,12 +165,24 @@ class CNDStreamWriter implements JsopWri
     }
 
     private void optionalResetArrayState() {
+        //Check that not within array
         checkState(arrayState == State.END || arrayState == State.NONE);
         if (arrayState == State.END) {
             arrayState = State.NONE;
         }
     }
 
+    private static String stripTypeCode(String value) {
+        if (value != null) {
+            for (String code : COMMON_TYPE_CODES){
+                if (value.startsWith(code)){
+                    return value.substring(code.length());
+                }
+            }
+        }
+        return value;
+    }
+
     //Unsupported operation. These are also not used by JsonSerializer
 
     @Override