Skip to content

Commit 668c44a

Browse files
committed
354734 Update jackson to 2.16, adapt Java Optional handling to change
Jackson adapted handling for Optional serialization providing a custom exception message if Optional is being serialized. Scout does not support serialization of Java Optional, therefore adapt test case. See FasterXML/jackson-databind#4082 FasterXML/jackson-databind@d7e77c3
1 parent 941720f commit 668c44a

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed

org.eclipse.scout.rt.jackson.test/src/test/java/org/eclipse/scout/rt/jackson/dataobject/JsonDataObjectsSerializationTest.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3141,27 +3141,28 @@ public void testSerializeDeserializeThrowable() throws Exception {
31413141
assertArrayEquals(exception.getStackTrace(), marshalled.getException().getStackTrace());
31423142
}
31433143

3144+
/**
3145+
* {@link Optional} is currently not serializable/deserializable using Scout Jackson implementation.
3146+
*/
31443147
@Test
31453148
public void testSerializeDeserializeOptionalDo() throws Exception {
31463149
@SuppressWarnings("unchecked")
31473150
TestOptionalDo optional = BEANS.get(TestOptionalDo.class)
3148-
.withOptString(Optional.ofNullable(null))
3149-
.withOptStringList(Optional.empty(), Optional.ofNullable("foo"));
3150-
String json = s_dataObjectMapper.writeValueAsString(optional);
3151-
3152-
// currently serializable using Scout Jackson implementation, but without values, e.g. useless!
3153-
assertJsonEquals("TestOptionalDo.json", json);
3154-
3155-
// currently not deserializable using Scout Jackson implementation
3151+
.withOptString(Optional.empty())
3152+
.withOptStringList(Optional.empty(), Optional.of("foo"));
3153+
3154+
// Expect:
3155+
// com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 optional type `java.util.Optional<java.lang.String>`
3156+
// not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jdk8" to enable handling
3157+
JsonMappingException writeException = assertThrows(JsonMappingException.class, () -> s_dataObjectMapper.writeValueAsString(optional));
3158+
assertTrue("expected InvalidDefinitionException, got " + writeException, writeException instanceof InvalidDefinitionException);
3159+
3160+
// Expect:
3161+
// com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 optional type `java.util.Optional<java.lang.String>`
3162+
// not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jdk8" to enable handling
3163+
String json = readResourceAsString("TestOptionalDo.json");
31563164
JsonMappingException exception = assertThrows(JsonMappingException.class, () -> s_dataObjectMapper.readValue(json, TestOptionalDo.class));
3157-
3158-
// TODO [23.1] pbz remove when JDK 11 is no longer supported
3159-
if ("11".equals(System.getProperty("java.specification.version"))) {
3160-
assertTrue("expected cause UnrecognizedPropertyException, got " + exception.getCause(), exception.getCause() instanceof UnrecognizedPropertyException);
3161-
}
3162-
else {
3163-
assertTrue("expected cause InvalidDefinitionException, got " + exception.getCause(), exception.getCause() instanceof InvalidDefinitionException);
3164-
}
3165+
assertTrue("expected InvalidDefinitionException, got " + exception.getCause(), exception.getCause() instanceof InvalidDefinitionException);
31653166
}
31663167

31673168
@Test

0 commit comments

Comments
 (0)