From 8653b62bc13354ede0f7edb90eae4375d7a2dcf8 Mon Sep 17 00:00:00 2001 From: Markus KARG Date: Sun, 22 Sep 2019 11:10:57 +0000 Subject: [PATCH] GERONIMO-6751 JSON-P 1.1 incompliance: EmptyJsonObject incorrectly answers getString and isNull MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The [JSON-P API](https://github.com/eclipse-ee4j/jsonp/blob/5735bb62715578633d5721bf583b837506bbec73/api/src/main/java/javax/json/JsonObject.java#L164-L165) requires `JsonObject.getString("missing")` to throw `NullPointerException` for non-existent key `"missing"`. [Geronimo](https://github.com/apache/geronimo-specs/blob/0f0956795ad0839ec698e11fd3a7049f0114623c/geronimo-json_1.1_spec/src/main/java/javax/json/EmptyJsonObject.java#L51-L52)'s variant of the JSON-P API (`EmptyJsonObject`) *incorrectly* returns `null` instead of throwing an exception.   The [JSON-P API](https://github.com/eclipse-ee4j/jsonp/blob/5735bb62715578633d5721bf583b837506bbec73/api/src/main/java/javax/json/JsonObject.java#L172-L175) requires `JsonObject.getString("missing", "default")` to return `"default"` for non-existent key `"missing"`. [Geronimo](https://github.com/apache/geronimo-specs/blob/0f0956795ad0839ec698e11fd3a7049f0114623c/geronimo-json_1.1_spec/src/main/java/javax/json/EmptyJsonObject.java#L55-L58)'s variant of the JSON-P API (`EmptyJsonObject`) *incorrectly* returns `null` instead of `"default"`.   The [JSON-P API](https://github.com/eclipse-ee4j/jsonp/blob/5735bb62715578633d5721bf583b837506bbec73/api/src/main/java/javax/json/JsonObject.java#L244-L245) requires `JsonObject.isNull("missing")` to throw `NullPointerException` for non-existent key `"missing"`. [Geronimo](https://github.com/apache/geronimo-specs/blob/0f0956795ad0839ec698e11fd3a7049f0114623c/geronimo-json_1.1_spec/src/main/java/javax/json/EmptyJsonObject.java#L80-L83)'s variant of the JSON-P API (`EmptyJsonObject`) *incorrectly* returns `true` instead of throwing an exception.   Signed-off-by: Markus KARG --- .../src/main/java/javax/json/EmptyJsonObject.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/geronimo-json_1.1_spec/src/main/java/javax/json/EmptyJsonObject.java b/geronimo-json_1.1_spec/src/main/java/javax/json/EmptyJsonObject.java index 09d86c3e1..0ccbe2c09 100644 --- a/geronimo-json_1.1_spec/src/main/java/javax/json/EmptyJsonObject.java +++ b/geronimo-json_1.1_spec/src/main/java/javax/json/EmptyJsonObject.java @@ -49,12 +49,12 @@ public JsonString getJsonString(String name) { @Override public String getString(String name) { - return null; + throw new NullPointerException("Calling getString on EmptyJsonObject"); } @Override public String getString(String name, String defaultValue) { - return null; + return defaultValue; } @Override @@ -79,7 +79,7 @@ public boolean getBoolean(String name, boolean defaultValue) { @Override public boolean isNull(String name) { - return true; + throw new NullPointerException("Calling isNull on EmptyJsonObject"); } @Override