Browse Source

Reduce allocations caused by producible media types

Closes gh-29412
pull/29589/head
Christoph Dreis 3 years ago committed by Sébastien Deleuze
parent
commit
58bb6e7181
  1. 7
      spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMapping.java
  2. 7
      spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMapping.java

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

@ -141,11 +141,14 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe @@ -141,11 +141,14 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
exchange.getAttributes().put(URI_TEMPLATE_VARIABLES_ATTRIBUTE, uriVariables);
exchange.getAttributes().put(MATRIX_VARIABLES_ATTRIBUTE, matrixVariables);
if (!info.getProducesCondition().getProducibleMediaTypes().isEmpty()) {
Set<MediaType> mediaTypes = info.getProducesCondition().getProducibleMediaTypes();
ProducesRequestCondition producesCondition = info.getProducesCondition();
if (!producesCondition.isEmpty()) {
Set<MediaType> mediaTypes = producesCondition.getProducibleMediaTypes();
if (!mediaTypes.isEmpty()) {
exchange.getAttributes().put(PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, mediaTypes);
}
}
}
/**
* Iterate all RequestMappingInfos once again, look if any match by URL at

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

@ -147,11 +147,14 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe @@ -147,11 +147,14 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
extractMatchDetails((PatternsRequestCondition) condition, lookupPath, request);
}
if (!info.getProducesCondition().getProducibleMediaTypes().isEmpty()) {
Set<MediaType> mediaTypes = info.getProducesCondition().getProducibleMediaTypes();
ProducesRequestCondition producesCondition = info.getProducesCondition();
if (!producesCondition.isEmpty()) {
Set<MediaType> mediaTypes = producesCondition.getProducibleMediaTypes();
if (!mediaTypes.isEmpty()) {
request.setAttribute(PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, mediaTypes);
}
}
}
private void extractMatchDetails(
PathPatternsRequestCondition condition, String lookupPath, HttpServletRequest request) {

Loading…
Cancel
Save