Apply review suggestions Remove the null check, which the contains() check before it makes unreachable, reword the test comments and test a JSON object where a String or an Integer is expected. Signed-off-by: Sharang Gupta <sharang@sharanggupta.dev>
diff --git a/src/main/java/org/eclipse/yasson/internal/deserializer/PositionChecker.java b/src/main/java/org/eclipse/yasson/internal/deserializer/PositionChecker.java index 4f4b28e..2b6f6e9 100644 --- a/src/main/java/org/eclipse/yasson/internal/deserializer/PositionChecker.java +++ b/src/main/java/org/eclipse/yasson/internal/deserializer/PositionChecker.java
@@ -76,7 +76,7 @@ Event original = value.currentEvent(); Event startEvent = original; if (!expectedEvents.contains(startEvent)) { - if (original == null || !CLOSING_EVENTS.containsKey(original)) { + if (!CLOSING_EVENTS.containsKey(original)) { startEvent = value.next(); } if (!expectedEvents.contains(startEvent)) {
diff --git a/src/test/java/org/eclipse/yasson/defaultmapping/specific/UnmarshallingUnsupportedTypesTest.java b/src/test/java/org/eclipse/yasson/defaultmapping/specific/UnmarshallingUnsupportedTypesTest.java index dcc87cc..40ecb6d 100644 --- a/src/test/java/org/eclipse/yasson/defaultmapping/specific/UnmarshallingUnsupportedTypesTest.java +++ b/src/test/java/org/eclipse/yasson/defaultmapping/specific/UnmarshallingUnsupportedTypesTest.java
@@ -128,18 +128,32 @@ @Test public void testIntegerAsArray() { - //wrong, integerValue is a value. + // wrong: 'integerValue' field is an Integer, not an array String json = "{\"nestedPojo\":{\"integerValue\":[10,11]},\"optionalLong\":11}"; assertFail(json, SupportedTypes.class, "integerValue", Integer.class); } @Test public void testStringAsArray() { - //wrong, value is a value. + // wrong: 'value' field is a String, not an array String json = "{\"value\":[\"data1\",\"data2\"]}"; assertFail(json, new TestTypeToken<ScalarValueWrapper<String>>() { }.getType(), "value", String.class); } + @Test + public void testStringAsObject() { + // wrong: 'value' field is a String, not an object. + String json = "{\"value\":{\"nested\":\"data\"}}"; + assertFail(json, new TestTypeToken<ScalarValueWrapper<String>>() { }.getType(), "value", String.class); + } + + @Test + public void testIntegerAsObject() { + // wrong: 'integerValue' field is an Integer, not an object. + String json = "{\"nestedPojo\":{\"integerValue\":{\"nested\":10}},\"optionalLong\":11}"; + assertFail(json, SupportedTypes.class, "integerValue", Integer.class); + } + @Test() public void testMissingFieldDefault() { String json = "{\"nestedPojo\":{\"integerValue\":10,\"missingField\":5},\"optionalLong\":11}";