Skip to content

Commit 3f32f72

Browse files
committed
Polish
SPR-15576
1 parent 0183576 commit 3f32f72

File tree

4 files changed

+16
-20
lines changed

4 files changed

+16
-20
lines changed

spring-webflux/src/main/java/org/springframework/web/reactive/result/HandlerResultHandlerSupport.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.Comparator;
2222
import java.util.LinkedHashSet;
2323
import java.util.List;
24-
import java.util.Optional;
2524
import java.util.Set;
2625
import java.util.function.Supplier;
2726

@@ -150,12 +149,9 @@ private List<MediaType> getAcceptableTypes(ServerWebExchange exchange) {
150149
private List<MediaType> getProducibleTypes(ServerWebExchange exchange,
151150
Supplier<List<MediaType>> producibleTypesSupplier) {
152151

153-
Optional<Object> optional = exchange.getAttribute(HandlerMapping.PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE);
154-
if (optional.isPresent()) {
155-
Set<MediaType> set = (Set<MediaType>) optional.get();
156-
return new ArrayList<>(set);
157-
}
158-
return producibleTypesSupplier.get();
152+
return exchange.getAttribute(HandlerMapping.PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE)
153+
.map(attribute -> (List<MediaType>) new ArrayList<>((Set<MediaType>) attribute))
154+
.orElseGet(producibleTypesSupplier);
159155
}
160156

161157
private MediaType selectMoreSpecificMediaType(MediaType acceptable, MediaType producible) {

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

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.util.HashSet;
2121
import java.util.List;
2222
import java.util.Map;
23-
import java.util.Optional;
2423
import java.util.Set;
2524
import java.util.stream.Collectors;
2625

@@ -32,7 +31,6 @@
3231
import org.springframework.http.MediaType;
3332
import org.springframework.http.codec.EncoderHttpMessageWriter;
3433
import org.springframework.http.codec.HttpMessageWriter;
35-
import org.springframework.http.server.reactive.ServerHttpResponse;
3634
import org.springframework.util.Assert;
3735
import org.springframework.web.server.ServerWebExchange;
3836

@@ -116,25 +114,26 @@ public final Set<String> getModelKeys() {
116114
@Override
117115
@SuppressWarnings("unchecked")
118116
public Mono<Void> render(Map<String, ?> model, MediaType contentType, ServerWebExchange exchange) {
119-
return getObjectToRender(model)
120-
.map(value -> write(value, contentType, exchange))
121-
.orElseGet(() -> exchange.getResponse().setComplete());
117+
Object value = getObjectToRender(model);
118+
return (value != null) ?
119+
write(value, contentType, exchange) :
120+
exchange.getResponse().setComplete();
122121
}
123122

124-
private Optional<Object> getObjectToRender(Map<String, ?> model) {
123+
private Object getObjectToRender(Map<String, ?> model) {
125124

126125
Map<String, ?> result = model.entrySet().stream()
127126
.filter(this::isMatch)
128127
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
129128

130129
if (result.isEmpty()) {
131-
return Optional.empty();
130+
return null;
132131
}
133132
else if (result.size() == 1) {
134-
return Optional.of(result.values().iterator().next());
133+
return result.values().iterator().next();
135134
}
136135
else if (this.canWriteMap) {
137-
return Optional.of(result);
136+
return result;
138137
}
139138
else {
140139
throw new IllegalStateException("Multiple matches found: " + result + " but " +

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ else if (!htmlEscape && errors instanceof EscapedErrors) {
389389
protected <T> T getModelObject(String modelName) {
390390
T modelObject = (T) this.model.get(modelName);
391391
if (modelObject == null) {
392-
modelObject = (T) this.exchange.getAttribute(modelName);
392+
modelObject = (T) this.exchange.getAttribute(modelName).orElse(null);
393393
}
394394
return modelObject;
395395
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import org.springframework.context.ApplicationContextException;
4343
import org.springframework.core.io.buffer.DataBuffer;
4444
import org.springframework.http.MediaType;
45+
import org.springframework.util.MimeType;
4546
import org.springframework.web.reactive.result.view.AbstractUrlBasedView;
4647
import org.springframework.web.server.ServerWebExchange;
4748

@@ -177,7 +178,7 @@ protected Mono<Void> renderInternal(Map<String, Object> renderAttributes, MediaT
177178

178179
DataBuffer dataBuffer = exchange.getResponse().bufferFactory().allocateBuffer();
179180
try {
180-
Charset charset = getCharset(contentType).orElse(getDefaultCharset());
181+
Charset charset = getCharset(contentType);
181182
Writer writer = new OutputStreamWriter(dataBuffer.asOutputStream(), charset);
182183
getTemplate(locale).process(freeMarkerModel, writer);
183184
}
@@ -191,8 +192,8 @@ protected Mono<Void> renderInternal(Map<String, Object> renderAttributes, MediaT
191192
return exchange.getResponse().writeWith(Flux.just(dataBuffer));
192193
}
193194

194-
private Optional<Charset> getCharset(MediaType mediaType) {
195-
return (mediaType != null ? Optional.ofNullable(mediaType.getCharset()) : Optional.empty());
195+
private Charset getCharset(MediaType mediaType) {
196+
return Optional.ofNullable(mediaType).map(MimeType::getCharset).orElse(getDefaultCharset());
196197
}
197198

198199
/**

0 commit comments

Comments
 (0)