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);