@Test public void testSamePrefix() throws Exception { Router router = new Router(); router.append("/public/foo"); router.append("/public/bar"); assertEquals(2, router.getSegmentSize("public")); Route publicRoute1 = router.getSegment("public", 0); assertEquals(1, publicRoute1.getSegmentSize("foo")); Route publicRoute2 = router.getSegment("public", 1); assertEquals(1, publicRoute2.getSegmentSize("bar")); }
@Test public void testParameterSegment() throws Exception { Router router = new Router(); router.append("/{a}"); // assertEquals(0, router.getSegmentNames().size()); assertEquals(1, router.getPatternSize()); PatternRoute patternRoute = router.getPattern(0); assertEquals("(?:([^/]+))(?:(?<=^)|(?=/)|$)", patternRoute.pattern.re.getPattern()); assertEquals(1, patternRoute.params.length); assertEquals(Names.A, patternRoute.params[0].name); assertEquals("^(.+)$", patternRoute.params[0].matchingRegex[0].re.getPattern()); assertFalse(patternRoute.params[0].preservePath); assertEquals(2, patternRoute.chunks.length); assertEquals("", patternRoute.chunks[0]); assertEquals("", patternRoute.chunks[1]); }
public Handler(Bridge bridge) throws Exception { this.bridge = bridge; // HashMap<MethodHandle, Route> forwardRoutes = new HashMap<MethodHandle, Route>(); HashMap<Route, RouteDescriptor> backwardRoutes = new HashMap<Route, RouteDescriptor>(); // Route root = new Router(); RouterService router = bridge.getApplication().resolveBean(RouterService.class); if (router != null) { RouterDescriptor desc = router.getDescriptor(); if (desc != null) { Map<RouteDescriptor, Route> ret = desc.popupate(root); for (Map.Entry<RouteDescriptor, Route> entry : ret.entrySet()) { forwardRoutes.put(entry.getKey().handle, entry.getValue()); backwardRoutes.put(entry.getValue(), entry.getKey()); } } } // this.forwardRoutes = forwardRoutes; this.backwardRoutes = backwardRoutes; this.root = root; }
valueMatcher.insert(0, '^'); valueMatcher.append("$"); renderingRegexes[i] = router.compile(valueMatcher.toString()); templatePrefixes[i] = v.getPrefix(); templateSuffixes[i] = v.getSuffix();
@Test public void testQualifiedParameterSegment() throws Exception { Router router = new Router(); router.append("/{q:a}"); // assertEquals(0, router.getSegmentNames().size()); assertEquals(1, router.getPatternSize()); PatternRoute patternRoute = router.getPattern(0); assertEquals("(?:([^/]+))(?:(?<=^)|(?=/)|$)", patternRoute.pattern.re.getPattern()); assertEquals(1, patternRoute.params.length); assertEquals(Names.Q_A, patternRoute.params[0].name); assertEquals("^(.+)$", patternRoute.params[0].matchingRegex[0].re.getPattern()); assertFalse(patternRoute.params[0].preservePath); assertEquals(2, patternRoute.chunks.length); assertEquals("", patternRoute.chunks[0]); assertEquals("", patternRoute.chunks[1]); }
public Handler(Bridge bridge) throws Exception { this.bridge = bridge; // HashMap<MethodHandle, Route> forwardRoutes = new HashMap<MethodHandle, Route>(); HashMap<Route, RouteDescriptor> backwardRoutes = new HashMap<Route, RouteDescriptor>(); // Route root = new Router(); RouterService router = bridge.getApplication().resolveBean(RouterService.class); if (router != null) { RouterDescriptor desc = router.getDescriptor(); if (desc != null) { Map<RouteDescriptor, Route> ret = desc.popupate(root); for (Map.Entry<RouteDescriptor, Route> entry : ret.entrySet()) { forwardRoutes.put(entry.getKey().handle, entry.getValue()); backwardRoutes.put(entry.getValue(), entry.getKey()); } } } // this.forwardRoutes = forwardRoutes; this.backwardRoutes = backwardRoutes; this.root = root; }
valueMatcher.insert(0, '^'); valueMatcher.append("$"); renderingRegexes[i] = router.compile(valueMatcher.toString()); templatePrefixes[i] = v.getPrefix(); templateSuffixes[i] = v.getSuffix();
@Test public void testQualifiedParameterSegment() throws Exception { Router router = new Router(); router.append("/{q:a}"); // assertEquals(0, router.getSegmentNames().size()); assertEquals(1, router.getPatternSize()); PatternRoute patternRoute = router.getPattern(0); assertEquals("(?:([^/]+))(?:(?<=^)|(?=/)|$)", patternRoute.pattern.re.getPattern()); assertEquals(1, patternRoute.params.length); assertEquals(Names.Q_A, patternRoute.params[0].name); assertEquals("^(.+)$", patternRoute.params[0].matchingRegex[0].re.getPattern()); assertFalse(patternRoute.params[0].preservePath); assertEquals(2, patternRoute.chunks.length); assertEquals("", patternRoute.chunks[0]); assertEquals("", patternRoute.chunks[1]); }
@Test public void testSamePrefix() throws Exception { Router router = new Router(); router.append("/public/foo"); router.append("/public/bar"); assertEquals(2, router.getSegmentSize("public")); Route publicRoute1 = router.getSegment("public", 0); assertEquals(1, publicRoute1.getSegmentSize("foo")); Route publicRoute2 = router.getSegment("public", 1); assertEquals(1, publicRoute2.getSegmentSize("bar")); }
@Test public void testPatternSegment() throws Exception { Router router = new Router(); router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching(".*"))); // assertEquals(0, router.getSegmentNames().size()); assertEquals(1, router.getPatternSize()); PatternRoute patternRoute = router.getPattern(0); assertEquals("(?:([^/]*))(?:(?<=^)|(?=/)|$)", patternRoute.pattern.re.getPattern()); assertEquals(1, patternRoute.params.length); assertEquals(Names.A, patternRoute.params[0].name); assertEquals("^(.*)$", patternRoute.params[0].matchingRegex[0].re.getPattern()); assertFalse(patternRoute.params[0].preservePath); assertEquals(2, patternRoute.chunks.length); assertEquals("", patternRoute.chunks[0]); assertEquals("", patternRoute.chunks[1]); }
@Test public void testBug() throws Exception { Router router = new Router(); Route a = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching("[^_]+"))); // This is a *known* bug assertNull(router.route("/_")); // This is expected assertEquals("/_", a.matches(Collections.singletonMap(Names.P, "/")).render()); // This is expected assertNull(router.route("/%5F")); assertNull(a.matches(Collections.singletonMap(Names.P, "_"))); }
@Test public void testParameterSegment() throws Exception { Router router = new Router(); router.append("/{a}"); // assertEquals(0, router.getSegmentNames().size()); assertEquals(1, router.getPatternSize()); PatternRoute patternRoute = router.getPattern(0); assertEquals("(?:([^/]+))(?:(?<=^)|(?=/)|$)", patternRoute.pattern.re.getPattern()); assertEquals(1, patternRoute.params.length); assertEquals(Names.A, patternRoute.params[0].name); assertEquals("^(.+)$", patternRoute.params[0].matchingRegex[0].re.getPattern()); assertFalse(patternRoute.params[0].preservePath); assertEquals(2, patternRoute.chunks.length); assertEquals("", patternRoute.chunks[0]); assertEquals("", patternRoute.chunks[1]); }
@Test public void testBug() throws Exception { Router router = new Router(); Route a = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching("[^_]+"))); // This is a *known* bug assertNull(router.route("/_")); // This is expected assertEquals("/_", a.matches(Collections.singletonMap(Names.P, "/")).render()); // This is expected assertNull(router.route("/%5F")); assertNull(a.matches(Collections.singletonMap(Names.P, "_"))); }