Пример #1
0
  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;
  }