Skip to content

Commit f2b586c

Browse files
authored
Merge pull request #31560 from geoand/#31559
Prevent SSE writing from potentially causing accumulation of headers
2 parents 18068a4 + 4cb3797 commit f2b586c

File tree

6 files changed

+10
-8
lines changed

6 files changed

+10
-8
lines changed

independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/handlers/ClientSetResponseEntityRestHandler.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import jakarta.ws.rs.client.Entity;
77
import jakarta.ws.rs.core.MediaType;
8-
import jakarta.ws.rs.core.MultivaluedMap;
98
import jakarta.ws.rs.core.Response;
109
import jakarta.ws.rs.core.Response.StatusType;
1110

@@ -17,6 +16,7 @@
1716
import org.jboss.resteasy.reactive.client.spi.ClientRestHandler;
1817
import org.jboss.resteasy.reactive.common.core.Serialisers;
1918
import org.jboss.resteasy.reactive.common.jaxrs.StatusTypeImpl;
19+
import org.jboss.resteasy.reactive.common.util.QuarkusMultivaluedHashMap;
2020

2121
import io.vertx.core.buffer.Buffer;
2222

@@ -88,7 +88,7 @@ private ByteArrayInputStream entityStreamOfAbortedResponseOf(RestClientRequestCo
8888
entity = Entity.entity(untypedEntity, mediaType);
8989
}
9090
// FIXME: pass headers?
91-
Buffer buffer = context.writeEntity(entity, (MultivaluedMap) Serialisers.EMPTY_MULTI_MAP,
91+
Buffer buffer = context.writeEntity(entity, new QuarkusMultivaluedHashMap<>(),
9292
Serialisers.NO_WRITER_INTERCEPTOR);
9393
return new ByteArrayInputStream(buffer.getBytes());
9494
}

independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/InboundSseEventImpl.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import org.jboss.resteasy.reactive.common.core.Serialisers;
1616
import org.jboss.resteasy.reactive.common.jaxrs.ConfigurationImpl;
17+
import org.jboss.resteasy.reactive.common.util.QuarkusMultivaluedHashMap;
1718

