@@ -7,6 +7,9 @@ Changes that could break older environments: | |||
* Ant 1.10.x requires Java8 or newer at compile or build time. | |||
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: | |||
----------- | |||
@@ -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/antversion.html">AntVersion</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/augment.html">Augment</a></li> | |||
<li><a href="Tasks/available.html">Available</a></li> | |||
@@ -231,12 +231,6 @@ documentation.</p> | |||
specified.</p></td> | |||
</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"> | |||
<td nowrap><a href="Tasks/jspc.html">JspC</a></td> | |||
<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 | |||
antversion=org.apache.tools.ant.taskdefs.condition.AntVersion | |||
apply=org.apache.tools.ant.taskdefs.Transform | |||
apt=org.apache.tools.ant.taskdefs.Apt | |||
attributenamespacedef=org.apache.tools.ant.taskdefs.AttributeNamespaceDef | |||
augment=org.apache.tools.ant.taskdefs.AugmentReference | |||
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()); | |||
} | |||
} | |||
} |