From cc4a751162c6a317e2e0674dea832ee3730ee49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Mon, 19 May 2025 14:31:10 +0200 Subject: [PATCH] Make ProblemDetailJacksonXmlMixin compatible with Jackson 3 --- .../json/ProblemDetailJacksonXmlMixin.java | 21 ++++++++++++------- ...questResponseBodyMethodProcessorTests.java | 2 -- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/converter/json/ProblemDetailJacksonXmlMixin.java b/spring-web/src/main/java/org/springframework/http/converter/json/ProblemDetailJacksonXmlMixin.java index 61a268267f38..e32897ba5388 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/json/ProblemDetailJacksonXmlMixin.java +++ b/spring-web/src/main/java/org/springframework/http/converter/json/ProblemDetailJacksonXmlMixin.java @@ -22,7 +22,7 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.annotation.JsonRootName; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; import org.jspecify.annotations.Nullable; @@ -40,36 +40,43 @@ * FasterXML/jackson-dataformat-xml#355. * * @author Rossen Stoyanchev + * @author Sebastien Deleuze * @since 6.0.5 */ @JsonInclude(NON_EMPTY) @JacksonXmlRootElement(localName = "problem", namespace = ProblemDetailJacksonXmlMixin.NAMESPACE) +@JsonRootName(value = "problem", namespace = ProblemDetailJacksonXmlMixin.NAMESPACE) public interface ProblemDetailJacksonXmlMixin { /** RFC 7807 (obsoleted by RFC 9457) namespace. */ String NAMESPACE = "urn:ietf:rfc:7807"; - @JacksonXmlProperty(namespace = NAMESPACE) + @com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty(namespace = NAMESPACE) + @tools.jackson.dataformat.xml.annotation.JacksonXmlProperty(namespace = NAMESPACE) URI getType(); - @JacksonXmlProperty(namespace = NAMESPACE) + @com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty(namespace = NAMESPACE) + @tools.jackson.dataformat.xml.annotation.JacksonXmlProperty(namespace = NAMESPACE) String getTitle(); - @JacksonXmlProperty(namespace = NAMESPACE) + @com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty(namespace = NAMESPACE) + @tools.jackson.dataformat.xml.annotation.JacksonXmlProperty(namespace = NAMESPACE) int getStatus(); - @JacksonXmlProperty(namespace = NAMESPACE) + @com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty(namespace = NAMESPACE) + @tools.jackson.dataformat.xml.annotation.JacksonXmlProperty(namespace = NAMESPACE) String getDetail(); - @JacksonXmlProperty(namespace = NAMESPACE) + @com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty(namespace = NAMESPACE) + @tools.jackson.dataformat.xml.annotation.JacksonXmlProperty(namespace = NAMESPACE) URI getInstance(); @JsonAnySetter void setProperty(String name, @Nullable Object value); @JsonAnyGetter - @JacksonXmlProperty(namespace = NAMESPACE) + @com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty(namespace = NAMESPACE) Map getProperties(); } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessorTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessorTests.java index 849c9a0236e1..c33aafdcdb07 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessorTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessorTests.java @@ -29,7 +29,6 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonView; import org.jspecify.annotations.Nullable; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.skyscreamer.jsonassert.JSONAssert; import org.xmlunit.assertj.XmlAssert; @@ -413,7 +412,6 @@ private void testProblemDetailMediaType(String expectedContentType) throws Excep } @Test - @Disabled("https://github.com/FasterXML/jackson-dataformat-xml/issues/757") void problemDetailWhenProblemXmlRequested() throws Exception { this.servletRequest.addHeader("Accept", MediaType.APPLICATION_PROBLEM_XML_VALUE); testProblemDetailMediaType(MediaType.APPLICATION_PROBLEM_XML_VALUE);