@@ -7,6 +7,9 @@ Changes that could break older environments: | |||||
* Ant 1.10.x requires Java8 or newer at compile or build time. | * Ant 1.10.x requires Java8 or newer at compile or build time. | ||||
The 1.9.x series wil stay compatible with Java5. | The 1.9.x series wil stay compatible with Java5. | ||||
* The <apt> task has been removed since apt itself has been removed | |||||
with Java8. | |||||
Fixed bugs: | Fixed bugs: | ||||
----------- | ----------- | ||||
@@ -1,179 +0,0 @@ | |||||
<!-- | |||||
Licensed to the Apache Software Foundation (ASF) under one or more | |||||
contributor license agreements. See the NOTICE file distributed with | |||||
this work for additional information regarding copyright ownership. | |||||
The ASF licenses this file to You 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. | |||||
--> | |||||
<html lang="en-us"><head> | |||||
<meta http-equiv="Content-Language" content="en-us"><link rel="stylesheet" type="text/css" href="../stylesheets/style.css"> | |||||
<title>Apt Task</title></head> | |||||
<body> | |||||
<h2><a name="Apt">Apt</a></h2> | |||||
<h3>Description</h3> | |||||
<p>Runs the annotation processor tool (apt), and then optionally compiles | |||||
the original code, and any generated source code. | |||||
<p>This task runs on Java 1.5 to Java 1.7.</p> | |||||
<p>Apt is deprecated in Java 1.6, which can run annotation | |||||
processors as part of javac, and removed from the distribution in Java 1.8. | |||||
The task will fire an exception when attempting to run under Java 1.8.</p> | |||||
<p>This task inherits from the <a href="javac.html">Javac Task</a>, and thus | |||||
supports nearly all of the same attributes, and subelements. | |||||
There is one special case, the <tt>fork</tt> attribute, which is present | |||||
but which can only be set to <tt>true</tt>. That is, apt only works as | |||||
a forked process. | |||||
</p> | |||||
<p> | |||||
In addition, it supports | |||||
the following addition items:</p> | |||||
<h3>Parameters</h3> | |||||
<table border="1" cellpadding="2" cellspacing="0"> | |||||
<tbody><tr> | |||||
<td valign="top"><b>Attribute</b></td> | |||||
<td valign="top"><b>Description</b></td> | |||||
<td align="center" valign="top"><b>Required</b></td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">compile</td> | |||||
<td valign="top">After running the Apt, should the code be compiled. (see the | |||||
<code>-nocompile</code> flag on the Apt executable)</td> | |||||
<td align="center" valign="top">No, defaults to false.</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">factory</td> | |||||
<td valign="top">The fully qualified classname of the AnnotationProcessFactory to be used | |||||
to construct annotation processors. This represents the <code>-factory</code> | |||||
command line flag of the Apt executable.</td> | |||||
<td align="center" valign="top">No</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">factorypathref</td> | |||||
<td valign="top">The reference id of the path used to find the classes needed by the | |||||
AnnotationProcessorFactory (and the location of the factory itself). | |||||
This represents the <code>-factorypath</code> flag on the Apt executable.</td> | |||||
<td align="center" valign="top">No</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">preprocessdir</td> | |||||
<td valign="top">The directory used for preprocessing. This is the directory where the | |||||
generated source code will be place. This represents the <code>-s</code> flag on | |||||
the Apt executable.</td> | |||||
<td align="center" valign="top">No</td> | |||||
</tr> | |||||
</tbody></table> | |||||
<h3>Parameters specified as nested elements</h3> | |||||
<h4>factorypath</h4> | |||||
<p>You can specify the path used to find the classes needed by the AnnotationProcessorFactory | |||||
at runtime, using this element. It is represents as a generic path like structure. This | |||||
represents the <code>-factorypath</code> flag on the Apt executable.</p> | |||||
<h4>option</h4> | |||||
<p>Used to represent a generic option to pass to Apt. This represents the <code>-A</code> flag on the | |||||
Apt executable. You can specify zero or more <code><option></code> elements.</p> | |||||
<table border="1" cellpadding="2" cellspacing="0"> | |||||
<tbody><tr> | |||||
<td valign="top" width="12%"><b>Attribute</b></td> | |||||
<td valign="top" width="78%"><b>Description</b></td> | |||||
<td valign="top" width="10%"><b>Required</b></td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">name</td> | |||||
<td align="center">The name of the option</td> | |||||
<td align="center">Yes.</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">value</td> | |||||
<td align="center">The value to set the option to</td> | |||||
<td align="center">Yes.</td> | |||||
</tr> | |||||
</tbody></table> | |||||
<h3>Examples</h3> | |||||
<blockquote><pre> | |||||
<apt srcdir="${src}" | |||||
destdir="${build}" | |||||
classpath="xyz.jar" | |||||
debug="on" | |||||
compile="true" | |||||
factory="com.mycom.MyAnnotationProcessorFactory" | |||||
factorypathref="my.factorypath.id" | |||||
preprocessdir="${preprocess.dir}"> | |||||
</apt> | |||||
</pre></blockquote> | |||||
<p>compiles all <code>.java</code> files under the <code>${src}</code> | |||||
directory, and stores | |||||
the <code>.class</code> files in the <code>${build}</code> directory. | |||||
The classpath used includes <code>xyz.jar</code>, and compiling with | |||||
debug information is on. It also forces the generated source code to | |||||
be compiled. The generated source code will be placed in | |||||
<code>${preprocess.dir}</code> directory, using the class | |||||
<code>com.mycom.MyAnnotationProcessorFactory</code> to supply | |||||
AnnotationProcessor instances.</p> | |||||
<h3>Notes</h3> | |||||
<p> | |||||
The inherited "fork" attribute is set to true by default; please do not change it. | |||||
</p> | |||||
<p> | |||||
The inherited "compiler" attribute is ignored, as it is forced to use the Apt compiler | |||||
</p> | |||||
<p>Using the Apt compiler with the "compile" option set to "true" | |||||
forces you to use Sun's Apt compiler, which will use the JDK's Javac compiler. | |||||
If you wish to use another compiler, you will first need run the Apt processor | |||||
with the "compile" flag set to "false", and then use a | |||||
<code><javac></code> task to compile first your original source code, and then the | |||||
generated source code:</p> | |||||
<blockquote><pre> | |||||
<apt srcdir="${src}" | |||||
destdir="${build}" | |||||
classpath="xyz.jar" | |||||
debug="true" | |||||
compile="false" | |||||
factory="com.mycom.MyAnnotationProcessorFactory" | |||||
factorypathref="my.factorypath.id" | |||||
preprocessdir="${preprocess.dir}"> | |||||
</apt> | |||||
<javac srcdir="${src}" | |||||
destdir="${build}" | |||||
classpath="xyz.jar" | |||||
debug="on"/> | |||||
<javac srcdir="${preprocess.dir}" | |||||
destdir="${build}" | |||||
classpath="xyz.jar" | |||||
debug="true"/> | |||||
</pre></blockquote> | |||||
This may involve more build file coding, but the speedup gained from switching | |||||
to jikes may justify the effort. | |||||
<p> | |||||
</p> | |||||
</body></html> |
@@ -40,7 +40,6 @@ | |||||
<li><a href="Tasks/antstructure.html">AntStructure</a></li> | <li><a href="Tasks/antstructure.html">AntStructure</a></li> | ||||
<li><a href="Tasks/antversion.html">AntVersion</a></li> | <li><a href="Tasks/antversion.html">AntVersion</a></li> | ||||
<li><a href="Tasks/apply.html">Apply/<i>ExecOn</i></a></li> | <li><a href="Tasks/apply.html">Apply/<i>ExecOn</i></a></li> | ||||
<li><a href="Tasks/apt.html">Apt</a></li> | |||||
<li><a href="Tasks/attrib.html">Attrib</a></li> | <li><a href="Tasks/attrib.html">Attrib</a></li> | ||||
<li><a href="Tasks/augment.html">Augment</a></li> | <li><a href="Tasks/augment.html">Augment</a></li> | ||||
<li><a href="Tasks/available.html">Available</a></li> | <li><a href="Tasks/available.html">Available</a></li> | ||||
@@ -231,12 +231,6 @@ documentation.</p> | |||||
specified.</p></td> | specified.</p></td> | ||||
</tr> | </tr> | ||||
<tr valign="top"> | |||||
<td nowrap><a href="Tasks/apt.html">Apt</a></td> | |||||
<td><p>Runs the annotation processor tool (apt), and then optionally compiles | |||||
the original code, and any generated source code.</p></td> | |||||
</tr> | |||||
<tr valign="top"> | <tr valign="top"> | ||||
<td nowrap><a href="Tasks/jspc.html">JspC</a></td> | <td nowrap><a href="Tasks/jspc.html">JspC</a></td> | ||||
<td><p>Runs the JSP compiler. It can be used to precompile JSP pages | <td><p>Runs the JSP compiler. It can be used to precompile JSP pages | ||||
@@ -1,270 +0,0 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You 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. | |||||
* | |||||
*/ | |||||
package org.apache.tools.ant.taskdefs; | |||||
import java.io.File; | |||||
import java.util.Vector; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.Project; | |||||
import org.apache.tools.ant.taskdefs.compilers.AptExternalCompilerAdapter; | |||||
import org.apache.tools.ant.types.Path; | |||||
import org.apache.tools.ant.types.Reference; | |||||
import org.apache.tools.ant.util.JavaEnvUtils; | |||||
/** | |||||
* Apt Task for running the Annotation processing tool for JDK 1.5. It derives | |||||
* from the existing Javac task, and forces the compiler based on whether we're | |||||
* executing internally, or externally. | |||||
* | |||||
* @since Ant 1.7 | |||||
*/ | |||||
public class Apt | |||||
extends Javac { | |||||
private boolean compile = true; | |||||
private String factory; | |||||
private Path factoryPath; | |||||
private Vector<Option> options = new Vector<Option>(); | |||||
private File preprocessDir; | |||||
/** The name of the apt tool. */ | |||||
public static final String EXECUTABLE_NAME = "apt"; | |||||
/** An warning message when ignoring compiler attribute. */ | |||||
public static final String ERROR_IGNORING_COMPILER_OPTION | |||||
= "Ignoring compiler attribute for the APT task, as it is fixed"; | |||||
/** A warning message if used with java < 1.5. */ | |||||
public static final String ERROR_WRONG_JAVA_VERSION | |||||
= "Apt task requires Java 1.5+"; | |||||
/** | |||||
* exposed for debug messages | |||||
*/ | |||||
public static final String WARNING_IGNORING_FORK = | |||||
"Apt only runs in its own JVM; fork=false option ignored"; | |||||
/** | |||||
* The nested option element. | |||||
*/ | |||||
public static final class Option { | |||||
private String name; | |||||
private String value; | |||||
/** Constructor for Option */ | |||||
public Option() { | |||||
//default | |||||
} | |||||
/** | |||||
* Get the name attribute. | |||||
* @return the name attribute. | |||||
*/ | |||||
public String getName() { | |||||
return name; | |||||
} | |||||
/** | |||||
* Set the name attribute. | |||||
* @param name the name of the option. | |||||
*/ | |||||
public void setName(String name) { | |||||
this.name = name; | |||||
} | |||||
/** | |||||
* Get the value attribute. | |||||
* @return the value attribute. | |||||
*/ | |||||
public String getValue() { | |||||
return value; | |||||
} | |||||
/** | |||||
* Set the value attribute. | |||||
* @param value the value of the option. | |||||
*/ | |||||
public void setValue(String value) { | |||||
this.value = value; | |||||
} | |||||
} | |||||
/** | |||||
* Constructor for Apt task. | |||||
* This sets the apt compiler adapter as the compiler in the super class. | |||||
*/ | |||||
public Apt() { | |||||
super(); | |||||
super.setCompiler(AptExternalCompilerAdapter.class.getName()); | |||||
super.setFork(true); | |||||
} | |||||
/** | |||||
* Get the name of the apt executable. | |||||
* | |||||
* @return the name of the executable. | |||||
*/ | |||||
public String getAptExecutable() { | |||||
String exe = getExecutable(); | |||||
return exe != null ? exe : | |||||
JavaEnvUtils.getJdkExecutable(EXECUTABLE_NAME); | |||||
} | |||||
/** | |||||
* Set the compiler. | |||||
* This is not allowed and a warning log message is made. | |||||
* @param compiler not used. | |||||
*/ | |||||
public void setCompiler(String compiler) { | |||||
log(ERROR_IGNORING_COMPILER_OPTION, Project.MSG_WARN); | |||||
} | |||||
/** | |||||
* Set the fork attribute. | |||||
* Non-forking APT is highly classpath dependent and appears to be too | |||||
* brittle to work. The sole reason this attribute is retained | |||||
* is the superclass does it | |||||
* @param fork if false; warn the option is ignored. | |||||
*/ | |||||
public void setFork(boolean fork) { | |||||
if (!fork) { | |||||
log(WARNING_IGNORING_FORK, Project.MSG_WARN); | |||||
} | |||||
} | |||||
/** | |||||
* Get the compiler class name. | |||||
* @return the compiler class name. | |||||
*/ | |||||
public String getCompiler() { | |||||
return super.getCompiler(); | |||||
} | |||||
/** | |||||
* Get the compile option for the apt compiler. | |||||
* If this is false the "-nocompile" argument will be used. | |||||
* @return the value of the compile option. | |||||
*/ | |||||
public boolean isCompile() { | |||||
return compile; | |||||
} | |||||
/** | |||||
* Set the compile option for the apt compiler. | |||||
* Default value is true. | |||||
* @param compile if true set the compile option. | |||||
*/ | |||||
public void setCompile(boolean compile) { | |||||
this.compile = compile; | |||||
} | |||||
/** | |||||
* Get the factory option for the apt compiler. | |||||
* If this is non-null the "-factory" argument will be used. | |||||
* @return the value of the factory option. | |||||
*/ | |||||
public String getFactory() { | |||||
return factory; | |||||
} | |||||
/** | |||||
* Set the factory option for the apt compiler. | |||||
* Default value is null. | |||||
* @param factory the classname of the factory. | |||||
*/ | |||||
public void setFactory(String factory) { | |||||
this.factory = factory; | |||||
} | |||||
/** | |||||
* Add a reference to a path to the factoryPath attribute. | |||||
* @param ref a reference to a path. | |||||
*/ | |||||
public void setFactoryPathRef(Reference ref) { | |||||
createFactoryPath().setRefid(ref); | |||||
} | |||||
/** | |||||
* Add a path to the factoryPath attribute. | |||||
* @return a path to be configured. | |||||
*/ | |||||
public Path createFactoryPath() { | |||||
if (factoryPath == null) { | |||||
factoryPath = new Path(getProject()); | |||||
} | |||||
return factoryPath.createPath(); | |||||
} | |||||
/** | |||||
* Get the factory path attribute. | |||||
* If this is not null, the "-factorypath" argument will be used. | |||||
* The default value is null. | |||||
* @return the factory path attribute. | |||||
*/ | |||||
public Path getFactoryPath() { | |||||
return factoryPath; | |||||
} | |||||
/** | |||||
* Create a nested option. | |||||
* @return an option to be configured. | |||||
*/ | |||||
public Option createOption() { | |||||
Option opt = new Option(); | |||||
options.add(opt); | |||||
return opt; | |||||
} | |||||
/** | |||||
* Get the options to the compiler. | |||||
* Each option will use '"-E" name ["=" value]' argument. | |||||
* @return the options. | |||||
*/ | |||||
public Vector<Option> getOptions() { | |||||
return options; | |||||
} | |||||
/** | |||||
* Get the preprocessdir attribute. | |||||
* This corresponds to the "-s" argument. | |||||
* The default value is null. | |||||
* @return the preprocessdir attribute. | |||||
*/ | |||||
public File getPreprocessDir() { | |||||
return preprocessDir; | |||||
} | |||||
/** | |||||
* Set the preprocessdir attribute. | |||||
* @param preprocessDir where to place processor generated source files. | |||||
*/ | |||||
public void setPreprocessDir(File preprocessDir) { | |||||
this.preprocessDir = preprocessDir; | |||||
} | |||||
/** | |||||
* Do the compilation. | |||||
* @throws BuildException on error. | |||||
*/ | |||||
public void execute() | |||||
throws BuildException { | |||||
if (JavaEnvUtils.getJavaVersionNumber() >= 18) { | |||||
throw new BuildException("apt does not exist under Java 1.8 and higher"); | |||||
} | |||||
super.execute(); | |||||
} | |||||
} |
@@ -1,187 +0,0 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You 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. | |||||
* | |||||
*/ | |||||
package org.apache.tools.ant.taskdefs.compilers; | |||||
import java.io.File; | |||||
import java.lang.reflect.Method; | |||||
import java.util.Enumeration; | |||||
import java.util.Vector; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.Project; | |||||
import org.apache.tools.ant.taskdefs.Apt; | |||||
import org.apache.tools.ant.types.Commandline; | |||||
import org.apache.tools.ant.types.Path; | |||||
/** | |||||
* <p>The implementation of the apt compiler for JDK 1.5.</p> | |||||
* | |||||
* <p>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:</p> | |||||
* <pre> | |||||
* 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) ; | |||||
* } | |||||
* </pre> | |||||
* | |||||
* This Adapter is designed to run Apt in-JVM, an option that is not actually | |||||
* exposed to end-users, because it was too brittle during beta testing; classpath | |||||
* problems being the core issue. | |||||
* | |||||
* @since Ant 1.7 | |||||
*/ | |||||
public class AptCompilerAdapter extends DefaultCompilerAdapter { | |||||
/** | |||||
* 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"; | |||||
/** | |||||
* 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(final Apt apt, final Commandline cmd) { | |||||
if (!apt.isCompile()) { | |||||
cmd.createArgument().setValue("-nocompile"); | |||||
} | |||||
// Process the factory class | |||||
final String factory = apt.getFactory(); | |||||
if (factory != null) { | |||||
cmd.createArgument().setValue("-factory"); | |||||
cmd.createArgument().setValue(factory); | |||||
} | |||||
// Process the factory path | |||||
final Path factoryPath = apt.getFactoryPath(); | |||||
if (factoryPath != null) { | |||||
cmd.createArgument().setValue("-factorypath"); | |||||
cmd.createArgument().setPath(factoryPath); | |||||
} | |||||
final File preprocessDir = apt.getPreprocessDir(); | |||||
if (preprocessDir != null) { | |||||
cmd.createArgument().setValue("-s"); | |||||
cmd.createArgument().setFile(preprocessDir); | |||||
} | |||||
// Process the processor options | |||||
final Vector options = apt.getOptions(); | |||||
final Enumeration elements = options.elements(); | |||||
Apt.Option opt; | |||||
StringBuffer arg = null; | |||||
while (elements.hasMoreElements()) { | |||||
opt = (Apt.Option) elements.nextElement(); | |||||
arg = new StringBuffer(); | |||||
arg.append("-A").append(opt.getName()); | |||||
if (opt.getValue() != null) { | |||||
arg.append("=").append(opt.getValue()); | |||||
} | |||||
cmd.createArgument().setValue(arg.toString()); | |||||
} | |||||
} | |||||
/** | |||||
* using our front end task, set up the command line switches | |||||
* | |||||
* @param cmd command line to set up | |||||
*/ | |||||
protected void setAptCommandlineSwitches(final Commandline cmd) { | |||||
final Apt apt = getApt(); | |||||
setAptCommandlineSwitches(apt, cmd); | |||||
} | |||||
/** | |||||
* Run the compilation. | |||||
* @return true on success. | |||||
* @throws BuildException if the compilation has problems. | |||||
*/ | |||||
public boolean execute() throws BuildException { | |||||
attributes.log("Using apt compiler", Project.MSG_VERBOSE); | |||||
//set up the javac options | |||||
final Commandline cmd = setupModernJavacCommand(); | |||||
//then add the Apt options | |||||
setAptCommandlineSwitches(cmd); | |||||
//finally invoke APT | |||||
// Use reflection to be able to build on all JDKs: | |||||
try { | |||||
final Class c = Class.forName(APT_ENTRY_POINT); | |||||
final Object compiler = c.newInstance(); | |||||
final Method compile = c.getMethod(APT_METHOD_NAME, | |||||
new Class[]{(new String[]{}).getClass()}); | |||||
final int result = ((Integer) compile.invoke | |||||
(compiler, new Object[]{cmd.getArguments()})) | |||||
.intValue(); | |||||
return (result == APT_COMPILER_SUCCESS); | |||||
} catch (final BuildException be) { | |||||
//rethrow build exceptions | |||||
throw be; | |||||
} catch (final Exception ex) { | |||||
//cast everything else to a build exception | |||||
throw new BuildException("Error starting apt compiler", | |||||
ex, location); | |||||
} | |||||
} | |||||
} |
@@ -1,71 +0,0 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You 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. | |||||
* | |||||
*/ | |||||
package org.apache.tools.ant.taskdefs.compilers; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.Project; | |||||
import org.apache.tools.ant.taskdefs.Apt; | |||||
import org.apache.tools.ant.types.Commandline; | |||||
/** | |||||
* The implementation of the apt compiler for JDK 1.5 using an external process | |||||
* | |||||
* @since Ant 1.7 | |||||
*/ | |||||
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(); | |||||
} | |||||
/** | |||||
* Performs a compile using the Javac externally. | |||||
* @return true the compilation was successful. | |||||
* @throws BuildException if there is a problem. | |||||
*/ | |||||
public boolean execute() throws BuildException { | |||||
attributes.log("Using external apt compiler", Project.MSG_VERBOSE); | |||||
// Setup the apt executable | |||||
Apt apt = getApt(); | |||||
Commandline cmd = new Commandline(); | |||||
cmd.setExecutable(apt.getAptExecutable()); | |||||
setupModernJavacCommandlineSwitches(cmd); | |||||
AptCompilerAdapter.setAptCommandlineSwitches(apt, cmd); | |||||
int firstFileName = cmd.size(); | |||||
//add the files | |||||
logAndAddFilesToCompile(cmd); | |||||
//run | |||||
return 0 == executeExternalCompile(cmd.getCommandline(), | |||||
firstFileName, | |||||
true); | |||||
} | |||||
} | |||||
@@ -19,7 +19,6 @@ antcall=org.apache.tools.ant.taskdefs.CallTarget | |||||
antstructure=org.apache.tools.ant.taskdefs.AntStructure | antstructure=org.apache.tools.ant.taskdefs.AntStructure | ||||
antversion=org.apache.tools.ant.taskdefs.condition.AntVersion | antversion=org.apache.tools.ant.taskdefs.condition.AntVersion | ||||
apply=org.apache.tools.ant.taskdefs.Transform | apply=org.apache.tools.ant.taskdefs.Transform | ||||
apt=org.apache.tools.ant.taskdefs.Apt | |||||
attributenamespacedef=org.apache.tools.ant.taskdefs.AttributeNamespaceDef | attributenamespacedef=org.apache.tools.ant.taskdefs.AttributeNamespaceDef | ||||
augment=org.apache.tools.ant.taskdefs.AugmentReference | augment=org.apache.tools.ant.taskdefs.AugmentReference | ||||
available=org.apache.tools.ant.taskdefs.Available | available=org.apache.tools.ant.taskdefs.Available | ||||
@@ -1,25 +0,0 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You 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. | |||||
* | |||||
*/ | |||||
/** | |||||
*/ | |||||
@Distributed( | |||||
protocol="CORBA", | |||||
distribution=Distributed.DistributionTypes.FEDERATED | |||||
) | |||||
public class AptExample { | |||||
} |
@@ -1,39 +0,0 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You 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. | |||||
* | |||||
*/ | |||||
import java.lang.annotation.Annotation; | |||||
import java.lang.annotation.Target; | |||||
import java.lang.annotation.Retention; | |||||
import java.lang.annotation.Documented; | |||||
import java.lang.annotation.ElementType; | |||||
import java.lang.annotation.RetentionPolicy; | |||||
/** | |||||
*/ | |||||
@Documented | |||||
@Retention(value = RetentionPolicy.RUNTIME) | |||||
@Target(value = ElementType.TYPE) | |||||
public @interface Distributed { | |||||
public DistributionTypes distribution() default DistributionTypes.LOCAL; | |||||
public String protocol() default "RMI"; | |||||
public enum DistributionTypes { SINGLETON, LOCAL, FAULT_TOLERANT, FEDERATED, MOBILE}; | |||||
} |
@@ -1,50 +0,0 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You 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. | |||||
* | |||||
*/ | |||||
import com.sun.mirror.apt.AnnotationProcessorFactory; | |||||
import com.sun.mirror.apt.AnnotationProcessor; | |||||
import com.sun.mirror.apt.AnnotationProcessorEnvironment; | |||||
import java.util.Collection; | |||||
import java.util.Set; | |||||
import java.util.Arrays; | |||||
import java.util.Collections; | |||||
/** | |||||
* This was the first piece of Java1.5 code in the source tree. | |||||
* @since 20050-03-09T21:29:25Z | |||||
*/ | |||||
public class DistributedAnnotationFactory implements AnnotationProcessorFactory { | |||||
private static final Collection<String> supportedAnnotations | |||||
= Collections.unmodifiableCollection(Arrays.asList("*")); | |||||
public Collection<String> supportedOptions() { | |||||
return Collections.emptySet(); | |||||
} | |||||
public Collection<String> supportedAnnotationTypes() { | |||||
return supportedAnnotations; | |||||
} | |||||
public AnnotationProcessor getProcessorFor( | |||||
Set<com.sun.mirror.declaration.AnnotationTypeDeclaration> annotationTypeDeclarations, | |||||
AnnotationProcessorEnvironment env) { | |||||
return new DistributedAnnotationProcessor(env); | |||||
} | |||||
} |
@@ -1,65 +0,0 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You 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. | |||||
* | |||||
*/ | |||||
//found in tools.jar, not the JRE runtime. | |||||
import com.sun.mirror.apt.AnnotationProcessor; | |||||
import com.sun.mirror.apt.AnnotationProcessorEnvironment; | |||||
import com.sun.mirror.declaration.TypeDeclaration; | |||||
import com.sun.mirror.declaration.ClassDeclaration; | |||||
import com.sun.mirror.util.SimpleDeclarationVisitor; | |||||
import static com.sun.mirror.util.DeclarationVisitors.*; | |||||
import java.util.Map; | |||||
/** | |||||
* Annotation processor outputs stuff | |||||
*/ | |||||
public class DistributedAnnotationProcessor implements AnnotationProcessor { | |||||
public AnnotationProcessorEnvironment env; | |||||
public DistributedAnnotationProcessor(AnnotationProcessorEnvironment env) { | |||||
this.env = env; | |||||
} | |||||
public void echo(String text) { | |||||
env.getMessager().printNotice(text); | |||||
} | |||||
public void process() { | |||||
echo("DistributedAnnotationProcessor-is-go"); | |||||
Map<String, String> options=env.getOptions(); | |||||
for(String key:options.keySet()) { | |||||
echo("Option ["+key+"] = "+options.get(key)); | |||||
} | |||||
//work time | |||||
for (TypeDeclaration typeDecl : env.getSpecifiedTypeDeclarations()) { | |||||
typeDecl.accept(getDeclarationScanner(new ClassVisitor(), | |||||
NO_OP)); | |||||
} | |||||
} | |||||
private class ClassVisitor extends SimpleDeclarationVisitor { | |||||
public void visitClassDeclaration(ClassDeclaration d) { | |||||
echo("visiting "+ d.getQualifiedName()); | |||||
} | |||||
} | |||||
} |