diff --git a/extensions/spring-web/deployment/src/main/java/io/quarkus/spring/web/deployment/SpringWebProcessor.java b/extensions/spring-web/deployment/src/main/java/io/quarkus/spring/web/deployment/SpringWebProcessor.java index 61b68f5e6167e..de194b9e3c385 100644 --- a/extensions/spring-web/deployment/src/main/java/io/quarkus/spring/web/deployment/SpringWebProcessor.java +++ b/extensions/spring-web/deployment/src/main/java/io/quarkus/spring/web/deployment/SpringWebProcessor.java @@ -287,6 +287,10 @@ public void registerProviders(BeanArchiveIndexBuildItem beanArchiveIndexBuildIte useAllAvailable = true; break OUTER; } + if (collectProviders(providersToRegister, categorizedContextResolvers, instance, "produces")) { + useAllAvailable = true; + break OUTER; + } if (collectProviders(providersToRegister, categorizedReaders, instance, "consumes")) { useAllAvailable = true; diff --git a/integration-tests/spring-web/pom.xml b/integration-tests/spring-web/pom.xml index 309dd9734bcc2..edeeb7e964e09 100644 --- a/integration-tests/spring-web/pom.xml +++ b/integration-tests/spring-web/pom.xml @@ -23,6 +23,10 @@ io.quarkus quarkus-undertow + + io.quarkus + quarkus-resteasy-jaxb + io.quarkus quarkus-spring-di diff --git a/integration-tests/spring-web/src/main/java/io/quarkus/it/spring/web/Book.java b/integration-tests/spring-web/src/main/java/io/quarkus/it/spring/web/Book.java new file mode 100644 index 0000000000000..a893ed259da9b --- /dev/null +++ b/integration-tests/spring-web/src/main/java/io/quarkus/it/spring/web/Book.java @@ -0,0 +1,24 @@ +package io.quarkus.it.spring.web; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class Book { + + private String name; + + public Book() { + } + + public Book(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/integration-tests/spring-web/src/main/java/io/quarkus/it/spring/web/BookController.java b/integration-tests/spring-web/src/main/java/io/quarkus/it/spring/web/BookController.java new file mode 100644 index 0000000000000..7d2351bcb14b4 --- /dev/null +++ b/integration-tests/spring-web/src/main/java/io/quarkus/it/spring/web/BookController.java @@ -0,0 +1,14 @@ +package io.quarkus.it.spring.web; + +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class BookController { + + @GetMapping(produces = MediaType.APPLICATION_XML_VALUE, path = "/book") + public Book someBook() { + return new Book("Guns germs and steel"); + } +} diff --git a/integration-tests/spring-web/src/test/java/io/quarkus/it/spring/web/SpringControllerTest.java b/integration-tests/spring-web/src/test/java/io/quarkus/it/spring/web/SpringControllerTest.java index 2383590700d34..8d12461c8a247 100644 --- a/integration-tests/spring-web/src/test/java/io/quarkus/it/spring/web/SpringControllerTest.java +++ b/integration-tests/spring-web/src/test/java/io/quarkus/it/spring/web/SpringControllerTest.java @@ -204,4 +204,13 @@ public void testResponseEntityWithIllegalArgumentException() { .body(containsString("hello from error")) .statusCode(402); } + + @Test + public void testMethodReturningXmlContent() { + RestAssured.when().get("/book") + .then() + .statusCode(200) + .contentType("application/xml") + .body(containsString("steel")); + } }