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