use of org.springframework.web.servlet.mvc.condition.RequestMethodsRequestCondition in project spring-framework by spring-projects.
the class RequestMappingInfo method getMatchingCondition.
/**
* Checks if all conditions in this request mapping info match the provided request and returns
* a potentially new request mapping info with conditions tailored to the current request.
* <p>For example the returned instance may contain the subset of URL patterns that match to
* the current request, sorted with best matching patterns on top.
* @return a new instance in case all conditions match; or {@code null} otherwise
*/
@Override
public RequestMappingInfo getMatchingCondition(HttpServletRequest request) {
RequestMethodsRequestCondition methods = this.methodsCondition.getMatchingCondition(request);
ParamsRequestCondition params = this.paramsCondition.getMatchingCondition(request);
HeadersRequestCondition headers = this.headersCondition.getMatchingCondition(request);
ConsumesRequestCondition consumes = this.consumesCondition.getMatchingCondition(request);
ProducesRequestCondition produces = this.producesCondition.getMatchingCondition(request);
if (methods == null || params == null || headers == null || consumes == null || produces == null) {
return null;
}
PatternsRequestCondition patterns = this.patternsCondition.getMatchingCondition(request);
if (patterns == null) {
return null;
}
RequestConditionHolder custom = this.customConditionHolder.getMatchingCondition(request);
if (custom == null) {
return null;
}
return new RequestMappingInfo(this.name, patterns, methods, params, headers, consumes, produces, custom.getCondition());
}
use of org.springframework.web.servlet.mvc.condition.RequestMethodsRequestCondition in project spring-framework by spring-projects.
the class RequestMappingInfo method combine.
/**
* Combines "this" request mapping info (i.e. the current instance) with another request mapping info instance.
* <p>Example: combine type- and method-level request mappings.
* @return a new request mapping info instance; never {@code null}
*/
@Override
public RequestMappingInfo combine(RequestMappingInfo other) {
String name = combineNames(other);
PatternsRequestCondition patterns = this.patternsCondition.combine(other.patternsCondition);
RequestMethodsRequestCondition methods = this.methodsCondition.combine(other.methodsCondition);
ParamsRequestCondition params = this.paramsCondition.combine(other.paramsCondition);
HeadersRequestCondition headers = this.headersCondition.combine(other.headersCondition);
ConsumesRequestCondition consumes = this.consumesCondition.combine(other.consumesCondition);
ProducesRequestCondition produces = this.producesCondition.combine(other.producesCondition);
RequestConditionHolder custom = this.customConditionHolder.combine(other.customConditionHolder);
return new RequestMappingInfo(name, patterns, methods, params, headers, consumes, produces, custom.getCondition());
}
use of org.springframework.web.servlet.mvc.condition.RequestMethodsRequestCondition in project dhis2-core by dhis2.
the class CustomRequestMappingHandlerMapping method getMappingForMethod.
@Override
protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
RequestMappingInfo info = super.getMappingForMethod(method, handlerType);
if (info == null) {
return null;
}
ApiVersion typeApiVersion = AnnotationUtils.findAnnotation(handlerType, ApiVersion.class);
ApiVersion methodApiVersion = AnnotationUtils.findAnnotation(method, ApiVersion.class);
if (typeApiVersion == null && methodApiVersion == null) {
return info;
}
RequestMethodsRequestCondition methodsCondition = info.getMethodsCondition();
if (methodsCondition.getMethods().isEmpty()) {
methodsCondition = new RequestMethodsRequestCondition(RequestMethod.GET);
}
Set<String> rqmPatterns = info.getPatternsCondition().getPatterns();
Set<String> patterns = new HashSet<>();
Set<DhisApiVersion> versions = getVersions(typeApiVersion, methodApiVersion);
for (String pattern : rqmPatterns) {
versions.stream().filter(version -> !version.isIgnore()).forEach(version -> {
if (!pattern.startsWith(version.getVersionString())) {
if (pattern.startsWith("/"))
patterns.add("/" + version.getVersion() + pattern);
else
patterns.add("/" + version.getVersion() + "/" + pattern);
} else {
patterns.add(pattern);
}
});
}
PatternsRequestCondition patternsRequestCondition = new PatternsRequestCondition(patterns.toArray(new String[] {}), null, null, true, true, null);
return new RequestMappingInfo(null, patternsRequestCondition, methodsCondition, info.getParamsCondition(), info.getHeadersCondition(), info.getConsumesCondition(), info.getProducesCondition(), info.getCustomCondition());
}
Aggregations