| /* |
| * 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])); |
| } |
| } |