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 ju...@apache.org on 2012/07/13 18:20:42 UTC
svn commit: r1361282 -
/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java
Author: jukka
Date: Fri Jul 13 16:20:42 2012
New Revision: 1361282
URL: http://svn.apache.org/viewvc?rev=1361282&view=rev
Log:
OAK-188: Invalid JSOP encoding in CommitBuilder
Use JsopBuilder instead of StringBuilder to generate JSOP
Modified:
jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java
Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java?rev=1361282&r1=1361281&r2=1361282&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java Fri Jul 13 16:20:42 2012
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.mk.model;
+import org.apache.jackrabbit.mk.json.JsopBuilder;
import org.apache.jackrabbit.mk.model.tree.DiffBuilder;
import org.apache.jackrabbit.mk.model.tree.NodeDelta;
import org.apache.jackrabbit.mk.store.NotFoundException;
@@ -448,26 +449,20 @@ public class CommitBuilder {
public Map<String, String> props = new HashMap<String, String>();
public Map<String, NodeTree> nodes = new HashMap<String, NodeTree>();
- void toJson(StringBuilder buf) {
+ void toJson(JsopBuilder buf) {
toJson(buf, this);
}
- private static void toJson(StringBuilder buf, NodeTree node) {
- buf.append('{');
+ private static void toJson(JsopBuilder buf, NodeTree node) {
+ buf.object();
for (String name : node.props.keySet()) {
- if (buf.charAt(buf.length() - 1) != '{') {
- buf.append(',');
- }
- buf.append('"').append(name).append("\":").append(node.props.get(name));
+ buf.key(name).encodedValue(node.props.get(name));
}
for (String name : node.nodes.keySet()) {
- if (buf.charAt(buf.length() - 1) != '{') {
- buf.append(',');
- }
- buf.append('"').append(name).append("\":");
+ buf.key(name);
toJson(buf, node.nodes.get(name));
}
- buf.append('}');
+ buf.endObject();
}
}
@@ -494,8 +489,8 @@ public class CommitBuilder {
@Override
String asDiff() {
- StringBuilder diff = new StringBuilder("+");
- diff.append('"').append(PathUtils.concat(parentNodePath, nodeName)).append("\":");
+ JsopBuilder diff = new JsopBuilder();
+ diff.tag('+').key(PathUtils.concat(parentNodePath, nodeName));
node.toJson(diff);
return diff.toString();
}
@@ -542,8 +537,8 @@ public class CommitBuilder {
@Override
String asDiff() {
- StringBuilder diff = new StringBuilder("-");
- diff.append('"').append(nodePath).append('"');
+ JsopBuilder diff = new JsopBuilder();
+ diff.tag('-').value(nodePath);
return diff.toString();
}
}
@@ -596,8 +591,8 @@ public class CommitBuilder {
@Override
String asDiff() {
- StringBuilder diff = new StringBuilder(">");
- diff.append('"').append(srcPath).append("\":\"").append(destPath).append('"');
+ JsopBuilder diff = new JsopBuilder();
+ diff.tag('>').key(srcPath).value(destPath);
return diff.toString();
}
}
@@ -639,10 +634,11 @@ public class CommitBuilder {
@Override
String asDiff() {
- StringBuilder diff = new StringBuilder("*");
- diff.append('"').append(srcPath).append("\":\"").append(destPath).append('"');
+ JsopBuilder diff = new JsopBuilder();
+ diff.tag('*').key(srcPath).value(destPath);
return diff.toString();
}
+
}
class SetProperty extends Change {
@@ -670,9 +666,15 @@ public class CommitBuilder {
@Override
String asDiff() {
- StringBuilder diff = new StringBuilder("^");
- diff.append('"').append(PathUtils.concat(nodePath, propName)).append("\":").append(propValue);
+ JsopBuilder diff = new JsopBuilder();
+ diff.tag('^').key(PathUtils.concat(nodePath, propName));
+ if (propValue != null) {
+ diff.encodedValue(propValue);
+ } else {
+ diff.value(null);
+ }
return diff.toString();
}
}
+
}