package org.infinispan.tools.doclet;
import java.lang.reflect.Method;
import org.infinispan.tools.doclet.jmx.JmxDoclet;
import com.sun.javadoc.DocErrorReporter;
import com.sun.javadoc.LanguageVersion;
import com.sun.javadoc.RootDoc;
import com.sun.tools.doclets.standard.Standard;
import com.sun.tools.javadoc.Main;
public class DocletMultiplexer {
private static final Object doclets[] = {
new PublicAPIDoclet(),
new JmxDoclet()
};
public static void main(String[] args) {
String name = DocletMultiplexer.class.getName();
Main.execute(name, name, args);
}
public static boolean validOptions(String[][] options, DocErrorReporter reporter) throws java.io.IOException {
boolean validOptions = true;
for(Object doclet : doclets) {
try {
Method method = doclet.getClass().getMethod("validOptions", String[][].class, DocErrorReporter.class);
validOptions = validOptions && ((Boolean)method.invoke(doclet, options, reporter));
} catch (Exception e) {
reporter.printWarning(e.getMessage());
}
}
return validOptions;
}
public static LanguageVersion languageVersion() {
return LanguageVersion.JAVA_1_5;
}
public static int optionLength(String option) {
for(Object doclet : doclets) {
try {
Method method = doclet.getClass().getMethod("optionLength", String.class);
int l = (Integer)method.invoke(doclet, option);
if (l > 0)
return l;
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
}
return Standard.optionLength(option);
}
public static boolean start(RootDoc root) throws java.io.IOException {
boolean start = true;
for(Object doclet : doclets) {
try {
Method method = doclet.getClass().getMethod("start", RootDoc.class);
start = start && ((Boolean)method.invoke(doclet, root));
} catch (Exception e) {
root.printWarning(e.getMessage());
}
}
return start;
}
}