langtools/src/share/classes/com/sun/tools/javadoc/Start.java
changeset 5850 6f095ff5b469
parent 5520 86e4b9a9da40
child 7681 1f0819a3341f
equal deleted inserted replaced
5849:04edd7910585 5850:6f095ff5b469
    49  * @since 1.2
    49  * @since 1.2
    50  * @author Robert Field
    50  * @author Robert Field
    51  * @author Neal Gafter (rewrite)
    51  * @author Neal Gafter (rewrite)
    52  */
    52  */
    53 class Start {
    53 class Start {
    54     /** Context for this invocation. */
       
    55     private final Context context;
       
    56 
    54 
    57     private final String defaultDocletClassName;
    55     private final String defaultDocletClassName;
    58     private final ClassLoader docletParentClassLoader;
    56     private final ClassLoader docletParentClassLoader;
    59 
    57 
    60     private static final String javadocName = "javadoc";
    58     private static final String javadocName = "javadoc";
    96           PrintWriter errWriter,
    94           PrintWriter errWriter,
    97           PrintWriter warnWriter,
    95           PrintWriter warnWriter,
    98           PrintWriter noticeWriter,
    96           PrintWriter noticeWriter,
    99           String defaultDocletClassName,
    97           String defaultDocletClassName,
   100           ClassLoader docletParentClassLoader) {
    98           ClassLoader docletParentClassLoader) {
   101         context = new Context();
    99         Context tempContext = new Context(); // interim context until option decoding completed
   102         messager = new Messager(context, programName, errWriter, warnWriter, noticeWriter);
   100         messager = new Messager(tempContext, programName, errWriter, warnWriter, noticeWriter);
   103         this.defaultDocletClassName = defaultDocletClassName;
   101         this.defaultDocletClassName = defaultDocletClassName;
   104         this.docletParentClassLoader = docletParentClassLoader;
   102         this.docletParentClassLoader = docletParentClassLoader;
   105     }
   103     }
   106 
   104 
   107     Start(String programName, String defaultDocletClassName) {
   105     Start(String programName, String defaultDocletClassName) {
   108         this(programName, defaultDocletClassName, null);
   106         this(programName, defaultDocletClassName, null);
   109     }
   107     }
   110 
   108 
   111     Start(String programName, String defaultDocletClassName,
   109     Start(String programName, String defaultDocletClassName,
   112           ClassLoader docletParentClassLoader) {
   110           ClassLoader docletParentClassLoader) {
   113         context = new Context();
   111         Context tempContext = new Context(); // interim context until option decoding completed
   114         messager = new Messager(context, programName);
   112         messager = new Messager(tempContext, programName);
   115         this.defaultDocletClassName = defaultDocletClassName;
   113         this.defaultDocletClassName = defaultDocletClassName;
   116         this.docletParentClassLoader = docletParentClassLoader;
   114         this.docletParentClassLoader = docletParentClassLoader;
   117     }
   115     }
   118 
   116 
   119     Start(String programName, ClassLoader docletParentClassLoader) {
   117     Start(String programName, ClassLoader docletParentClassLoader) {
   140 
   138 
   141         // let doclet print usage information (does nothing on error)
   139         // let doclet print usage information (does nothing on error)
   142         if (docletInvoker != null) {
   140         if (docletInvoker != null) {
   143             docletInvoker.optionLength("-help");
   141             docletInvoker.optionLength("-help");
   144         }
   142         }
       
   143     }
       
   144 
       
   145     /**
       
   146      * Usage
       
   147      */
       
   148     private void Xusage() {
       
   149         messager.notice("main.Xusage");
   145     }
   150     }
   146 
   151 
   147     /**
   152     /**
   148      * Exit
   153      * Exit
   149      */
   154      */
   211         }
   216         }
   212 
   217 
   213         setDocletInvoker(argv);
   218         setDocletInvoker(argv);
   214         ListBuffer<String> subPackages = new ListBuffer<String>();
   219         ListBuffer<String> subPackages = new ListBuffer<String>();
   215         ListBuffer<String> excludedPackages = new ListBuffer<String>();
   220         ListBuffer<String> excludedPackages = new ListBuffer<String>();
       
   221 
       
   222         Context context = new Context();
       
   223         // Setup a new Messager, using the same initial parameters as the
       
   224         // existing Messager, except that this one will be able to use any
       
   225         // options that may be set up below.
       
   226         Messager.preRegister(context,
       
   227                 messager.programName,
       
   228                 messager.errWriter, messager.warnWriter, messager.noticeWriter);
       
   229 
   216         Options compOpts = Options.instance(context);
   230         Options compOpts = Options.instance(context);
   217         boolean docClasses = false;
   231         boolean docClasses = false;
   218 
   232 
   219         // Parse arguments
   233         // Parse arguments
   220         for (int i = 0 ; i < argv.length ; i++) {
   234         for (int i = 0 ; i < argv.length ; i++) {
   308             } else if (arg.equals("-locale")) {
   322             } else if (arg.equals("-locale")) {
   309                 if (i != 0)
   323                 if (i != 0)
   310                     usageError("main.locale_first");
   324                     usageError("main.locale_first");
   311                 oneArg(argv, i++);
   325                 oneArg(argv, i++);
   312                 docLocale = argv[i];
   326                 docLocale = argv[i];
       
   327             } else if (arg.equals("-Xmaxerrs") || arg.equals("-Xmaxwarns")) {
       
   328                 oneArg(argv, i++);
       
   329                 if (compOpts.get(arg) != null) {
       
   330                     usageError("main.option.already.seen", arg);
       
   331                 }
       
   332                 compOpts.put(arg, argv[i]);
       
   333             } else if (arg.equals("-X")) {
       
   334                 Xusage();
       
   335                 exit();
   313             } else if (arg.startsWith("-XD")) {
   336             } else if (arg.startsWith("-XD")) {
   314                 String s = arg.substring("-XD".length());
   337                 String s = arg.substring("-XD".length());
   315                 int eq = s.indexOf('=');
   338                 int eq = s.indexOf('=');
   316                 String key = (eq < 0) ? s : s.substring(0, eq);
   339                 String key = (eq < 0) ? s : s.substring(0, eq);
   317                 String value = (eq < 0) ? s : s.substring(eq+1);
   340                 String value = (eq < 0) ? s : s.substring(eq+1);