/* * Copyright 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.doctool; import com.google.doctool.custom.EztDoclet; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Uses the Javadoc tool to produce wiki output documenting the JRE emulation * classes in GWT. */ public class JreDocTool { public static void main(String[] args) { JreDocToolFactory factory = new JreDocToolFactory(); String arg; for (int i = 0; i < args.length; i++) { if (tryParseFlag(args, i, "-help")) { printHelp(); return; } else if (null != (arg = tryParseArg(args, i, "-classpath"))) { i++; factory.setClasspath(arg); } else if (null != (arg = tryParseArg(args, i, "-out"))) { i++; factory.setOutputFile(arg); } else if (null != (arg = tryParseArg(args, i, "-packages"))) { i++; factory.setPackages(arg); } else if (null != (arg = tryParseArg(args, i, "-sourcepath"))) { i++; factory.setSourcepath(arg); } } JreDocTool docTool = factory.create(System.err); if (docTool != null) { docTool.process(); } } /** * Prints help for using JreDocTool. */ private static void printHelp() { String s = ""; s += "JreDocTool\n"; s += " Creates EZT format member listing from Java source"; s += " for emulated JRE classes.\n"; s += "\n"; s += "Required arguments:\n"; s += " -classpath\n"; s += " The path to find imported classes for this doc set.\n"; s += " -sourcepath\n"; s += " The path to find Java source for this doc set.\n"; s += " E.g. /gwt/src/trunk/user/super/com/google/gwt/emul\n"; s += " -out\n"; s += " The path and filename of the output file\n"; s += " -packages\n"; s += " A semicolon-separated list of fully-qualified package names.\n"; s += " E.g. java.lang;java.lang.annotation;java.util;java.io;java.sql\n"; s += "\n"; System.out.println(s); } /** * Parse a flag with a argument. */ private static String tryParseArg(String[] args, int i, String name) { if (i < args.length) { if (args[i].equals(name)) { if (i + 1 < args.length) { String arg = args[i + 1]; if (arg.startsWith("-")) { System.out.println("Warning: arg to " + name + " looks more like a flag: " + arg); } return arg; } else { throw new IllegalArgumentException("Expecting an argument after " + name); } } } return null; } /** * Parse just a flag with no subsequent argument. */ private static boolean tryParseFlag(String[] args, int i, String name) { if (i < args.length) { if (args[i].equals(name)) { return true; } } return false; } private String classpath; private String outputFile; private String packages; private String sourcepath; JreDocTool(String classpath, String outputFile, String packages, String sourcepath) { this.classpath = classpath; this.outputFile = outputFile; this.packages = packages; this.sourcepath = sourcepath; } private void process() { List<String> args = new ArrayList<String>(); args.add("-public"); args.add("-quiet"); args.add("-source"); args.add("1.5"); args.add("-doclet"); args.add(EztDoclet.class.getName()); args.add("-classpath"); args.add(this.classpath); args.add("-sourcepath"); args.add(this.sourcepath); args.add(EztDoclet.OPT_EZTFILE); args.add(this.outputFile); args.addAll(Arrays.asList(this.packages.split(";"))); com.sun.tools.javadoc.Main.execute(args.toArray(new String[0])); } }