/*
* Copyright 2008 CoreMedia AG
*
* 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.
*/
// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packfields(3) packimports(7) deadcode fieldsfirst splitstr(64) nonlb lnc radix(10) lradix(10)
// Source File Name: Start.java
package net.jangaroo.joodoc;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.ListBuffer;
import com.sun.tools.javac.util.Options;
import com.sun.tools.javadoc.*;
import com.sun.tools.javac.main.CommandLine;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
// Referenced classes of package com.sun.tools.javadoc:
// DocletInvoker, JavadocTool, Messager, ModifierFilter
class Start {
com.sun.tools.javac.util.Context context;
private final String defaultDocletClassName; // "com.sun.tools.doclets.standard.Standard";
private ListBuffer options;
private ModifierFilter showAccess;
private long defaultFilter;
private net.jangaroo.joodoc.Messager messager;
String docLocale, encoding;
boolean breakiterator;
private DocletInvoker docletInvoker;
private boolean rejectWarnings;
Start() {
this("javadoc");
}
int begin(String as[]) {
boolean flag = false;
flag = !parseAndExecute(as);
messager.exitNotice();
messager.flush();
flag |= messager.nerrors() > 0;
flag |= rejectWarnings && messager.nwarnings() > 0;
return flag ? 1 : 0;
}
private void exit() {
messager.exit();
}
private void usage() {
messager.notice("main.usage");
if (docletInvoker != null)
docletInvoker.optionLength("-help");
}
private void setFilter(long l) {
if (showAccess != null) {
messager.error(null, "main.incompatible.access.flags");
usage();
exit();
}
showAccess = new ModifierFilter(l);
}
Start(String s) {
this(s, "com.sun.tools.doclets.standard.Standard");
}
private void setOption(String s) {
String as[] = {
s
};
options.append(as);
}
private void usageError(String s) {
messager.error(null, s);
usage();
exit();
}
private void setDocletInvoker(String as[]) {
String s = null;
String s1 = null;
for (int i = 0; i < as.length; i++) {
String s2 = as[i];
if (s2.equals("-doclet")) {
oneArg(as, i++);
if (s != null)
usageError("main.more_than_one_doclet_specified_0_and_1", s, as[i]);
s = as[i];
continue;
}
if (!s2.equals("-docletpath"))
continue;
oneArg(as, i++);
if (s1 == null)
s1 = as[i];
else
s1 = s1 + File.pathSeparator + as[i];
}
if (s == null)
s = defaultDocletClassName;
docletInvoker = new DocletInvoker(messager, s, s1);
}
private boolean parseAndExecute(String as[]) {
long l = System.currentTimeMillis();
ListBuffer listbuffer = new ListBuffer();
try {
as = CommandLine.parse(as);
} catch (FileNotFoundException filenotfoundexception) {
messager.error(null, "main.cant.read", filenotfoundexception.getMessage());
exit();
} catch (IOException ioexception) {
ioexception.printStackTrace();
exit();
}
setDocletInvoker(as);
ListBuffer listbuffer1 = new ListBuffer();
ListBuffer listbuffer2 = new ListBuffer();
Options options1 = Options.instance(context);
boolean flag = false;
for (int i = 0; i < as.length; i++) {
String s = as[i];
if (s.equals("-subpackages")) {
oneArg(as, i++);
addToList(listbuffer1, as[i]);
continue;
}
if (s.equals("-exclude")) {
oneArg(as, i++);
addToList(listbuffer2, as[i]);
continue;
}
if (s.equals("-verbose")) {
setOption(s);
options1.put("-verbose", "");
continue;
}
if (s.equals("-encoding")) {
oneArg(as, i++);
encoding = as[i];
options1.put("-encoding", as[i]);
continue;
}
if (s.equals("-breakiterator")) {
breakiterator = true;
setOption("-breakiterator");
continue;
}
if (s.equals("-help")) {
usage();
exit();
continue;
}
if (s.equals("-Xclasses")) {
setOption(s);
flag = true;
continue;
}
if (s.equals("-Xwerror")) {
setOption(s);
rejectWarnings = true;
continue;
}
if (s.equals("-private")) {
setOption(s);
setFilter(-9223372036854775801L);
continue;
}
if (s.equals("-package")) {
setOption(s);
setFilter(-9223372036854775803L);
continue;
}
if (s.equals("-protected")) {
setOption(s);
setFilter(5L);
continue;
}
if (s.equals("-public")) {
setOption(s);
setFilter(1L);
continue;
}
if (s.equals("-source")) {
oneArg(as, i++);
if (options1.get("-source") != null)
usageError("main.option.already.seen", s);
options1.put("-source", as[i]);
continue;
}
if (s.equals("-gj")) {
options1.put("-gj", "-gj");
continue;
}
if (s.equals("-prompt")) {
options1.put("-prompt", "-prompt");
messager.promptOnError = true;
continue;
}
if (s.equals("-sourcepath")) {
oneArg(as, i++);
if (options1.get("-sourcepath") != null)
usageError("main.option.already.seen", s);
options1.put("-sourcepath", as[i]);
continue;
}
if (s.equals("-classpath")) {
oneArg(as, i++);
if (options1.get("-classpath") != null)
usageError("main.option.already.seen", s);
options1.put("-classpath", as[i]);
continue;
}
if (s.equals("-sysclasspath")) {
oneArg(as, i++);
if (options1.get("-bootclasspath") != null)
usageError("main.option.already.seen", s);
options1.put("-bootclasspath", as[i]);
continue;
}
if (s.equals("-bootclasspath")) {
oneArg(as, i++);
if (options1.get("-bootclasspath") != null)
usageError("main.option.already.seen", s);
options1.put("-bootclasspath", as[i]);
continue;
}
if (s.equals("-extdirs")) {
oneArg(as, i++);
if (options1.get("-extdirs") != null)
usageError("main.option.already.seen", s);
options1.put("-extdirs", as[i]);
continue;
}
if (s.equals("-overview")) {
oneArg(as, i++);
continue;
}
if (s.equals("-doclet")) {
i++;
continue;
}
if (s.equals("-docletpath")) {
i++;
continue;
}
if (s.equals("-locale")) {
if (i != 0)
usageError("main.locale_first");
oneArg(as, i++);
docLocale = as[i];
continue;
}
if (s.startsWith("-XD")) {
String s1 = s.substring("-XD".length());
int k = s1.indexOf('=');
String s2 = k >= 0 ? s1.substring(0, k) : s1;
String s3 = k >= 0 ? s1.substring(k + 1) : s1;
options1.put(s2, s3);
continue;
}
if (s.startsWith("-")) {
int j = docletInvoker.optionLength(s);
if (j < 0) {
exit();
continue;
}
if (j == 0) {
usageError("main.invalid_flag", s);
continue;
}
if (i + j > as.length)
usageError("main.requires_argument", s);
ListBuffer listbuffer3 = new ListBuffer();
for (int i1 = 0; i1 < j - 1; i1++)
listbuffer3.append(as[++i]);
setOption(s, listbuffer3.toList());
} else {
listbuffer.append(s);
}
}
if (listbuffer.isEmpty() && listbuffer1.isEmpty())
usageError("main.No_packages_or_classes_specified");
if (!docletInvoker.validOptions(options.toList()))
exit();
JoodocTool joodocTool = new JoodocTool(messager);
if (joodocTool == null)
return false;
if (showAccess == null)
setFilter(defaultFilter);
net.jangaroo.joodoc.RootDocImpl rootdocimpl = joodocTool.getRootDocImpl(docLocale, encoding, showAccess, listbuffer.toList(), options.toList(), breakiterator, listbuffer1.toList(), listbuffer2.toList(), flag);
boolean flag1 = rootdocimpl != null;
if (flag1)
flag1 = docletInvoker.start(rootdocimpl);
if (options1.get("-verbose") != null) {
l = System.currentTimeMillis() - l;
messager.notice("main.done_in", Long.toString(l));
}
return flag1;
}
private void oneArg(String as[], int i) {
if (i + 1 < as.length)
setOption(as[i], as[i + 1]);
else
usageError("main.requires_argument", as[i]);
}
private void setOption(String s, List list) {
String as[] = new String[list.length() + 1];
int i = 0;
as[i++] = s;
for (List list1 = list; list1.nonEmpty(); list1 = list1.tail)
as[i++] = (String) list1.head;
options = options.append(as);
}
private void addToList(ListBuffer listbuffer, String s) {
String s1;
for (StringTokenizer stringtokenizer = new StringTokenizer(s, ":"); stringtokenizer.hasMoreTokens(); listbuffer.append(s1))
s1 = stringtokenizer.nextToken();
}
Start(String s, String s1) {
options = new ListBuffer();
showAccess = null;
defaultFilter = 5L;
docLocale = "";
breakiterator = false;
encoding = null;
rejectWarnings = false;
context = new Context();
messager = new net.jangaroo.joodoc.Messager(context, s);
defaultDocletClassName = s1;
}
private void setOption(String s, String s1) {
String as[] = {
s, s1
};
options.append(as);
}
private void usageError(String s, String s1) {
messager.error(null, s, s1);
usage();
exit();
}
private void usageError(String s, String s1, String s2) {
messager.error(null, s, s1, s2);
usage();
exit();
}
Start(String s, PrintWriter printwriter, PrintWriter printwriter1, PrintWriter printwriter2, String s1) {
options = new ListBuffer();
showAccess = null;
defaultFilter = 5L;
docLocale = "";
breakiterator = false;
encoding = null;
rejectWarnings = false;
context = new Context();
messager = new net.jangaroo.joodoc.Messager(context, s, printwriter, printwriter1, printwriter2);
defaultDocletClassName = s1;
}
}