1819
public class InboundSseEventImpl implements InboundSseEvent {
1920

@@ -120,7 +121,7 @@ public <T> T readData(GenericType<T> type, MediaType mediaType) {
120121
InputStream in = new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8));
121122
try {
122123
return (T) ClientSerialisers.invokeClientReader(null, type.getRawType(), type.getType(),
123-
mediaType, null, null, Serialisers.EMPTY_MULTI_MAP,
124+
mediaType, null, null, new QuarkusMultivaluedHashMap<>(),
124125
serialisers, in, Serialisers.NO_READER_INTERCEPTOR, configuration);
125126
} catch (IOException e) {
126127
throw new UncheckedIOException(e);

independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/core/Serialisers.java

-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import jakarta.ws.rs.RuntimeType;
1616
import jakarta.ws.rs.core.MediaType;
17-
import jakarta.ws.rs.core.MultivaluedMap;
1817
import jakarta.ws.rs.core.Response;
1918
import jakarta.ws.rs.ext.MessageBodyReader;
2019
import jakarta.ws.rs.ext.MessageBodyWriter;
@@ -32,7 +31,6 @@
3231
public abstract class Serialisers {
3332
public static final Annotation[] NO_ANNOTATION = new Annotation[0];
3433
public static final ReaderInterceptor[] NO_READER_INTERCEPTOR = new ReaderInterceptor[0];
35-
public static final MultivaluedMap<String, Object> EMPTY_MULTI_MAP = new QuarkusMultivaluedHashMap<>();
3634
public static final WriterInterceptor[] NO_WRITER_INTERCEPTOR = new WriterInterceptor[0];
3735
protected static final Map<Class<?>, Class<?>> primitivesToWrappers = new HashMap<>();
3836
// FIXME: spec says we should use generic type, but not sure how to pass that type from Jandex to reflection

independent-projects/resteasy-reactive/server/runtime/src/main/java/org/jboss/resteasy/reactive/server/core/SseUtil.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import org.jboss.resteasy.reactive.common.core.Serialisers;
2020
import org.jboss.resteasy.reactive.common.util.CommonSseUtil;
21+
import org.jboss.resteasy.reactive.common.util.QuarkusMultivaluedHashMap;
2122
import org.jboss.resteasy.reactive.server.handlers.PublisherResponseHandler;
2223
import org.jboss.resteasy.reactive.server.jaxrs.OutboundSseEventImpl;
2324
import org.jboss.resteasy.reactive.server.spi.ServerHttpResponse;
@@ -138,7 +139,7 @@ private static String serialiseDataToString(ResteasyReactiveRequestContext conte
138139
if (writer.isWriteable(entityClass, entityType, Serialisers.NO_ANNOTATION, mediaType)) {
139140
// FIXME: spec doesn't really say what headers we should use here
140141
writer.writeTo(entity, entityClass, entityType, Serialisers.NO_ANNOTATION, mediaType,
141-
Serialisers.EMPTY_MULTI_MAP, baos);
142+
new QuarkusMultivaluedHashMap<>(), baos);
142143
wrote = true;
143144
break;
144145
}

independent-projects/resteasy-reactive/server/runtime/src/main/java/org/jboss/resteasy/reactive/server/core/StreamingUtil.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import jakarta.ws.rs.ext.MessageBodyWriter;
1515

1616
import org.jboss.resteasy.reactive.common.core.Serialisers;
17+
import org.jboss.resteasy.reactive.common.util.QuarkusMultivaluedHashMap;
1718
import org.jboss.resteasy.reactive.server.StreamingOutputStream;
1819
import org.jboss.resteasy.reactive.server.handlers.PublisherResponseHandler;
1920
import org.jboss.resteasy.reactive.server.spi.ServerHttpResponse;
@@ -66,7 +67,7 @@ private static byte[] serialiseEntity(ResteasyReactiveRequestContext context, Ob
6667
if (writer.isWriteable(entityClass, entityType, Serialisers.NO_ANNOTATION, mediaType)) {
6768
// FIXME: spec doesn't really say what headers we should use here
6869
writer.writeTo(entity, entityClass, entityType, Serialisers.NO_ANNOTATION, mediaType,
69-
Serialisers.EMPTY_MULTI_MAP, baos);
70+
new QuarkusMultivaluedHashMap<>(), baos);
7071
wrote = true;
7172
break;
7273
}

independent-projects/resteasy-reactive/server/runtime/src/main/java/org/jboss/resteasy/reactive/server/core/multipart/MultipartMessageBodyWriter.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import org.jboss.resteasy.reactive.common.core.Serialisers;
2626
import org.jboss.resteasy.reactive.common.reflection.ReflectionBeanFactoryCreator;
27+
import org.jboss.resteasy.reactive.common.util.QuarkusMultivaluedHashMap;
2728
import org.jboss.resteasy.reactive.multipart.FileDownload;
2829
import org.jboss.resteasy.reactive.server.NoopCloseAndFlushOutputStream;
2930
import org.jboss.resteasy.reactive.server.core.CurrentRequestManager;
@@ -192,7 +193,7 @@ private void writeEntity(OutputStream os, Object entity, MediaType mediaType, Re
192193
try (NoopCloseAndFlushOutputStream writerOutput = new NoopCloseAndFlushOutputStream(os)) {
193194
// FIXME: spec doesn't really say what headers we should use here
194195
writer.writeTo(entity, entityClass, entityType, Serialisers.NO_ANNOTATION, mediaType,
195-
Serialisers.EMPTY_MULTI_MAP, writerOutput);
196+
new QuarkusMultivaluedHashMap<>(), writerOutput);
196197
wrote = true;
197198
}
198199

0 commit comments

Comments
 (0)