@@ -41,54 +41,95 @@ public class Apt
private boolean compile = true;
private String factory;
private Path factoryPath;
private Vector options;
private Vector options = new Vector() ;
private File preprocessDir;
/** The name of the apt tool. */
public static final String EXECUTABLE_NAME = "apt";
public static final String ERROR_IGNORING_COMPILER_OPTION = "Ignoring compiler attribute for the APT task, as it is fixed";
public static final String ERROR_WRONG_JAVA_VERSION = "Apt task requires Java 1.5+";
/** 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+";
/**
* option element
* The nested option element.
*/
public static final class Option {
private String name;
private String value;
/** Constructor for Option */
public Option() {
}
/**
* 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;
}
}
/**
* Construtor for Apt task.
* This sets the apt compiler adapter as the compiler in the super class.
*/
public Apt() {
super();
super.setCompiler(AptCompilerAdapter.class.getName());
this.options = new Vector();
}
/**
* Get the name of the apt executable.
*
* @return the name of the executable.
*/
public String getAptExecutable() {
return 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.
* If fork is true run the external apt command.
* If fork is false run the apt compiler in the same jvm as the task.
* @param fork if true use the external command.
*/
public void setFork(boolean fork) {
if (fork) {
super.setCompiler(AptExternalCompilerAdapter.class.getName());
@@ -97,30 +138,62 @@ public class Apt
}
}
/**
* 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());
@@ -128,28 +201,57 @@ public class Apt
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 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.isJavaVersion(JavaEnvUtils.JAVA_1_5)) {