From 0f5a8348983458b70b1c680e82cb8e3b4d5ed7fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jan 2022 01:21:07 +0000 Subject: [PATCH 1/2] Bump json-path from 2.6.0 to 2.7.0 Bumps [json-path](https://github.com/jayway/JsonPath) from 2.6.0 to 2.7.0. - [Release notes](https://github.com/jayway/JsonPath/releases) - [Changelog](https://github.com/json-path/JsonPath/blob/master/changelog.md) - [Commits](https://github.com/jayway/JsonPath/compare/json-path-2.6.0...json-path-2.7.0) --- updated-dependencies: - dependency-name: com.jayway.jsonpath:json-path dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- json-utils/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json-utils/pom.xml b/json-utils/pom.xml index eb92b634..64d55468 100644 --- a/json-utils/pom.xml +++ b/json-utils/pom.xml @@ -20,7 +20,7 @@ https://github.com/sonallux/spotify-web-api - 2.6.0 + 2.7.0 de.sonallux.spotify.json From bbcce0a1831d5154eec9d23ff8178b2805373f99 Mon Sep 17 00:00:00 2001 From: sonallux <13821543+sonallux@users.noreply.github.com> Date: Wed, 23 Mar 2022 17:25:08 +0100 Subject: [PATCH 2/2] Adjust exception handling to fix failing test --- .../sonallux/json/patching/AddOperation.java | 2 +- .../json/patching/DeleteOperation.java | 2 +- .../json/patching/PatchOperation.java | 9 ++++++++ .../sonallux/json/patching/PutOperation.java | 2 +- .../json/patching/RenameOperation.java | 2 +- .../sonallux/json/patching/SetOperation.java | 2 +- .../sonallux/json/patching/TestOperation.java | 2 +- .../json/patching/DeleteOperationTest.java | 10 +++++++++ .../src/test/resources/patching/delete.json | 12 +++++----- .../src/test/resources/patching/set.json | 22 +++++++++---------- 10 files changed, 41 insertions(+), 24 deletions(-) diff --git a/json-utils/src/main/java/de/sonallux/json/patching/AddOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/AddOperation.java index 4060cbe7..8f8ec2ed 100644 --- a/json-utils/src/main/java/de/sonallux/json/patching/AddOperation.java +++ b/json-utils/src/main/java/de/sonallux/json/patching/AddOperation.java @@ -24,7 +24,7 @@ public JsonNode apply(JsonNode node) throws PatchException { var jsonPath = JsonPath.compile(path); return jsonPath.add(node.deepCopy(), value, JSON_PATH_CONFIG); } catch (JsonPathException e) { - throw new PatchException(e.getMessage(), e); + throw wrapException(e); } } } diff --git a/json-utils/src/main/java/de/sonallux/json/patching/DeleteOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/DeleteOperation.java index f258dffe..aa6dc5f2 100644 --- a/json-utils/src/main/java/de/sonallux/json/patching/DeleteOperation.java +++ b/json-utils/src/main/java/de/sonallux/json/patching/DeleteOperation.java @@ -18,7 +18,7 @@ public JsonNode apply(JsonNode node) throws PatchException { var jsonPath = JsonPath.compile(path); return jsonPath.delete(node.deepCopy(), JSON_PATH_CONFIG); } catch (JsonPathException e) { - throw new PatchException(e.getMessage(), e); + throw wrapException(e); } } } diff --git a/json-utils/src/main/java/de/sonallux/json/patching/PatchOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/PatchOperation.java index 74cc7389..36b067a8 100644 --- a/json-utils/src/main/java/de/sonallux/json/patching/PatchOperation.java +++ b/json-utils/src/main/java/de/sonallux/json/patching/PatchOperation.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.jayway.jsonpath.Configuration; +import com.jayway.jsonpath.JsonPathException; import com.jayway.jsonpath.spi.json.JacksonJsonNodeJsonProvider; import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider; import lombok.AccessLevel; @@ -41,4 +42,12 @@ public abstract class PatchOperation { protected final String path; public abstract JsonNode apply(JsonNode node) throws PatchException; + + protected PatchException wrapException(JsonPathException e) { + var message = e.getMessage(); + if (message == null) { + message = e.getClass().getSimpleName(); + } + return new PatchException(message, e); + } } diff --git a/json-utils/src/main/java/de/sonallux/json/patching/PutOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/PutOperation.java index ec7689c6..17a2bd3e 100644 --- a/json-utils/src/main/java/de/sonallux/json/patching/PutOperation.java +++ b/json-utils/src/main/java/de/sonallux/json/patching/PutOperation.java @@ -29,7 +29,7 @@ public JsonNode apply(JsonNode node) throws PatchException { var jsonPath = JsonPath.compile(path); return jsonPath.put(node.deepCopy(), key, value, JSON_PATH_CONFIG); } catch (JsonPathException e) { - throw new PatchException(e.getMessage(), e); + throw wrapException(e); } } } diff --git a/json-utils/src/main/java/de/sonallux/json/patching/RenameOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/RenameOperation.java index a4983161..ef8c1cb3 100644 --- a/json-utils/src/main/java/de/sonallux/json/patching/RenameOperation.java +++ b/json-utils/src/main/java/de/sonallux/json/patching/RenameOperation.java @@ -29,7 +29,7 @@ public JsonNode apply(JsonNode node) throws PatchException { var jsonPath = JsonPath.compile(path); return jsonPath.renameKey(node.deepCopy(), oldKey, newKey, JSON_PATH_CONFIG); } catch (JsonPathException e) { - throw new PatchException(e.getMessage(), e); + throw wrapException(e); } } } diff --git a/json-utils/src/main/java/de/sonallux/json/patching/SetOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/SetOperation.java index 6b7a9ebd..751efc7e 100644 --- a/json-utils/src/main/java/de/sonallux/json/patching/SetOperation.java +++ b/json-utils/src/main/java/de/sonallux/json/patching/SetOperation.java @@ -25,7 +25,7 @@ public JsonNode apply(JsonNode node) throws PatchException { var jsonPath = JsonPath.compile(path); return jsonPath.set(node.deepCopy(), value, JSON_PATH_CONFIG); } catch (JsonPathException e) { - throw new PatchException(e.getMessage(), e); + throw wrapException(e); } } } diff --git a/json-utils/src/main/java/de/sonallux/json/patching/TestOperation.java b/json-utils/src/main/java/de/sonallux/json/patching/TestOperation.java index 02c33227..963f6167 100644 --- a/json-utils/src/main/java/de/sonallux/json/patching/TestOperation.java +++ b/json-utils/src/main/java/de/sonallux/json/patching/TestOperation.java @@ -38,7 +38,7 @@ public JsonNode apply(JsonNode node) throws PatchException { throw new PatchException("Path did not exist", e); } catch (JsonPathException e) { - throw new PatchException(e.getMessage(), e); + throw wrapException(e); } } } diff --git a/json-utils/src/test/java/de/sonallux/json/patching/DeleteOperationTest.java b/json-utils/src/test/java/de/sonallux/json/patching/DeleteOperationTest.java index 8f75285c..5d3c850e 100644 --- a/json-utils/src/test/java/de/sonallux/json/patching/DeleteOperationTest.java +++ b/json-utils/src/test/java/de/sonallux/json/patching/DeleteOperationTest.java @@ -31,6 +31,16 @@ void testOperationIsApplied(OperationTestData.SuccessTestCase t assertPatchIsApplied(testCase); } + static Stream testOperationThrowsError() { + return testData.failureCases.stream().map(Arguments::of); + } + + @ParameterizedTest + @MethodSource + void testOperationThrowsError(OperationTestData.FailureTestCase testCase) { + assertPatchThrowsError(testCase); + } + @Test void testDeserialization() throws IOException { var opAsJson = "{\"op\": \"delete\", \"path\":\"$.a\"}"; diff --git a/json-utils/src/test/resources/patching/delete.json b/json-utils/src/test/resources/patching/delete.json index a750b48f..08ff777e 100644 --- a/json-utils/src/test/resources/patching/delete.json +++ b/json-utils/src/test/resources/patching/delete.json @@ -7,9 +7,7 @@ }, "node": {}, "message": "Missing property in path $['x']" - } - ], - "successCases": [ + }, { "op": { "op": "delete", @@ -18,10 +16,10 @@ "node": { "x": {} }, - "expected": { - "x": {} - } - }, + "message": "PathNotFoundException" + } + ], + "successCases": [ { "op": { "op": "delete", diff --git a/json-utils/src/test/resources/patching/set.json b/json-utils/src/test/resources/patching/set.json index 0c9c560f..0f19a568 100644 --- a/json-utils/src/test/resources/patching/set.json +++ b/json-utils/src/test/resources/patching/set.json @@ -21,13 +21,22 @@ { "op": { "op": "set", - "path": "$.x.y", + "path": "$.a", + "value": 2 + }, + "node": {}, + "message": "PathNotFoundException" + }, + { + "op": { + "op": "set", + "path": "$.a.y", "value": 42 }, "node": { "a": {} }, - "message": "Missing property in path $['x']" + "message": "PathNotFoundException" } ], "successCases": [ @@ -60,15 +69,6 @@ 2 ] }, - { - "op": { - "op": "set", - "path": "$.a", - "value": 2 - }, - "node": {}, - "expected": {} - }, { "op": { "op": "set",