Reduce allocations caused by producible media types

Closes gh-29412
This commit is contained in:
Christoph Dreis 2022-11-01 20:04:13 +01:00 committed by Sébastien Deleuze
parent e1df056059
commit 58bb6e7181
2 changed files with 12 additions and 6 deletions

View File

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

View File

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