/** * Get the URL path patterns associated with this {@link RequestMappingInfo}. */ @Override protected Set<String> getMappingPathPatterns(RequestMappingInfo info) { return info.getPatternsCondition().getPatterns(); }
public PartialMatchHelper(Set<RequestMappingInfo> infos, HttpServletRequest request) { for (RequestMappingInfo info : infos) { if (info.getPatternsCondition().getMatchingCondition(request) != null) { this.partialMatches.add(new PartialMatch(info, request)); } } }
/** * Get the URL path patterns associated with this {@link RequestMappingInfo}. */ @Override protected Set<String> getMappingPathPatterns(RequestMappingInfo info) { return info.getPatternsCondition().getPatterns(); }
public PartialMatchHelper(Set<RequestMappingInfo> infos, HttpServletRequest request) { for (RequestMappingInfo info : infos) { if (info.getPatternsCondition().getMatchingCondition(request) != null) { this.partialMatches.add(new PartialMatch(info, request)); } } }
@Autowired private RequestMappingHandlerMapping requestMappingHandlerMapping; @PostConstruct public void init() { Map<RequestMappingInfo, HandlerMethod> handlerMethods = this.requestMappingHandlerMapping.getHandlerMethods(); for(Entry<RequestMappingInfo, HandlerMethod> item : handlerMethods.entrySet()) { RequestMappingInfo mapping = item.getKey(); HandlerMethod method = item.getValue(); for (String urlPattern : mapping.getPatternsCondition().getPatterns()) { System.out.println( method.getBeanType().getName() + "#" + method.getMethod().getName() + " <-- " + urlPattern); if (urlPattern.equals("some specific url")) { //add to list of matching METHODS } } } }
@Override public List<Map<String, String>> getAllUrl(String p1) { RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class); //获取 url与类和方法的对应信息 Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods(); List<Map<String, String>> urlList = new ArrayList<>(); for (Map.Entry<RequestMappingInfo, HandlerMethod> entry : map.entrySet()) { RequestMappingInfo info = entry.getKey(); HandlerMethod handlerMethod = map.get(info); RequiresPermissions permissions = handlerMethod.getMethodAnnotation(RequiresPermissions.class); String perms = ""; if (null != permissions) { perms = StringUtils.join(permissions.value(), ","); } Set<String> patterns = info.getPatternsCondition().getPatterns(); for (String url : patterns) { Map<String, String> urlMap = new HashMap<>(); urlMap.put("url", url.replaceFirst("\\/", "")); urlMap.put("perms", perms); urlList.add(urlMap); } } return urlList; }
Map<String, String> uriVariables; Set<String> patterns = info.getPatternsCondition().getPatterns(); if (patterns.isEmpty()) { bestPattern = lookupPath;
@Override public RequestMatchResult match(HttpServletRequest request, String pattern) { RequestMappingInfo info = RequestMappingInfo.paths(pattern).options(this.config).build(); RequestMappingInfo matchingInfo = info.getMatchingCondition(request); if (matchingInfo == null) { return null; } Set<String> patterns = matchingInfo.getPatternsCondition().getPatterns(); String lookupPath = getUrlPathHelper().getLookupPathForRequest(request); return new RequestMatchResult(patterns.iterator().next(), lookupPath, getPathMatcher()); }
private RequestMappingInfo assertComposedAnnotationMapping(String methodName, String path, RequestMethod requestMethod) throws Exception { Class<?> clazz = ComposedAnnotationController.class; Method method = clazz.getMethod(methodName); RequestMappingInfo info = this.handlerMapping.getMappingForMethod(method, clazz); assertNotNull(info); Set<String> paths = info.getPatternsCondition().getPatterns(); assertEquals(1, paths.size()); assertEquals(path, paths.iterator().next()); Set<RequestMethod> methods = info.getMethodsCondition().getMethods(); assertEquals(1, methods.size()); assertEquals(requestMethod, methods.iterator().next()); return info; }
@Test public void pathPrefix() throws NoSuchMethodException { this.handlerMapping.setEmbeddedValueResolver(value -> "/${prefix}".equals(value) ? "/api" : value); this.handlerMapping.setPathPrefixes(Collections.singletonMap( "/${prefix}", HandlerTypePredicate.forAnnotation(RestController.class))); Method method = UserController.class.getMethod("getUser"); RequestMappingInfo info = this.handlerMapping.getMappingForMethod(method, UserController.class); assertNotNull(info); assertEquals(Collections.singleton("/api/user/{id}"), info.getPatternsCondition().getPatterns()); }
Map<String, String> uriVariables; Set<String> patterns = info.getPatternsCondition().getPatterns(); if (patterns.isEmpty()) { bestPattern = lookupPath;
@Override public RequestMatchResult match(HttpServletRequest request, String pattern) { RequestMappingInfo info = RequestMappingInfo.paths(pattern).options(this.config).build(); RequestMappingInfo matchingInfo = info.getMatchingCondition(request); if (matchingInfo == null) { return null; } Set<String> patterns = matchingInfo.getPatternsCondition().getPatterns(); String lookupPath = getUrlPathHelper().getLookupPathForRequest(request); return new RequestMatchResult(patterns.iterator().next(), lookupPath, getPathMatcher()); }
private RequestMappingInfo withPrefix(RequestMappingInfo mapping) { if (!StringUtils.hasText(adminContextPath)) { return mapping; } PatternsRequestCondition patternsCondition = new PatternsRequestCondition( withNewPatterns(mapping.getPatternsCondition().getPatterns())); return new RequestMappingInfo(patternsCondition, mapping.getMethodsCondition(), mapping.getParamsCondition(), mapping.getHeadersCondition(), mapping.getConsumesCondition(), mapping.getProducesCondition(), mapping.getCustomCondition()); }
Set<String> defaultPatterns = defaultMapping.getPatternsCondition().getPatterns(); String[] patterns = new String[defaultPatterns.size()];
result = this.patternsCondition.compareTo(other.getPatternsCondition(), request); if (result != 0) { return result;
@Test public void createEmpty() { RequestMappingInfo info = paths().build(); assertEquals(0, info.getPatternsCondition().getPatterns().size()); assertEquals(0, info.getMethodsCondition().getMethods().size()); assertEquals(true, info.getConsumesCondition().isEmpty()); assertEquals(true, info.getProducesCondition().isEmpty()); assertNotNull(info.getParamsCondition()); assertNotNull(info.getHeadersCondition()); assertNull(info.getCustomCondition()); }
.orElseThrow(() -> new AssertionError("UserController bean not found")) .getKey(); assertEquals(Collections.singleton("/api/user/{id}"), info.getPatternsCondition().getPatterns());
result = this.patternsCondition.compareTo(other.getPatternsCondition(), request); if (result != 0) { return result;
private RequestMappingInfo withEndpointMappedPatterns( ExposableControllerEndpoint endpoint, RequestMappingInfo mapping) { Set<String> patterns = mapping.getPatternsCondition().getPatterns(); if (patterns.isEmpty()) { patterns = Collections.singleton(""); } String[] endpointMappedPatterns = patterns.stream() .map((pattern) -> getEndpointMappedPattern(endpoint, pattern)) .toArray(String[]::new); return withNewPatterns(mapping, endpointMappedPatterns); }
@Override protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) { RequestMappingInfo info = super.getMappingForMethod(method, handlerType); if (info == null) { return null; } PatternsRequestCondition patternsCondition = customize(info.getPatternsCondition(), prefix); ProducesRequestCondition producesCondition = customize(info.getProducesCondition()); return new RequestMappingInfo(patternsCondition, info.getMethodsCondition(), info.getParamsCondition(), info.getHeadersCondition(), info.getConsumesCondition(), producesCondition, info.getCustomCondition()); }