From b56ecf6a60207abe183e2f95ba9de0dcc0d5b328 Mon Sep 17 00:00:00 2001 From: Marco Bungart Date: Sat, 11 Jan 2025 01:58:18 +0100 Subject: [PATCH] Provide a separate exception when a test operation fails --- .../com/flipkart/zjsonpatch/InPlaceApplyProcessor.java | 4 ++-- .../flipkart/zjsonpatch/JsonPatchTestFailedException.java | 7 +++++++ src/test/resources/testdata/test.json | 5 ++++- 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/flipkart/zjsonpatch/JsonPatchTestFailedException.java diff --git a/src/main/java/com/flipkart/zjsonpatch/InPlaceApplyProcessor.java b/src/main/java/com/flipkart/zjsonpatch/InPlaceApplyProcessor.java index f77951c..6cbdcc3 100644 --- a/src/main/java/com/flipkart/zjsonpatch/InPlaceApplyProcessor.java +++ b/src/main/java/com/flipkart/zjsonpatch/InPlaceApplyProcessor.java @@ -73,8 +73,8 @@ else if (value.isObject()) public void test(JsonPointer path, JsonNode value) throws JsonPointerEvaluationException { JsonNode valueNode = path.evaluate(target); if (!valueNode.equals(value)) - throw new JsonPatchApplicationException( - "Expected " + show(value) + " but found " + show(valueNode), Operation.TEST, path); + throw new JsonPatchTestFailedException( + "Expected " + show(value) + " but found " + show(valueNode), path); } @Override diff --git a/src/main/java/com/flipkart/zjsonpatch/JsonPatchTestFailedException.java b/src/main/java/com/flipkart/zjsonpatch/JsonPatchTestFailedException.java new file mode 100644 index 0000000..97ec904 --- /dev/null +++ b/src/main/java/com/flipkart/zjsonpatch/JsonPatchTestFailedException.java @@ -0,0 +1,7 @@ +package com.flipkart.zjsonpatch; + +public class JsonPatchTestFailedException extends JsonPatchApplicationException { + public JsonPatchTestFailedException(String message, JsonPointer path) { + super(message, Operation.TEST, path); + } +} diff --git a/src/test/resources/testdata/test.json b/src/test/resources/testdata/test.json index 6f7ed49..2b62cb4 100644 --- a/src/test/resources/testdata/test.json +++ b/src/test/resources/testdata/test.json @@ -13,16 +13,19 @@ { "op": [{ "op": "test", "path": "", "value": true }], "node": [ 1, 2 ], + "type": "com.flipkart.zjsonpatch.JsonPatchTestFailedException", "message": "Expected value true but found array at root" }, { "op": [{ "op": "test", "path": "/x", "value": -30.000 }], "node": { "x": -29.020 }, + "type": "com.flipkart.zjsonpatch.JsonPatchTestFailedException", "message": "Expected value -30.0 but found value -29.02 at /x" }, { "op": [{ "op": "test", "path": "/x", "value": null }], "node": { "x": 3 }, + "type": "com.flipkart.zjsonpatch.JsonPatchTestFailedException", "message": "Expected null but found value 3 at /x" } ], @@ -43,4 +46,4 @@ "expected": null } ] -} \ No newline at end of file +}