You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2020/03/27 08:09:47 UTC
[johnzon] branch master updated: ensure '-' token is used for
pointer.remove and not skipped due to number pattern check
This is an automated email from the ASF dual-hosted git repository.
rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/johnzon.git
The following commit(s) were added to refs/heads/master by this push:
new 7b19841 ensure '-' token is used for pointer.remove and not skipped due to number pattern check
7b19841 is described below
commit 7b198413cc858be387e82d3f639364b14a5742dd
Author: Romain Manni-Bucau <rm...@gmail.com>
AuthorDate: Fri Mar 27 09:09:42 2020 +0100
ensure '-' token is used for pointer.remove and not skipped due to number pattern check
---
.../main/java/org/apache/johnzon/core/JsonPointerImpl.java | 4 ++--
.../test/java/org/apache/johnzon/core/JsonPatchTest.java | 2 +-
.../test/java/org/apache/johnzon/core/JsonPointerTest.java | 13 +++++++++++++
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPointerImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPointerImpl.java
index 46d62b3..e9cd32c 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPointerImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonPointerImpl.java
@@ -437,9 +437,9 @@ public class JsonPointerImpl implements JsonPointer {
return objectBuilder.build();
} else if (jsonValue.getValueType() == JsonValue.ValueType.ARRAY) {
final JsonArray jsonArray = jsonValue.asJsonArray();
- if (IS_NUMBER.matcher(token).matches()) {
- final JsonArrayBuilder arrayBuilder = provider.createArrayBuilder();
+ if ("-".equals(token) || IS_NUMBER.matcher(token).matches()) {
final int arrayIndex = getArrayIndex(token, jsonArray, false);
+ final JsonArrayBuilder arrayBuilder = provider.createArrayBuilder();
final int jsonArraySize = jsonArray.size();
for (int i = 0; i < jsonArraySize; i++) {
final boolean matchesIndex = i == arrayIndex;
diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchTest.java
index 6d9b41e..a255271 100644
--- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchTest.java
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPatchTest.java
@@ -717,7 +717,7 @@ public class JsonPatchTest {
.build();
JsonPatchImpl patch = new JsonPatchImpl(PROVIDER, new JsonPatchImpl.PatchValue(PROVIDER, JsonPatch.Operation.COPY,
- "/1",
+ "/2",
"/-",
null));
diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPointerTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPointerTest.java
index bf99d2d..2b840b2 100644
--- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPointerTest.java
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonPointerTest.java
@@ -470,6 +470,19 @@ public class JsonPointerTest {
}
@Test
+ public void testRemoveLastArrayElementSimple() {
+ JsonPointerImpl jsonPointer = new JsonPointerImpl(JsonProvider.provider(), "/-");
+ JsonStructure target = Json.createArrayBuilder()
+ .add("bar")
+ .add("qux")
+ .add("baz")
+ .build();
+
+ JsonStructure result = jsonPointer.remove(target);
+ assertEquals("[\"bar\",\"qux\"]", result.toString());
+ }
+
+ @Test
public void testRemoveObjectMember() {
JsonPointerImpl jsonPointer = new JsonPointerImpl(JsonProvider.provider(), "/baz");
JsonStructure target = Json.createObjectBuilder()