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 edaffc1662
where the XML annotation introspector had been missing,
now this really should be the case.
This commit is contained in:
René Pfeuffer
2025-05-02 12:33:38 +02:00
parent 82b7ad16ea
commit af17663e45
2 changed files with 14 additions and 0 deletions

View File

@@ -27,6 +27,7 @@ dependencies {
api libraries.junitJupiterApi
api libraries.mockitoCore
implementation libraries.jacksonDatatypeJsr310
implementation libraries.jacksonJaxbAnnotations
// tests
testImplementation project(':scm-test')

View File

@@ -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");