diff --git a/extensions/resteasy-reactive/quarkus-resteasy-reactive-jackson/deployment/src/test/java/io/quarkus/resteasy/reactive/jackson/deployment/test/streams/StreamResource.java b/extensions/resteasy-reactive/quarkus-resteasy-reactive-jackson/deployment/src/test/java/io/quarkus/resteasy/reactive/jackson/deployment/test/streams/StreamResource.java index dfc905597b3384..497b3bb0942517 100644 --- a/extensions/resteasy-reactive/quarkus-resteasy-reactive-jackson/deployment/src/test/java/io/quarkus/resteasy/reactive/jackson/deployment/test/streams/StreamResource.java +++ b/extensions/resteasy-reactive/quarkus-resteasy-reactive-jackson/deployment/src/test/java/io/quarkus/resteasy/reactive/jackson/deployment/test/streams/StreamResource.java @@ -133,6 +133,19 @@ public Multi multiNdJson2() { Wrapper::getStatus); } + @Path("restmulti/empty") + @GET + @Produces(RestMediaType.APPLICATION_JSON) + public Multi restMultiEmptyJson() { + return RestMulti.fromUniResponse( + Uni.createFrom().item( + () -> new Wrapper(Multi.createFrom().empty(), + new AbstractMap.SimpleEntry<>("foo", "bar"), 222)), + Wrapper::getData, + Wrapper::getHeaders, + Wrapper::getStatus); + } + @Path("stream-json/multi") @GET @Produces(RestMediaType.APPLICATION_STREAM_JSON) diff --git a/extensions/resteasy-reactive/quarkus-resteasy-reactive-jackson/deployment/src/test/java/io/quarkus/resteasy/reactive/jackson/deployment/test/streams/StreamTestCase.java b/extensions/resteasy-reactive/quarkus-resteasy-reactive-jackson/deployment/src/test/java/io/quarkus/resteasy/reactive/jackson/deployment/test/streams/StreamTestCase.java index 2ae2a7f2895dfa..f8039a7480e9d2 100644 --- a/extensions/resteasy-reactive/quarkus-resteasy-reactive-jackson/deployment/src/test/java/io/quarkus/resteasy/reactive/jackson/deployment/test/streams/StreamTestCase.java +++ b/extensions/resteasy-reactive/quarkus-resteasy-reactive-jackson/deployment/src/test/java/io/quarkus/resteasy/reactive/jackson/deployment/test/streams/StreamTestCase.java @@ -140,6 +140,14 @@ public void testNdJsonMultiFromMulti2() { .header("foo", "bar"); } + @Test + public void testRestMultiEmptyJson() { + when().get(uri.toString() + "streams/restmulti/empty") + .then().statusCode(222) + .body(is("[]")) + .header("foo", "bar"); + } + @Test public void testStreamJsonMultiFromMulti() { when().get(uri.toString() + "streams/stream-json/multi") diff --git a/independent-projects/resteasy-reactive/server/runtime/src/main/java/org/jboss/resteasy/reactive/server/handlers/PublisherResponseHandler.java b/independent-projects/resteasy-reactive/server/runtime/src/main/java/org/jboss/resteasy/reactive/server/handlers/PublisherResponseHandler.java index 4d097feaad8743..102e583ec860ac 100644 --- a/independent-projects/resteasy-reactive/server/runtime/src/main/java/org/jboss/resteasy/reactive/server/handlers/PublisherResponseHandler.java +++ b/independent-projects/resteasy-reactive/server/runtime/src/main/java/org/jboss/resteasy/reactive/server/handlers/PublisherResponseHandler.java @@ -181,7 +181,7 @@ private List determineCustomizers(boolean isFirst) @Override public void onComplete() { if (!hadItem) { - StreamingUtil.setHeaders(requestContext, requestContext.serverResponse(), staticCustomizers); + StreamingUtil.setHeaders(requestContext, requestContext.serverResponse(), this.determineCustomizers(true)); } if (json) { String postfix = onCompleteText();