Skip to content

Commit 58bb6e7

Browse files
dreis2211sdeleuze
authored andcommitted
Reduce allocations caused by producible media types
Closes gh-29412
1 parent e1df056 commit 58bb6e7

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,12 @@ protected void handleMatch(RequestMappingInfo info, HandlerMethod handlerMethod,
141141
exchange.getAttributes().put(URI_TEMPLATE_VARIABLES_ATTRIBUTE, uriVariables);
142142
exchange.getAttributes().put(MATRIX_VARIABLES_ATTRIBUTE, matrixVariables);
143143

144-
if (!info.getProducesCondition().getProducibleMediaTypes().isEmpty()) {
145-
Set<MediaType> mediaTypes = info.getProducesCondition().getProducibleMediaTypes();
146-
exchange.getAttributes().put(PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, mediaTypes);
144+
ProducesRequestCondition producesCondition = info.getProducesCondition();
145+
if (!producesCondition.isEmpty()) {
146+
Set<MediaType> mediaTypes = producesCondition.getProducibleMediaTypes();
147+
if (!mediaTypes.isEmpty()) {
148+
exchange.getAttributes().put(PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, mediaTypes);
149+
}
147150
}
148151
}
149152

spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMapping.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,12 @@ protected void handleMatch(RequestMappingInfo info, String lookupPath, HttpServl
147147
extractMatchDetails((PatternsRequestCondition) condition, lookupPath, request);
148148
}
149149

150-
if (!info.getProducesCondition().getProducibleMediaTypes().isEmpty()) {
151-
Set<MediaType> mediaTypes = info.getProducesCondition().getProducibleMediaTypes();
152-
request.setAttribute(PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, mediaTypes);
150+
ProducesRequestCondition producesCondition = info.getProducesCondition();
151+
if (!producesCondition.isEmpty()) {
152+
Set<MediaType> mediaTypes = producesCondition.getProducibleMediaTypes();
153+
if (!mediaTypes.isEmpty()) {
154+
request.setAttribute(PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, mediaTypes);
155+
}
153156
}
154157
}
155158

0 commit comments

Comments
 (0)