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