@Test public void pathRemainingEnhancements_spr15419() { PathPattern pp; PathPattern.PathRemainingMatchInfo pri; // It would be nice to partially match a path and get any bound variables in one step pp = parse("/{this}/{one}/{here}"); pri = getPathRemaining(pp, "/foo/bar/goo/boo"); assertEquals("/boo",pri.getPathRemaining().value()); assertEquals("foo",pri.getUriVariables().get("this")); assertEquals("bar",pri.getUriVariables().get("one")); assertEquals("goo",pri.getUriVariables().get("here")); pp = parse("/aaa/{foo}"); pri = getPathRemaining(pp, "/aaa/bbb"); assertEquals("",pri.getPathRemaining().value()); assertEquals("bbb",pri.getUriVariables().get("foo")); pp = parse("/aaa/bbb"); pri = getPathRemaining(pp, "/aaa/bbb"); assertEquals("",pri.getPathRemaining().value()); assertEquals(0,pri.getUriVariables().size()); pp = parse("/*/{foo}/b*"); pri = getPathRemaining(pp, "/foo"); assertNull(pri); pri = getPathRemaining(pp, "/abc/def/bhi"); assertEquals("",pri.getPathRemaining().value()); assertEquals("def",pri.getUriVariables().get("foo")); pri = getPathRemaining(pp, "/abc/def/bhi/jkl"); assertEquals("/jkl",pri.getPathRemaining().value()); assertEquals("def",pri.getUriVariables().get("foo")); }
.matchStartOfPath(toPathContainer("/resource")).getPathRemaining().value()); .matchStartOfPath(toPathContainer("/resource")).getPathRemaining().value()); assertEquals("/i",pri.getPathRemaining().value()); assertEquals("b",pri.getUriVariables().get("bbb")); assertEquals("i",pri.getPathRemaining().value()); assertEquals("b",pri.getUriVariables().get("bbb")); assertEquals("/i",pri.getPathRemaining().value()); assertEquals("aa",pri.getUriVariables().get("aaa")); assertEquals("bb",pri.getUriVariables().get("bbb")); assertEquals("/a/b",parse("").matchStartOfPath(toPathContainer("/a/b")).getPathRemaining().value()); assertEquals("",parse("").matchStartOfPath(toPathContainer("")).getPathRemaining().value());
@Test public void pathRemainderBasicCases_spr15336() { // Cover all PathElement kinds assertEquals("/bar", getPathRemaining("/foo","/foo/bar").getPathRemaining().value()); assertEquals("/", getPathRemaining("/foo","/foo/").getPathRemaining().value()); assertEquals("/bar",getPathRemaining("/foo*","/foo/bar").getPathRemaining().value()); assertEquals("/bar", getPathRemaining("/*","/foo/bar").getPathRemaining().value()); assertEquals("/bar", getPathRemaining("/{foo}","/foo/bar").getPathRemaining().value()); assertNull(getPathRemaining("/foo","/bar/baz")); assertEquals("",getPathRemaining("/**","/foo/bar").getPathRemaining().value()); assertEquals("",getPathRemaining("/{*bar}","/foo/bar").getPathRemaining().value()); assertEquals("/bar",getPathRemaining("/a?b/d?e","/aab/dde/bar").getPathRemaining().value()); assertEquals("/bar",getPathRemaining("/{abc}abc","/xyzabc/bar").getPathRemaining().value()); assertEquals("/bar",getPathRemaining("/*y*","/xyzxyz/bar").getPathRemaining().value()); assertEquals("",getPathRemaining("/","/").getPathRemaining().value()); assertEquals("a",getPathRemaining("/","/a").getPathRemaining().value()); assertEquals("a/",getPathRemaining("/","/a/").getPathRemaining().value()); assertEquals("/bar",getPathRemaining("/a{abc}","/a/bar").getPathRemaining().value()); assertEquals("/bar", getPathRemaining("/foo//","/foo///bar").getPathRemaining().value()); }
public SubPathServerRequestWrapper(ServerRequest request, PathPattern.PathRemainingMatchInfo info, PathPattern pattern) { this.request = request; this.pathContainer = new SubPathContainer(info.getPathRemaining()); this.attributes = mergeAttributes(request, info.getUriVariables(), pattern); }