@Test public void extractUriTemplateVariables() throws Exception { Map<String, String> result = pathMatcher.extractUriTemplateVariables("/hotels/{hotel}", "/hotels/1"); assertEquals(Collections.singletonMap("hotel", "1"), result); result = pathMatcher.extractUriTemplateVariables("/h?tels/{hotel}", "/hotels/1"); assertEquals(Collections.singletonMap("hotel", "1"), result); result = pathMatcher.extractUriTemplateVariables("/hotels/{hotel}/bookings/{booking}", "/hotels/1/bookings/2"); Map<String, String> expected = new LinkedHashMap<>(); expected.put("hotel", "1"); expected.put("booking", "2"); assertEquals(expected, result); result = pathMatcher.extractUriTemplateVariables("/**/hotels/**/{hotel}", "/foo/hotels/bar/1"); assertEquals(Collections.singletonMap("hotel", "1"), result); result = pathMatcher.extractUriTemplateVariables("/{page}.html", "/42.html"); assertEquals(Collections.singletonMap("page", "42"), result); result = pathMatcher.extractUriTemplateVariables("/{page}.*", "/42.html"); assertEquals(Collections.singletonMap("page", "42"), result); result = pathMatcher.extractUriTemplateVariables("/A-{B}-C", "/A-b-C"); assertEquals(Collections.singletonMap("B", "b"), result); result = pathMatcher.extractUriTemplateVariables("/{name}.{extension}", "/test.html"); expected = new LinkedHashMap<>(); expected.put("name", "test"); expected.put("extension", "html"); assertEquals(expected, result); }
@Test public void extractUriTemplateVariablesRegex() { Map<String, String> result = pathMatcher .extractUriTemplateVariables("{symbolicName:[\\w\\.]+}-{version:[\\w\\.]+}.jar", "com.example-1.0.0.jar"); assertEquals("com.example", result.get("symbolicName")); assertEquals("1.0.0", result.get("version")); result = pathMatcher.extractUriTemplateVariables("{symbolicName:[\\w\\.]+}-sources-{version:[\\w\\.]+}.jar", "com.example-sources-1.0.0.jar"); assertEquals("com.example", result.get("symbolicName")); assertEquals("1.0.0", result.get("version")); }
/** * SPR-8455 */ @Test public void extractUriTemplateVarsRegexCapturingGroups() { exception.expect(IllegalArgumentException.class); exception.expectMessage(containsString("The number of capturing groups in the pattern")); pathMatcher.extractUriTemplateVariables("/web/{id:foo(bar)?}", "/web/foobar"); }
/** * SPR-7787 */ @Test public void extractUriTemplateVarsRegexQualifiers() { Map<String, String> result = pathMatcher.extractUriTemplateVariables( "{symbolicName:[\\p{L}\\.]+}-sources-{version:[\\p{N}\\.]+}.jar", "com.example-sources-1.0.0.jar"); assertEquals("com.example", result.get("symbolicName")); assertEquals("1.0.0", result.get("version")); result = pathMatcher.extractUriTemplateVariables( "{symbolicName:[\\w\\.]+}-sources-{version:[\\d\\.]+}-{year:\\d{4}}{month:\\d{2}}{day:\\d{2}}.jar", "com.example-sources-1.0.0-20100220.jar"); assertEquals("com.example", result.get("symbolicName")); assertEquals("1.0.0", result.get("version")); assertEquals("2010", result.get("year")); assertEquals("02", result.get("month")); assertEquals("20", result.get("day")); result = pathMatcher.extractUriTemplateVariables( "{symbolicName:[\\p{L}\\.]+}-sources-{version:[\\p{N}\\.\\{\\}]+}.jar", "com.example-sources-1.0.0.{12}.jar"); assertEquals("com.example", result.get("symbolicName")); assertEquals("1.0.0.{12}", result.get("version")); }
assertTrue(new AntPathMatcher().match("/*", "/")); assertFalse(new AntPathMatcher().match("/*{foo}", "/")); Map<String, String> vars = new AntPathMatcher().extractUriTemplateVariables("/{foo}{bar}", "/a"); assertEquals("a",vars.get("foo")); assertEquals("",vars.get("bar"));
Map<String, String> vars = matcher.extractUriTemplateVariables(ASYNC_JOB_PATH_PATTERN, getDecodedUrl(req)); String uuid = vars.get("uuid"); AsyncRestQueryResult ret = asyncStore.query(uuid);
msg.setServiceId(ApiMediatorConstant.SERVICE_ID); Map<String, String> urlvars = matcher.extractUriTemplateVariables(api.path, getDecodedUrl(req)); String uuid = urlvars.get("uuid"); if (uuid != null) {
Map<String, String> vars = matcher.extractUriTemplateVariables(api.path, url); for (Map.Entry<String, String> e : vars.entrySet()) {
@Override public Map<String, String> extractUriTemplateVariables(String path) { return this.antMatcher.extractUriTemplateVariables(this.pattern, path); }
@Override public Map<String, String> extractUriTemplateVariables(String pattern, String path) { //see RESTWS-606 if (path != null && pattern != null) { if (path.startsWith("/rest/") && path.contains(".") && !path.endsWith("/") && pattern.endsWith(".*")) { //a pattern like /rest/v1/{resource}/{uuid}.* needs to be replaced with /rest/v1/{resource}/{uuid} //in order to match a path like /rest/v1/systemsetting/concept.defaultConceptMapType pattern = pattern.replace(".*", ""); } } return this.delegate.extractUriTemplateVariables(pattern, path); }
String format = "location/{state}/{city}"; String actualUrl = "location/washington/seattle"; AntPathMatcher pathMatcher = new AntPathMatcher(); Map<String, String> variables = pathMatcher.extractUriTemplateVariables(format, actualUrl); assertThat(variables.get("state"), is("washington")); assertThat(variables.get("city"), is("seattle"));
new AntPathMatcher().extractUriTemplateVariables("/fname/{f}/lname/{l}", requestURI); request.setAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, uriTemplateVariables);
new AntPathMatcher().extractUriTemplateVariables("/fname/{f}/lname/{l}", requestURI); request.setAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, uriTemplateVariables);
@Test // INT-1677 public void withExpressions() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); request.setMethod("POST"); request.setContentType("text/plain"); request.setParameter("foo", "bar"); request.setContent("hello".getBytes()); String requestURI = "/fname/bill/lname/clinton"; //See org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping#handleMatch Map<String, String> uriTemplateVariables = new AntPathMatcher().extractUriTemplateVariables("/fname/{f}/lname/{l}", requestURI); request.setAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, uriTemplateVariables); request.setRequestURI(requestURI); MockHttpServletResponse response = new MockHttpServletResponse(); inboundAdapterWithExpressions.handleRequest(request, response); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); Message<?> message = requests.receive(0); assertNotNull(message); Object payload = message.getPayload(); assertTrue(payload instanceof String); assertEquals("bill", payload); assertEquals("clinton", message.getHeaders().get("lname")); }
@Override public String getMethodName(HttpServletRequest request) { String path = request.getServletPath(); String method = pathMatcher.extractUriTemplateVariables(getUrlMapping(), path).get(getMethodVariable()); return method; }
private String getTenantFromRequestUri(final HttpServletRequest request) { final String requestURI = request.getRequestURI(); LOGGER.debug("retrieving tenant from URI request {}", requestURI); final String requestPathPattern = request.getContextPath() + TENANT_AWARE_CONTROLLER_PATTERN; if (!pathExtractor.match(requestPathPattern, requestURI)) { LOGGER.info("Controller request not matching tenant aware request pattern requestpath: {}, pattern {}", requestURI, TENANT_AWARE_CONTROLLER_PATTERN); return null; } final Map<String, String> extractUriTemplateVariables = pathExtractor .extractUriTemplateVariables(requestPathPattern, requestURI); if (LOGGER.isTraceEnabled()) { LOGGER.trace("Parsed path variables {} using tenant {}", extractUriTemplateVariables, extractUriTemplateVariables.get(TENANT_PLACE_HOLDER)); } return extractUriTemplateVariables.get(TENANT_PLACE_HOLDER); } }
private String getTenantFromRequestUri(final HttpServletRequest request) { final String requestURI = request.getRequestURI(); LOGGER.debug("retrieving tenant from URI request {}", requestURI); final String requestPathPattern = request.getContextPath() + TENANT_AWARE_CONTROLLER_PATTERN; if (!pathExtractor.match(requestPathPattern, requestURI)) { LOGGER.info("Controller request not matching tenant aware request pattern requestpath: {}, pattern {}", requestURI, TENANT_AWARE_CONTROLLER_PATTERN); return null; } final Map<String, String> extractUriTemplateVariables = pathExtractor .extractUriTemplateVariables(requestPathPattern, requestURI); if (LOGGER.isTraceEnabled()) { LOGGER.trace("Parsed path variables {} using tenant {}", extractUriTemplateVariables, extractUriTemplateVariables.get(TENANT_PLACE_HOLDER)); } return extractUriTemplateVariables.get(TENANT_PLACE_HOLDER); } }
LOG.debug("retrieving principal from URI request {}", requestURI); final Map<String, String> extractUriTemplateVariables = pathExtractor .extractUriTemplateVariables(request.getContextPath() + CONTROLLER_REQUEST_ANT_PATTERN, requestURI); final String controllerId = extractUriTemplateVariables.get(CONTROLLER_ID_PLACE_HOLDER); final String tenant = extractUriTemplateVariables.get(TENANT_PLACE_HOLDER); } else if (pathExtractor.match(request.getContextPath() + CONTROLLER_DL_REQUEST_ANT_PATTERN, requestURI)) { LOG.debug("retrieving path variables from URI request {}", requestURI); final Map<String, String> extractUriTemplateVariables = pathExtractor.extractUriTemplateVariables( request.getContextPath() + CONTROLLER_DL_REQUEST_ANT_PATTERN, requestURI); final String tenant = extractUriTemplateVariables.get(TENANT_PLACE_HOLDER);
LOG.debug("retrieving principal from URI request {}", requestURI); final Map<String, String> extractUriTemplateVariables = pathExtractor .extractUriTemplateVariables(request.getContextPath() + CONTROLLER_REQUEST_ANT_PATTERN, requestURI); final String controllerId = extractUriTemplateVariables.get(CONTROLLER_ID_PLACE_HOLDER); final String tenant = extractUriTemplateVariables.get(TENANT_PLACE_HOLDER); } else if (pathExtractor.match(request.getContextPath() + CONTROLLER_DL_REQUEST_ANT_PATTERN, requestURI)) { LOG.debug("retrieving path variables from URI request {}", requestURI); final Map<String, String> extractUriTemplateVariables = pathExtractor.extractUriTemplateVariables( request.getContextPath() + CONTROLLER_DL_REQUEST_ANT_PATTERN, requestURI); final String tenant = extractUriTemplateVariables.get(TENANT_PLACE_HOLDER);
String pattern = requestMappingInfo.getPatternsCondition().getPatterns().iterator().next(); if (pattern.contains("{") && pattern.contains("}")) { Map<String, String> result = this.matcher.extractUriTemplateVariables(pattern, this.pathHelper.getLookupPathForRequest(request)); Iterator<Entry<String, String>> iterator = result.entrySet().iterator(); while (iterator.hasNext()) {