From 7d0746c62f2382e555b88cee9ff2c2dd801a1c1b Mon Sep 17 00:00:00 2001 From: Steve Loughran Date: Mon, 7 Mar 2005 12:22:52 +0000 Subject: [PATCH] Fixing apt with correct method name, some more javadocs. http://issues.apache.org/bugzilla/show_bug.cgi?id=33853 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277805 13f79535-47bb-0310-9956-ffa450edef68 --- .../compilers/AptCompilerAdapter.java | 63 ++++++++++++++++++- .../compilers/AptExternalCompilerAdapter.java | 6 ++ 2 files changed, 66 insertions(+), 3 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/AptCompilerAdapter.java b/src/main/org/apache/tools/ant/taskdefs/compilers/AptCompilerAdapter.java index 5075dd789..e8c145a5f 100644 --- a/src/main/org/apache/tools/ant/taskdefs/compilers/AptCompilerAdapter.java +++ b/src/main/org/apache/tools/ant/taskdefs/compilers/AptCompilerAdapter.java @@ -31,22 +31,70 @@ import java.util.Vector; /** * The implementation of the apt compiler for JDK 1.5 + *

+ * As usual, the low level entry points for Java tools are neither documented or + * stable; this entry point may change from that of 1.5.0_01-b08 without any + * warning at all. The IDE decompile of the tool entry points is as follows: + *

+ * public class Main {
+ * public Main() ;
+ * 

+ * public static transient void main(String... strings) ; + *

+ * public static transient int process(String... strings); + *

+ * public static transient int process(PrintWriter printWriter, + * String... strings) ; + * public static transient int process( + * AnnotationProcessorFactory annotationProcessorFactory, + * String... strings) ; + *

+ * public static transient int process( + * AnnotationProcessorFactory annotationProcessorFactory, + * PrintWriter printWriter, + * String... strings); + * private static transient int processing( + * AnnotationProcessorFactory annotationProcessorFactory, + * PrintWriter printWriter, + * String... strings) ; + * } + *

* * @since Ant 1.7 */ public class AptCompilerAdapter extends DefaultCompilerAdapter { /** - * Integer returned by the "Modern" jdk1.3 compiler to indicate success. + * Integer returned by the Apt compiler to indicate success. */ private static final int APT_COMPILER_SUCCESS = 0; + /** + * class in tools.jar that implements APT + */ public static final String APT_ENTRY_POINT = "com.sun.tools.apt.Main"; - public static final String APT_METHOD_NAME = "compile"; + /** + * method used to compile. + */ + public static final String APT_METHOD_NAME = "process"; + + /** + * Get the facade task that fronts this adapter + * + * @return task instance + * @see DefaultCompilerAdapter#getJavac() + */ protected Apt getApt() { return (Apt) getJavac(); } + /** + * Using the front end arguments, set up the command line to run Apt + * + * @param apt task + * @param cmd command that is set up with the various switches from the task + * options + */ static void setAptCommandlineSwitches(Apt apt, Commandline cmd) { if (!apt.isCompile()) { @@ -89,8 +137,12 @@ public class AptCompilerAdapter extends DefaultCompilerAdapter { } } + /** + * using our front end task, set up the command line switches + * + * @param cmd command line to set up + */ protected void setAptCommandlineSwitches(Commandline cmd) { - // Process the nocompile flag Apt apt = getApt(); setAptCommandlineSwitches(apt, cmd); } @@ -102,9 +154,12 @@ public class AptCompilerAdapter extends DefaultCompilerAdapter { */ public boolean execute() throws BuildException { attributes.log("Using apt compiler", Project.MSG_VERBOSE); + //set up the javac options Commandline cmd = setupModernJavacCommand(); + //then add the Apt options setAptCommandlineSwitches(cmd); + //finally invoke APT // Use reflection to be able to build on all JDKs: try { Class c = Class.forName(APT_ENTRY_POINT); @@ -116,8 +171,10 @@ public class AptCompilerAdapter extends DefaultCompilerAdapter { .intValue(); return (result == APT_COMPILER_SUCCESS); } catch (BuildException be) { + //rethrow build exceptions throw be; } catch (Exception ex) { + //cast everything else to a build exception throw new BuildException("Error starting apt compiler", ex, location); } diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/AptExternalCompilerAdapter.java b/src/main/org/apache/tools/ant/taskdefs/compilers/AptExternalCompilerAdapter.java index e55a0b516..b276a3545 100644 --- a/src/main/org/apache/tools/ant/taskdefs/compilers/AptExternalCompilerAdapter.java +++ b/src/main/org/apache/tools/ant/taskdefs/compilers/AptExternalCompilerAdapter.java @@ -30,6 +30,12 @@ import org.apache.tools.ant.types.Commandline; public class AptExternalCompilerAdapter extends DefaultCompilerAdapter { + /** + * Get the facade task that fronts this adapter + * + * @return task instance + * @see DefaultCompilerAdapter#getJavac() + */ protected Apt getApt() { return (Apt) getJavac(); }