@Override public Optional<ServerRequest> nest(ServerRequest request) { return Optional.ofNullable(this.pattern.matchStartOfPath(request.pathContainer())) .map(info -> new SubPathServerRequestWrapper(request, info, this.pattern)); }
private PathRemainingMatchInfo getPathRemaining(PathPattern pattern, String path) { return pattern.matchStartOfPath(toPathContainer(path)); }
private PathRemainingMatchInfo getPathRemaining(String pattern, String path) { return parse(pattern).matchStartOfPath(toPathContainer(path)); }
assertNull(parse("/foo").matchStartOfPath(toPathContainer("/footastic/bar"))); assertNull(parse("/f?o").matchStartOfPath(toPathContainer("/footastic/bar"))); assertNull(parse("/f*o*p").matchStartOfPath(toPathContainer("/flooptastic/bar"))); assertNull(parse("/{abc}abc").matchStartOfPath(toPathContainer("/xyzabcbar/bar"))); assertNull(parse("/resource/**").matchStartOfPath(toPathContainer("/resourceX"))); .matchStartOfPath(toPathContainer("/resource")).getPathRemaining().value()); assertNull(parse("/resource/{*foo}").matchStartOfPath(toPathContainer("/resourceX"))); .matchStartOfPath(toPathContainer("/resource")).getPathRemaining().value()); .matchStartOfPath(toPathContainer("/aaa/b/ccd/ef/x/g/i")); assertNotNull(pri); assertEquals("/i",pri.getPathRemaining().value()); assertEquals("b",pri.getUriVariables().get("bbb")); pri = parse("/aaa/{bbb}/c?d/e*f/*/g/").matchStartOfPath(toPathContainer("/aaa/b/ccd/ef/x/g/i")); assertNotNull(pri); assertEquals("i",pri.getPathRemaining().value()); assertEquals("b",pri.getUriVariables().get("bbb")); pri = parse("/{aaa}_{bbb}/e*f/{x}/g").matchStartOfPath(toPathContainer("/aa_bb/ef/x/g/i")); assertNotNull(pri); assertEquals("/i",pri.getPathRemaining().value()); assertNull(parse("/a/b").matchStartOfPath(toPathContainer(""))); assertEquals("/a/b",parse("").matchStartOfPath(toPathContainer("/a/b")).getPathRemaining().value());