From 6b290698a3207fdc49826e6d0ced64b08a22bfa7 Mon Sep 17 00:00:00 2001 From: Dmitry Litvintsev Date: Thu, 12 Feb 2026 12:50:29 -0600 Subject: [PATCH] rest api: add support for Java8 Optional data type Motivation: ----------- With upgrade of jackson dependencies for 11.x handling of Optional datatype started to fail like so: "Unable to interpret JSON: Java 8 optional type `java.util.Optional`..." when calling rest api to query pool information Modification: ------------- Following this recipe: https://github.com/FasterXML/jackson-modules-java8 registered Jdk8Module to json ObjectMapper Result: ------- No more error Ticket: https://github.com/dCache/dcache/issues/8007 Patch: https://rb.dcache.org/r/14616/ Acked-by: Marina Target: trunk Request: 11.x Require-book: no Require-notes: yes --- modules/dcache-frontend/pom.xml | 5 +++++ .../org/dcache/restful/providers/ObjectMapperProvider.java | 2 ++ pom.xml | 6 ++++++ 3 files changed, 13 insertions(+) diff --git a/modules/dcache-frontend/pom.xml b/modules/dcache-frontend/pom.xml index 4a62e315316..b09a2832e52 100644 --- a/modules/dcache-frontend/pom.xml +++ b/modules/dcache-frontend/pom.xml @@ -92,6 +92,11 @@ com.fasterxml.jackson.core jackson-core + + + com.fasterxml.jackson.datatype + jackson-datatype-jdk8 + org.springframework.plugin spring-plugin-core diff --git a/modules/dcache-frontend/src/main/java/org/dcache/restful/providers/ObjectMapperProvider.java b/modules/dcache-frontend/src/main/java/org/dcache/restful/providers/ObjectMapperProvider.java index f78bfc72574..25df298ddd2 100644 --- a/modules/dcache-frontend/src/main/java/org/dcache/restful/providers/ObjectMapperProvider.java +++ b/modules/dcache-frontend/src/main/java/org/dcache/restful/providers/ObjectMapperProvider.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; @@ -30,6 +31,7 @@ private static ObjectMapper createListObjectMapper() { private static ObjectMapper createDefaultMapper() { return new ObjectMapper() .registerModule(PNFSID_SERIALIZER) + .registerModule(new Jdk8Module()) .enable(SerializationFeature.INDENT_OUTPUT) .setSerializationInclusion(JsonInclude.Include.NON_NULL); } diff --git a/pom.xml b/pom.xml index 39c023e8b18..e17d8174190 100644 --- a/pom.xml +++ b/pom.xml @@ -940,6 +940,12 @@ ${version.jackson} + + com.fasterxml.jackson.datatype + jackson-datatype-jdk8 + ${version.jackson} + + com.fasterxml.jackson.core jackson-annotations