@Override public Map<String, String> pathVariables() { return this.delegate.pathVariables(); }
/** * Get the path variable with the given name, if present. * @param name the variable name * @return the variable value * @throws IllegalArgumentException if there is no path variable with the given name */ default String pathVariable(String name) { Map<String, String> pathVariables = pathVariables(); if (pathVariables.containsKey(name)) { return pathVariables().get(name); } else { throw new IllegalArgumentException("No path variable with name \"" + name + "\" available"); } }
private static Map<String, Object> mergeAttributes(ServerRequest request, Map<String, String> pathVariables, PathPattern pattern) { Map<String, Object> result = new ConcurrentHashMap<>(request.attributes()); result.put(RouterFunctions.URI_TEMPLATE_VARIABLES_ATTRIBUTE, mergePathVariables(request.pathVariables(), pathVariables)); pattern = mergePatterns( (PathPattern) request.attributes().get(RouterFunctions.MATCHING_PATTERN_ATTRIBUTE), pattern); result.put(RouterFunctions.MATCHING_PATTERN_ATTRIBUTE, pattern); return result; }
private static void mergeAttributes(ServerRequest request, Map<String, String> variables, PathPattern pattern) { Map<String, String> pathVariables = mergePathVariables(request.pathVariables(), variables); request.attributes().put(RouterFunctions.URI_TEMPLATE_VARIABLES_ATTRIBUTE, Collections.unmodifiableMap(pathVariables)); pattern = mergePatterns( (PathPattern) request.attributes().get(RouterFunctions.MATCHING_PATTERN_ATTRIBUTE), pattern); request.attributes().put(RouterFunctions.MATCHING_PATTERN_ATTRIBUTE, pattern); }
@Test public void pathVariables() { Map<String, String> pathVariables = Collections.singletonMap("foo", "bar"); when(mockRequest.pathVariables()).thenReturn(pathVariables); assertSame(pathVariables, wrapper.pathVariables()); }
@SuppressWarnings("unchecked") public Mono<ServerResponse> variables(ServerRequest request) { Map<String, String> pathVariables = request.pathVariables(); Map<String, String> attributePathVariables = (Map<String, String>) request.attributes().get(RouterFunctions.URI_TEMPLATE_VARIABLES_ATTRIBUTE); assertTrue( (pathVariables.equals(attributePathVariables)) || (pathVariables.isEmpty() && (attributePathVariables == null))); PathPattern pathPattern = matchingPattern(request); String pattern = pathPattern != null ? pathPattern.getPatternString() : ""; Flux<String> responseBody; if (!pattern.isEmpty()) { responseBody = Flux.just(pattern, "\n", pathVariables.toString()); } else { responseBody = Flux.just(pathVariables.toString()); } return ServerResponse.ok().body(responseBody, String.class); }
@Override public Map<String, String> pathVariables() { return this.request.pathVariables(); } }
@Override public Map<String, String> pathVariables() { return this.request.pathVariables(); }
/** * Return the path variable with the given name, if present. * @param name the variable name * @return the variable value * @throws IllegalArgumentException if there is no path variable with the given name */ default String pathVariable(String name) { Map<String, String> pathVariables = pathVariables(); if (pathVariables.containsKey(name)) { return pathVariables().get(name); } else { throw new IllegalArgumentException( "No path variable with name \"" + name + "\" available"); } }
private Mono<ServerResponse> variables(ServerRequest request) { return ServerResponse.ok().body(fromObject(request.pathVariables())); }