Ejemplo n.º 1
0
  /**
   * Process command line arguments: store all command line options in `options' table and return
   * all source filenames.
   *
   * @param args The array of command line arguments.
   */
  protected java.util.List<String> processArgs(String[] flags) {
    int ac = 0;
    while (ac < flags.length) {
      String flag = flags[ac];
      ac++;

      int j;
      for (j = 0; j < recognizedOptions.length; j++) if (recognizedOptions[j].matches(flag)) break;

      if (j == recognizedOptions.length) {
        error("err.invalid.flag", flag);
        return null;
      }

      Option option = recognizedOptions[j];
      if (option.hasArg()) {
        if (ac == flags.length) {
          error("err.req.arg", flag);
          return null;
        }
        String operand = flags[ac];
        ac++;
        if (option.process(flag, operand)) return null;
      } else {
        if (option.process(flag)) return null;
      }
    }

    String sourceString = options.get("-source");
    Source source =
        (sourceString != null)
            ? Source.lookup(sourceString)
            : Source.JDK1_5; // JDK 5 is the latest supported source version
    String targetString = options.get("-target");
    Target target =
        (targetString != null)
            ? Target.lookup(targetString)
            : Target.JDK1_5; // JDK 5 is the latest supported source version
    // We don't check source/target consistency for CLDC, as J2ME
    // profiles are not aligned with J2SE targets; moreover, a
    // single CLDC target may have many profiles.  In addition,
    // this is needed for the continued functioning of the JSR14
    // prototype.
    if (Character.isDigit(target.name.charAt(0)) && target.compareTo(source.requiredTarget()) < 0) {
      if (targetString != null) {
        if (sourceString == null) {
          warning(
              "warn.target.default.source.conflict", targetString, source.requiredTarget().name);
        } else {
          warning("warn.source.target.conflict", sourceString, source.requiredTarget().name);
        }
        return null;
      } else {
        options.put("-target", source.requiredTarget().name);
      }
    }
    return sourceFileNames;
  }