]> source.dussan.org Git - aspectj.git/commitdiff
Always run javadoc using the ToolProvider API 6/head
authorLars Grefer <eclipse@larsgrefer.de>
Thu, 13 Aug 2020 22:22:30 +0000 (00:22 +0200)
committerLars Grefer <eclipse@larsgrefer.de>
Thu, 13 Aug 2020 22:22:30 +0000 (00:22 +0200)
`com.sun.tools.javadoc.Main` isn't available in recent Java versions (13+)

Signed-off-by: Lars Grefer <eclipse@larsgrefer.de>
ajdoc/src/main/java/org/aspectj/tools/ajdoc/JavadocRunner.java
ajdoc/src/main/java/org/aspectj/tools/ajdoc/Main.java

index 64e53eead02ac0448968453d5bf210ca6d84764d..ed13fabe4446bd2ac47780e6a82fc6d4ae105a00 100644 (file)
@@ -30,77 +30,6 @@ import javax.tools.ToolProvider;
  */
 class JavadocRunner {
 
-       static boolean has14ToolsAvailable() {
-               try {
-                       Class jdMainClass = com.sun.tools.javadoc.Main.class;
-                       Class[] paramTypes = new Class[] { String[].class };
-                       jdMainClass.getMethod("execute", paramTypes);
-               } catch (NoClassDefFoundError e) {
-                       return false;
-               } catch (UnsupportedClassVersionError e) {
-                       return false;
-               } catch (NoSuchMethodException e) {
-                       return false;
-               }
-               return true;
-       }
-
-       static void callJavadoc(String[] javadocargs) {
-               // final SecurityManager defaultSecurityManager = System.getSecurityManager();
-               //
-               // System.setSecurityManager( new SecurityManager() {
-               // public void checkExit(int status) {
-               // if (status == 0) {
-               // throw new SecurityException();
-               // }
-               // else {
-               // System.setSecurityManager(defaultSecurityManager);
-               // //System.out.println("Error: javadoc exited unexpectedly");
-               // System.exit(0);
-               // throw new SecurityException();
-               // }
-               // }
-               // public void checkPermission( java.security.Permission permission ) {
-               // if ( defaultSecurityManager != null )
-               // defaultSecurityManager.checkPermission( permission );
-               // }
-               // public void checkPermission( java.security.Permission permission,
-               // Object context ) {
-               // if ( defaultSecurityManager != null )
-               // defaultSecurityManager.checkPermission( permission, context );
-               // }
-               // } );
-               
-               try {
-                       // for JDK 1.4 and above call the execute method...
-                       Class jdMainClass = com.sun.tools.javadoc.Main.class;
-                       Method executeMethod = null;
-                       try {
-                               Class[] paramTypes = new Class[] { String[].class };
-                               executeMethod = jdMainClass.getMethod("execute", paramTypes);
-                       } catch (NoSuchMethodException e) {
-                               com.sun.tools.javadoc.Main.main(javadocargs);
-                               // throw new UnsupportedOperationException("ajdoc requires a tools library from JDK 1.4 or later.");
-                       }
-                       try {
-                               executeMethod.invoke(null, new Object[] { javadocargs });
-                       } catch (IllegalArgumentException e1) {
-                               throw new RuntimeException("Failed to invoke javadoc");
-                       } catch (IllegalAccessException e1) {
-                               throw new RuntimeException("Failed to invoke javadoc");
-                       } catch (InvocationTargetException e1) {
-                               throw new RuntimeException("Failed to invoke javadoc");
-                       }
-                       // main method is documented as calling System.exit() - which stops us dead in our tracks
-                       // com.sun.tools.javadoc.Main.main( javadocargs );
-               } catch (SecurityException se) {
-                       // Do nothing since we expect it to be thrown
-                       // System.out.println( ">> se: " + se.getMessage() );
-               }
-               // Set the security manager back
-               // System.setSecurityManager(defaultSecurityManager);
-       }
-
        public static void callJavadocViaToolProvider(Vector<String> options, List<String> files) {
                DocumentationTool doctool = ToolProvider.getSystemDocumentationTool();
                StandardJavaFileManager fm = doctool.getStandardFileManager(null, null, null);
index 2b2a24a26a0d76ef4ef9cd626544eff2686fe76b..26857b41c00f08ed7f7396841f5f5979dcd7d2c6 100644 (file)
@@ -35,7 +35,6 @@ 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
@@ -104,11 +103,6 @@ public class Main implements Config {
 
        public static void main(String[] args) {
                clearState();
-               if (!JavadocRunner.has14ToolsAvailable()) {
-                       System.err.println("ajdoc requires a JDK 1.4 or later tools jar - exiting");
-                       aborted = true;
-                       return;
-               }
 
                // STEP 1: parse the command line and do other global setup
                sourcepath.addElement("."); // add the current directory to the classapth
@@ -267,11 +261,9 @@ 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.is19VMOrGreater()) {
-                               options = new Vector<>();
-                               for (String a: javadocargs) {
-                                       options.add(a);
-                               }
+                       options = new Vector<>();
+                       for (String a: javadocargs) {
+                               options.add(a);
                        }
                } else {
                        javadocargs = new String[options.size() + signatureFiles.length];
@@ -285,11 +277,7 @@ public class Main implements Config {
                                files.add(StructureUtil.translateAjPathName(signatureFile.getCanonicalPath()));
                        }
                }
-               if (LangUtil.is19VMOrGreater()) {
-                       JavadocRunner.callJavadocViaToolProvider(options, files);
-               } else {
-                       JavadocRunner.callJavadoc(javadocargs);
-               }
+               JavadocRunner.callJavadocViaToolProvider(options, files);
        }
 
        /**