You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by st...@apache.org on 2017/02/28 20:28:18 UTC

johnzon git commit: JOHNZON-103 fix JsonPointer encoding for JsonPatch

Repository: johnzon
Updated Branches:
  refs/heads/master 2dd46d889 -> 6a2d5511f


JOHNZON-103 fix JsonPointer encoding for JsonPatch


Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/6a2d5511
Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/6a2d5511
Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/6a2d5511

Branch: refs/heads/master
Commit: 6a2d5511f35f5d1bd93fd814e0d3069aed72cb11
Parents: 2dd46d8
Author: Mark Struberg <st...@apache.org>
Authored: Tue Feb 28 21:11:10 2017 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Tue Feb 28 21:11:10 2017 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/johnzon/core/JsonPatchDiff.java    | 9 +++++----
 .../java/org/apache/johnzon/core/JsonPatchDiffTest.java     | 4 +---
 2 files changed, 6 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/johnzon/blob/6a2d5511/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchDiff.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchDiff.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchDiff.java
index 2d0f05c..a326f94 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchDiff.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPatchDiff.java
@@ -70,21 +70,22 @@ class JsonPatchDiff {
                 JsonValue targetValue = target.get(attributeName);
 
                 if (isJsonObject(targetValue) && isJsonObject(targetValue)) {
-                    diffJsonObjects(patchBuilder, basePath + attributeName + "/", (JsonObject) sourceEntry.getValue(), (JsonObject) targetValue);
+                    diffJsonObjects(patchBuilder, basePath + JsonPointerUtil.encode(attributeName) + "/",
+                            (JsonObject) sourceEntry.getValue(), (JsonObject) targetValue);
                 } else if (!sourceEntry.getValue().equals(targetValue)) {
                     // replace the original value
-                    patchBuilder.replace(basePath + attributeName, targetValue);
+                    patchBuilder.replace(basePath + JsonPointerUtil.encode(attributeName), targetValue);
                 }
             } else {
                 // the value got removed
-                patchBuilder.remove(basePath + attributeName);
+                patchBuilder.remove(basePath + JsonPointerUtil.encode(attributeName));
             }
         }
 
         Set<Map.Entry<String, JsonValue>> targetEntries = target.entrySet();
         for (Map.Entry<String, JsonValue> targetEntry : targetEntries) {
             if (!source.containsKey(targetEntry.getKey())) {
-                patchBuilder.add(basePath + targetEntry.getKey(), targetEntry.getValue());
+                patchBuilder.add(basePath + JsonPointerUtil.encode(targetEntry.getKey()), targetEntry.getValue());
             }
         }
 

http://git-wip-us.apache.org/repos/asf/johnzon/blob/6a2d5511/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchDiffTest.java
----------------------------------------------------------------------
diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchDiffTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchDiffTest.java
index b578eb0..67b2458 100644
--- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchDiffTest.java
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchDiffTest.java
@@ -74,9 +74,7 @@ public class JsonPatchDiffTest {
         Assert.assertEquals(target, patched);
     }
 
-    //X TODO
     @Test
-    @Ignore("TODO define how escaping must get handled")
     public void testAddDiffNewObjectWithEscaping() {
 
         JsonObject target = Json.createObjectBuilder()
@@ -91,7 +89,7 @@ public class JsonPatchDiffTest {
         JsonArray operations = patch.toJsonArray();
         assertEquals(1, operations.size());
 
-        containsOperation(operations, JsonPatch.Operation.ADD, "/a~/", target.get("a"));
+        containsOperation(operations, JsonPatch.Operation.ADD, "/a~0~1", target.get("a"));
 
         // now try to apply that patch.
         JsonObject patched = patch.apply(JsonValue.EMPTY_JSON_OBJECT);