From af17663e45951a97de1758226ca517eaf09a3ec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 2 May 2025 12:33:38 +0200 Subject: [PATCH] Fix configuration in queryable unit test extension With this the queryable unit test extension (QueryableStoreExtension) uses the same jackson mapper configuration as in production. In contrast to edaffc16628d5fd0f1ed1054e384441327626922 where the XML annotation introspector had been missing, now this really should be the case. --- scm-queryable-test/build.gradle | 1 + .../sonia/scm/store/QueryableStoreExtension.java | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/scm-queryable-test/build.gradle b/scm-queryable-test/build.gradle index 0d0f8f05e0..5e8e63c1c6 100644 --- a/scm-queryable-test/build.gradle +++ b/scm-queryable-test/build.gradle @@ -27,6 +27,7 @@ dependencies { api libraries.junitJupiterApi api libraries.mockitoCore implementation libraries.jacksonDatatypeJsr310 + implementation libraries.jacksonJaxbAnnotations // tests testImplementation project(':scm-test') diff --git a/scm-queryable-test/src/main/java/sonia/scm/store/QueryableStoreExtension.java b/scm-queryable-test/src/main/java/sonia/scm/store/QueryableStoreExtension.java index 2f6c57541f..abd73dac1e 100644 --- a/scm-queryable-test/src/main/java/sonia/scm/store/QueryableStoreExtension.java +++ b/scm-queryable-test/src/main/java/sonia/scm/store/QueryableStoreExtension.java @@ -16,12 +16,17 @@ package sonia.scm.store; +import com.fasterxml.jackson.databind.AnnotationIntrospector; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair; +import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector; +import com.fasterxml.jackson.databind.type.TypeFactory; import com.fasterxml.jackson.databind.util.StdDateFormat; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.fasterxml.jackson.module.jakarta.xmlbind.JakartaXmlBindAnnotationIntrospector; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; @@ -67,6 +72,7 @@ public class QueryableStoreExtension implements ParameterResolver, BeforeEachCal return new ObjectMapper() .registerModule(new Jdk8Module()) .registerModule(new JavaTimeModule()) + .setAnnotationIntrospector(createAnnotationIntrospector()) .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) .configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true) @@ -74,6 +80,13 @@ public class QueryableStoreExtension implements ParameterResolver, BeforeEachCal .setDateFormat(new StdDateFormat()); } + private static AnnotationIntrospector createAnnotationIntrospector() { + return new AnnotationIntrospectorPair( + new JakartaXmlBindAnnotationIntrospector(TypeFactory.defaultInstance()), + new JacksonAnnotationIntrospector() + ); + } + @Override public void beforeEach(ExtensionContext context) throws IOException { tempDirectory = Files.createTempDirectory("test");