Skip to content

Commit 9376748

Browse files
committed
Apply getAcceptLanguageAsLocale and encodeUrl
Apply the new HttpHeaders#getAcceptLanguageAsLocale() in places where it was hardcoded or defaulting. Apply ServerHttpResponse.encodeUrl in RequestContext. Issue: SPR-15024
1 parent bd8af55 commit 9376748

File tree

4 files changed

+14
-11
lines changed

4 files changed

+14
-11
lines changed

spring-web-reactive/src/main/java/org/springframework/web/reactive/function/server/DefaultServerResponseBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,8 @@ public Mono<Void> writeTo(ServerWebExchange exchange, HandlerStrategies strategi
317317
ServerHttpResponse response = exchange.getResponse();
318318
writeStatusAndHeaders(response);
319319
MediaType contentType = exchange.getResponse().getHeaders().getContentType();
320-
Locale locale = Locale.ENGLISH; // TODO: resolve locale
320+
Locale acceptLocale = exchange.getRequest().getHeaders().getAcceptLanguageAsLocale();
321+
Locale locale = (acceptLocale != null ? acceptLocale : Locale.getDefault());
321322
Stream<ViewResolver> viewResolverStream = strategies.viewResolvers().get();
322323
return Flux.fromStream(viewResolverStream)
323324
.concatMap(viewResolver -> viewResolver.resolveViewName(this.name, locale))

spring-web-reactive/src/main/java/org/springframework/web/reactive/result/view/RequestContext.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,9 @@ public RequestContext(ServerWebExchange exchange, Map<String, Object> model,
7676
this.model = model;
7777
this.messageSource = messageSource;
7878
this.defaultHtmlEscape = null; // TODO
79-
this.locale = Locale.getDefault(); // TODO
79+
80+
Locale acceptLocale = exchange.getRequest().getHeaders().getAcceptLanguageAsLocale();
81+
this.locale = acceptLocale != null ? acceptLocale : Locale.getDefault();
8082
this.timeZone = TimeZone.getDefault(); // TODO
8183
}
8284

@@ -102,7 +104,6 @@ public Map<String, Object> getModel() {
102104

103105
/**
104106
* Return the current Locale.
105-
* TODO: currently this is Locale.getDefault()
106107
*/
107108
public final Locale getLocale() {
108109
return this.locale;
@@ -118,15 +119,13 @@ public TimeZone getTimeZone() {
118119

119120
/**
120121
* Change the current locale to the specified one.
121-
* TODO: currently simply change the internal field
122122
*/
123123
public void changeLocale(Locale locale) {
124124
this.locale = locale;
125125
}
126126

127127
/**
128128
* Change the current locale to the specified locale and time zone context.
129-
* TODO: currently simply change the internal fields
130129
*/
131130
public void changeLocale(Locale locale, TimeZone timeZone) {
132131
this.locale = locale;
@@ -176,8 +175,7 @@ public String getContextPath() {
176175
*/
177176
public String getContextUrl(String relativeUrl) {
178177
String url = getContextPath() + relativeUrl;
179-
// TODO: this.response.encodeURL(url)
180-
return url;
178+
return getExchange().getResponse().encodeUrl(url);
181179
}
182180

183181
/**
@@ -194,8 +192,7 @@ public String getContextUrl(String relativeUrl, Map<String, ?> params) {
194192
String url = getContextPath() + relativeUrl;
195193
UriTemplate template = new UriTemplate(url);
196194
url = template.expand(params).toASCIIString();
197-
// TODO: this.response.encodeURL(url)
198-
return url;
195+
return getExchange().getResponse().encodeUrl(url);
199196
}
200197

201198
/**

spring-web-reactive/src/main/java/org/springframework/web/reactive/result/view/ViewResolutionResultHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,9 @@ public Mono<Void> handleResult(ServerWebExchange exchange, HandlerResult result)
212212

213213
Mono<List<View>> viewsMono;
214214
Model model = result.getModel();
215-
Locale locale = Locale.getDefault(); // TODO
215+
216+
Locale acceptLocale = exchange.getRequest().getHeaders().getAcceptLanguageAsLocale();
217+
Locale locale = acceptLocale != null ? acceptLocale : Locale.getDefault();
216218

217219
Class<?> clazz = elementType.getRawClass();
218220
if (clazz == null) {

spring-web-reactive/src/main/java/org/springframework/web/reactive/result/view/freemarker/FreeMarkerView.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,10 @@ protected Mono<Void> renderInternal(Map<String, Object> renderAttributes, MediaT
170170
if (logger.isDebugEnabled()) {
171171
logger.debug("Rendering FreeMarker template [" + getUrl() + "].");
172172
}
173-
Locale locale = Locale.getDefault(); // TODO
173+
174+
Locale acceptLocale = exchange.getRequest().getHeaders().getAcceptLanguageAsLocale();
175+
Locale locale = acceptLocale != null ? acceptLocale : Locale.getDefault();
176+
174177
DataBuffer dataBuffer = exchange.getResponse().bufferFactory().allocateBuffer();
175178
try {
176179
Charset charset = getCharset(contentType).orElse(getDefaultCharset());

0 commit comments

Comments
 (0)