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) { |
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); |