public static WebPage lookup(RequestContext ctx) throws Exception { Class<? extends WebPage> pageClass = null; // String cmd1 = ctx.getCommand(1); // String cmd2 = ctx.getCommand(2); // Class<? extends WebPage> pageClass = null; // if (cmd2!=null) // { // pageClass = pages.get(cmd1 + "/" + cmd2); // } // if (pageClass==null) // { // pageClass = pages.get(cmd1); // } // For guided setup pages, dispatch based on what comes after the "setup/" prefix String setupPrefix = UrlGenerator.COMMAND_SETUP + "/"; String cmd = ctx.getCommand(); if (cmd.startsWith(setupPrefix)) { cmd = cmd.substring(setupPrefix.length()); int slash = cmd.length(); do { pageClass = pages.get(cmd.substring(0, slash)); slash = cmd.lastIndexOf("/", slash - 1); } while (slash > 0 && pageClass == null); } // Look up by exact command cmd = ctx.getCommand(); if (pageClass == null) { int slash = cmd.length(); do { pageClass = pages.get(cmd.substring(0, slash)); slash = cmd.lastIndexOf("/", slash - 1); } while (slash > 0 && pageClass == null); } // Lookup by suffix if (pageClass == null) { // String cmd = ctx.getCommand(); int dot = cmd.lastIndexOf("."); if (dot >= 0) { pageClass = pages.get("*" + cmd.substring(dot)); } } if (pageClass == null) { return null; } // Instantiate WebPage pg = pageClass.newInstance(); if (pg == null) { return null; } // Create envelope if needed if (pg.isEnvelope() && envelope != null) { WebPage env = (WebPage) envelope.newInstance(); if (env != null) { env.setChild(pg); pg = env; } } return pg; }