49
49
* <a href="https://www.w3.org/TR/eventsource/">Server-Sent Events</a>.
50
50
*
51
51
* @author Arjen Poutsma
52
+ * @author Sebastien Deleuze
52
53
* @since 5.3.2
53
54
*/
54
55
final class SseServerResponse extends AbstractServerResponse {
@@ -91,7 +92,7 @@ protected ModelAndView writeToInternal(HttpServletRequest request, HttpServletRe
91
92
}
92
93
93
94
DefaultAsyncServerResponse .writeAsync (request , response , result );
94
- this .sseConsumer .accept (new DefaultSseBuilder (response , context , result ));
95
+ this .sseConsumer .accept (new DefaultSseBuilder (response , context , result , this . headers () ));
95
96
return null ;
96
97
}
97
98
@@ -114,15 +115,19 @@ private static final class DefaultSseBuilder implements SseBuilder {
114
115
115
116
private final List <HttpMessageConverter <?>> messageConverters ;
116
117
118
+ private final HttpHeaders httpHeaders ;
119
+
117
120
private final StringBuilder builder = new StringBuilder ();
118
121
119
122
private boolean sendFailed ;
120
123
121
124
122
- public DefaultSseBuilder (HttpServletResponse response , Context context , DeferredResult <?> deferredResult ) {
125
+ public DefaultSseBuilder (HttpServletResponse response , Context context , DeferredResult <?> deferredResult ,
126
+ HttpHeaders httpHeaders ) {
123
127
this .outputMessage = new ServletServerHttpResponse (response );
124
128
this .deferredResult = deferredResult ;
125
129
this .messageConverters = context .messageConverters ();
130
+ this .httpHeaders = httpHeaders ;
126
131
}
127
132
128
133
@ Override
@@ -207,7 +212,7 @@ private void writeObject(Object data) throws IOException {
207
212
for (HttpMessageConverter <?> converter : this .messageConverters ) {
208
213
if (converter .canWrite (dataClass , MediaType .APPLICATION_JSON )) {
209
214
HttpMessageConverter <Object > objectConverter = (HttpMessageConverter <Object >) converter ;
210
- ServerHttpResponse response = new MutableHeadersServerHttpResponse (this .outputMessage );
215
+ ServerHttpResponse response = new MutableHeadersServerHttpResponse (this .outputMessage , this . httpHeaders );
211
216
objectConverter .write (data , MediaType .APPLICATION_JSON , response );
212
217
this .outputMessage .getBody ().write (NL_NL );
213
218
this .outputMessage .flush ();
@@ -277,9 +282,10 @@ private static final class MutableHeadersServerHttpResponse extends DelegatingSe
277
282
278
283
private final HttpHeaders mutableHeaders = new HttpHeaders ();
279
284
280
- public MutableHeadersServerHttpResponse (ServerHttpResponse delegate ) {
285
+ public MutableHeadersServerHttpResponse (ServerHttpResponse delegate , HttpHeaders headers ) {
281
286
super (delegate );
282
287
this .mutableHeaders .putAll (delegate .getHeaders ());
288
+ this .mutableHeaders .putAll (headers );
283
289
}
284
290
285
291
@ Override
0 commit comments