From 9a53b8c60c27eceaddaf01353e60c5f857da3ab9 Mon Sep 17 00:00:00 2001 From: Julian Ophals Date: Wed, 18 Jun 2025 23:24:03 -0700 Subject: [PATCH] [story/Q20-24] implemented customized Jackson serializer to fix getCollections response id field --- quadriga/pom.xml | 6 ++++++ .../quadriga/config/ObjectIdToStringModule.java | 12 ++++++++++++ .../diging/quadriga/config/SpringWebConfig.java | 16 ++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 quadriga/src/main/java/edu/asu/diging/quadriga/config/ObjectIdToStringModule.java diff --git a/quadriga/pom.xml b/quadriga/pom.xml index d0f530a4..0f084a87 100644 --- a/quadriga/pom.xml +++ b/quadriga/pom.xml @@ -188,6 +188,12 @@ jackson-databind 2.15.0 + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.19.1 + diff --git a/quadriga/src/main/java/edu/asu/diging/quadriga/config/ObjectIdToStringModule.java b/quadriga/src/main/java/edu/asu/diging/quadriga/config/ObjectIdToStringModule.java new file mode 100644 index 00000000..82b48848 --- /dev/null +++ b/quadriga/src/main/java/edu/asu/diging/quadriga/config/ObjectIdToStringModule.java @@ -0,0 +1,12 @@ +package edu.asu.diging.quadriga.config; + +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import org.bson.types.ObjectId; + +public class ObjectIdToStringModule extends SimpleModule { + public ObjectIdToStringModule() { + addSerializer(ObjectId.class, new ToStringSerializer()); + } +} + diff --git a/quadriga/src/main/java/edu/asu/diging/quadriga/config/SpringWebConfig.java b/quadriga/src/main/java/edu/asu/diging/quadriga/config/SpringWebConfig.java index d7a1ba2d..469bd112 100644 --- a/quadriga/src/main/java/edu/asu/diging/quadriga/config/SpringWebConfig.java +++ b/quadriga/src/main/java/edu/asu/diging/quadriga/config/SpringWebConfig.java @@ -1,8 +1,14 @@ package edu.asu.diging.quadriga.config; + import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; + +import java.util.List; @Configuration @EnableWebMvc @@ -12,4 +18,14 @@ public class SpringWebConfig implements WebMvcConfigurer { public void addResourceHandlers(final ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); } + + @Override + public void extendMessageConverters(List> converters) { + for (HttpMessageConverter converter : converters) { + if (converter instanceof MappingJackson2HttpMessageConverter jsonConverter) { + ObjectMapper mapper = jsonConverter.getObjectMapper(); + mapper.registerModule(new ObjectIdToStringModule()); + } + } + } } \ No newline at end of file