aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kriegisch <Alexander@Kriegisch.name>2021-05-28 15:11:32 +0700
committerAlexander Kriegisch <Alexander@Kriegisch.name>2021-05-28 16:27:34 +0700
commit94499e06295b4d3754c7228ad4e5710d2ac5ba42 (patch)
tree21c9e1ba1e9955713cfeb11ceca3b4a0bc5ed2c8
parent520ed7b623263927b30fe1898b36f411490ba34d (diff)
downloadaspectj-94499e06295b4d3754c7228ad4e5710d2ac5ba42.tar.gz
aspectj-94499e06295b4d3754c7228ad4e5710d2ac5ba42.zip
Revert "Always run javadoc using the ToolProvider API"
This reverts commit f70aeb5e, except for some commented-out parts of code and an unused method. I also simplified the code, e.g. with regard to exception handling, and did some more cosmetic stuff, but basically it is a revert. In order to make it compile on more recent JDKs which doe not have class com.sun.tools.javadoc.Main, I used Class.forName in the method being called on JDK 8 only. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
-rw-r--r--ajdoc/src/main/java/org/aspectj/tools/ajdoc/JavadocRunner.java50
-rw-r--r--ajdoc/src/main/java/org/aspectj/tools/ajdoc/Main.java16
2 files changed, 48 insertions, 18 deletions
diff --git a/ajdoc/src/main/java/org/aspectj/tools/ajdoc/JavadocRunner.java b/ajdoc/src/main/java/org/aspectj/tools/ajdoc/JavadocRunner.java
index e1bbd9ad4..21c56d160 100644
--- a/ajdoc/src/main/java/org/aspectj/tools/ajdoc/JavadocRunner.java
+++ b/ajdoc/src/main/java/org/aspectj/tools/ajdoc/JavadocRunner.java
@@ -1,39 +1,55 @@
/* *******************************************************************
- * Copyright (c) 1999-2001 Xerox Corporation,
+ * Copyright (c) 1999-2001 Xerox Corporation,
* 2002 Palo Alto Research Center, Incorporated (PARC).
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Xerox/PARC initial implementation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Xerox/PARC initial implementation
* Mik Kersten port to AspectJ 1.1+ code base
* ******************************************************************/
package org.aspectj.tools.ajdoc;
-import java.util.List;
-import java.util.Vector;
-
import javax.tools.DocumentationTool;
import javax.tools.DocumentationTool.DocumentationTask;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
/**
* @author Mik Kersten
*/
class JavadocRunner {
+ static void callJavadoc(String[] javadocArgs) {
+ try {
+ Class.forName("com.sun.tools.javadoc.Main")
+ .getMethod("execute", String[].class)
+ .invoke(null, new Object[] { javadocArgs });
+ }
+ catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
+ throw new RuntimeException("Failed to invoke javadoc", e);
+ }
+ }
+
public static void callJavadocViaToolProvider(Iterable<String> options, List<String> files) {
- DocumentationTool doctool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = doctool.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> jfos = fm.getJavaFileObjects(files.toArray(new String[0]));
- DocumentationTask task = doctool.getTask(null/*standard System.err*/, null/*standard file manager*/,
- null/*default diagnostic listener*/, null/*standard doclet*/, options, jfos);
+ DocumentationTool docTool = ToolProvider.getSystemDocumentationTool();
+ StandardJavaFileManager fileManager = docTool.getStandardFileManager(null, null, null);
+ Iterable<? extends JavaFileObject> fileObjects = fileManager.getJavaFileObjects(files.toArray(new String[0]));
+ DocumentationTask task = docTool.getTask(
+ null, // default output writer (System.err)
+ null, // default file manager
+ null, // default diagnostic listener
+ null, // default doclet class
+ options,
+ fileObjects
+ );
task.call();
}
}
diff --git a/ajdoc/src/main/java/org/aspectj/tools/ajdoc/Main.java b/ajdoc/src/main/java/org/aspectj/tools/ajdoc/Main.java
index 53edcb42d..9f728a946 100644
--- a/ajdoc/src/main/java/org/aspectj/tools/ajdoc/Main.java
+++ b/ajdoc/src/main/java/org/aspectj/tools/ajdoc/Main.java
@@ -22,12 +22,20 @@ import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FilenameFilter;
import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Hashtable;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.StringTokenizer;
+import java.util.Vector;
import org.aspectj.asm.AsmManager;
import org.aspectj.bridge.IMessage;
import org.aspectj.bridge.Version;
import org.aspectj.util.FileUtil;
+import org.aspectj.util.LangUtil;
/**
* This is an old implementation of ajdoc that does not use an OO style. However, it does the job, and should serve to evolve a
@@ -256,8 +264,10 @@ public class Main implements Config {
for (int k = 0; k < fileList.size(); k++) {
javadocargs[numExtraArgs + options.size() + packageList.size() + k] = fileList.elementAt(k);
}
+ if (LangUtil.is9VMOrGreater()) {
options = new Vector<>();
Collections.addAll(options, javadocargs);
+ }
} else {
javadocargs = new String[options.size() + signatureFiles.length];
for (int k = 0; k < options.size(); k++) {
@@ -270,7 +280,11 @@ public class Main implements Config {
files.add(StructureUtil.translateAjPathName(signatureFile.getCanonicalPath()));
}
}
+ if (LangUtil.is9VMOrGreater()) {
JavadocRunner.callJavadocViaToolProvider(options, files);
+ } else {
+ JavadocRunner.callJavadoc(javadocargs);
+ }
}
/**