@Test void testRootPackagesPackagePath() { RootPackages rootPackages = new RootPackages(); rootPackages.addRootPackage("xx"); rootPackages.addRootPackage("xx.admin.actions", "admin"); rootPackages.addRootPackage("xx.cms.actions", "cms"); for (int i = 0; i < 2; i++) { // test cache assertEquals("", rootPackages.findPackagePathForActionPackage("xx")); assertEquals("/admin", rootPackages.findPackagePathForActionPackage("xx.admin.actions")); assertEquals("/admin/hey", rootPackages.findPackagePathForActionPackage("xx.admin.actions.hey")); assertEquals("/cms", rootPackages.findPackagePathForActionPackage("xx.cms.actions")); assertEquals("/cms/hay", rootPackages.findPackagePathForActionPackage("xx.cms.actions.hay")); } }
/** * Sets root package to package of given class. */ public void addRootPackageOf(final Class actionClass) { addRootPackageOf(actionClass, StringPool.EMPTY); }
@Test void testRootPackagesFindForPath() { RootPackages rootPackages = new RootPackages(); rootPackages.addRootPackage("xx"); rootPackages.addRootPackage("xx.admin.actions", "admin"); rootPackages.addRootPackage("xx.cms.actions", "cms"); assertEquals("xx", rootPackages.findRootPackageForActionPath("/foo")); assertEquals("xx.admin.actions", rootPackages.findRootPackageForActionPath("/admin")); assertEquals("xx.admin.actions", rootPackages.findRootPackageForActionPath("/admin/hey")); assertEquals("xx.cms.actions", rootPackages.findRootPackageForActionPath("/cms")); assertEquals("xx.cms.actions", rootPackages.findRootPackageForActionPath("/cms/hay")); }
@Test void testDuplicateRootPackages() { RootPackages rootPackages = new RootPackages(); rootPackages.addRootPackage("xx.zz", "foo"); try { rootPackages.addRootPackage("xx.zz", "bar"); fail("error"); } catch (MadvocException ignore) {} }
rootPackages.addRootPackage(actionPackage.getName(), packageActionPathFromAnnotation); break; String packagePath = rootPackages.findPackagePathForActionPackage(actionPackageName);
/** * Adds root package with no additional mapping. */ public void addRootPackage(final String rootPackage) { addRootPackage(rootPackage, StringPool.EMPTY); }
/** * Sets root package to package of given class. */ public void addRootPackageOf(final Class actionClass, final String mapping) { addRootPackage(actionClass.getPackage().getName(), mapping); }
@Test void testZqq() { WebApp webapp = new WebApp(); webapp.start(); ActionsManager actionsManager = webapp.madvocContainer().lookupComponent(ActionsManager.class); RootPackages rootPackages = webapp.madvocContainer().lookupComponent(RootPackages.class); rootPackages.addRootPackageOf(this.getClass()); actionsManager.registerAction(ReAction.class, "zqq1", null); actionsManager.registerAction(ReAction.class, "zqq2", null); ActionRuntime cfg = actionsManager.lookup("GET", MadvocUtil.splitPathToChunks("/config/dba.delete_multi.do")); assertNotNull(cfg); assertEquals("/{entityName}/dba.delete_multi.do", cfg.getActionPath()); }
@Test void testEndSlashClassName() { WebApp webapp = new WebApp(); webapp.start(); ActionMethodParser actionMethodParser = webapp.madvocContainer().lookupComponent(ActionMethodParser.class); RootPackages rootPackages = webapp.madvocContainer().lookupComponent(RootPackages.class); rootPackages.addRootPackageOf(this.getClass()); ActionRuntime cfg = parse(actionMethodParser, "fixtures.tst2.ReAction#hello"); assertNotNull(cfg); assertEquals(ReAction.class, cfg.getActionClass()); assertEquals("/re/hello", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst2.ReAction#macro"); assertNotNull(cfg); assertEquals(ReAction.class, cfg.getActionClass()); assertEquals("/re/user/{id}/macro", cfg.getActionPath()); }
@Test void testClassesWithoutPackage() { WebApp webapp = new WebApp(); webapp.start(); ActionMethodParser actionMethodParser = webapp.madvocContainer().lookupComponent(ActionMethodParser.class); RootPackages rootPackages = webapp.madvocContainer().lookupComponent(RootPackages.class); rootPackages.addRootPackageOf(this.getClass()); ActionRuntime cfg = parse(actionMethodParser, "fixtures.tst.Boo3Action#foo"); assertNotNull(cfg); assertEquals(Boo3Action.class, cfg.getActionClass()); assertEquals("/bbb.foo", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst.Boo3Action#foo1"); assertEquals("/bbb.xxx", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst.Boo3Action#foo2"); assertEquals("/bbb.foo2.xxx", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst.Boo3Action#foo3"); assertEquals("/bbb", cfg.getActionPath()); }
@Test void testPackage() { WebApp webapp = new WebApp(); webapp.start(); ActionMethodParser actionMethodParser = webapp.madvocContainer().lookupComponent(ActionMethodParser.class); RootPackages rootPackages = webapp.madvocContainer().lookupComponent(RootPackages.class); rootPackages.addRootPackageOf(this.getClass()); ActionRuntime cfg = parse(actionMethodParser, "fixtures.tst2.Boo4Action#foo"); assertNotNull(cfg); assertEquals(Boo4Action.class, cfg.getActionClass()); assertEquals("/ttt/www.foo", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst2.Boo4Action#foo1"); assertEquals("/ttt/www.xxx", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst2.Boo4Action#foo2"); assertEquals("/ttt/www.foo2.xxx", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst2.Boo4Action#foo3"); assertEquals("/ttt/www", cfg.getActionPath()); }
@Test void testNoPackage() { WebApp webapp = new WebApp(); webapp.start(); ActionMethodParser actionMethodParser = webapp.madvocContainer().lookupComponent(ActionMethodParser.class); RootPackages rootPackages = webapp.madvocContainer().lookupComponent(RootPackages.class); rootPackages.addRootPackageOf(this.getClass()); ActionRuntime cfg = parse(actionMethodParser, "fixtures.tst2.Boo5Action#foo"); assertNotNull(cfg); assertEquals(Boo5Action.class, cfg.getActionClass()); assertEquals("/www.foo", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst2.Boo5Action#foo1"); assertEquals("/www.xxx", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst2.Boo5Action#foo2"); assertEquals("/www.foo2.xxx", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst2.Boo5Action#foo3"); assertEquals("/www", cfg.getActionPath()); }
@Test void testClassesWithPackage() { WebApp webapp = new WebApp(); webapp.start(); ActionMethodParser actionMethodParser = webapp.madvocContainer().lookupComponent(ActionMethodParser.class); RootPackages rootPackages = webapp.madvocContainer().lookupComponent(RootPackages.class); rootPackages.addRootPackageOf(this.getClass()); ActionRuntime cfg = parse(actionMethodParser, "fixtures.tst.Boo1Action#foo"); assertNotNull(cfg); assertEquals(Boo1Action.class, cfg.getActionClass()); assertEquals("/fixtures/tst/boo1.foo", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst.Boo2Action#foo"); assertNotNull(cfg); assertEquals(Boo2Action.class, cfg.getActionClass()); assertEquals("/fixtures/tst/bbb.foo", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst.Boo2Action#foo1"); assertEquals("/fixtures/tst/bbb.xxx", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst.Boo2Action#foo2"); assertEquals("/fixtures/tst/bbb.foo2.xxx", cfg.getActionPath()); cfg = parse(actionMethodParser, "fixtures.tst.Boo2Action#foo3"); assertEquals("/fixtures/tst/bbb", cfg.getActionPath()); }
@Test void testMacrosDups() { WebApp webapp = new WebApp(); webapp.start(); ActionsManager actionsManager = webapp.madvocContainer().lookupComponent(ActionsManager.class); webapp.madvocContainer().lookupComponent(RootPackages.class).addRootPackageOf(this.getClass()); actionsManager.setPathMacroClass(RegExpPathMacros.class); actionsManager.registerAction(ReAction.class, "duplo2", null); actionsManager.registerAction(ReAction.class, "duplo1", null); ActionRuntime cfg = actionsManager.lookup("GET", MadvocUtil.splitPathToChunks("/re/duplo/123")); assertNotNull(cfg); assertEquals(ReAction.class, cfg.getActionClass()); assertEquals("/re/duplo/{id:^[0-9]+}", cfg.getActionPath()); RouteChunk chunk = cfg.getRouteChunk(); assertEquals(1, chunk.pathMacros().macrosCount()); assertEquals("id", chunk.pathMacros().names()[0]); cfg = actionsManager.lookup("GET", MadvocUtil.splitPathToChunks("/re/duplo/aaa")); assertNotNull(cfg); assertEquals(ReAction.class, cfg.getActionClass()); assertEquals("/re/duplo/{sid}", cfg.getActionPath()); chunk = cfg.getRouteChunk(); assertEquals(1, chunk.pathMacros().macrosCount()); assertEquals("sid", chunk.pathMacros().names()[0]); assertEquals(2, actionsManager.getActionsCount()); }
rootPackages.addRootPackageOf(this.getClass());
rootPackages.addRootPackageOf(this.getClass());
rootPackages.addRootPackageOf(this.getClass());