Browse Source

Coding conventions

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274856 13f79535-47bb-0310-9956-ffa450edef68
master
Conor MacNeill 22 years ago
parent
commit
1f71acf427
33 changed files with 472 additions and 273 deletions
  1. +18
    -3
      src/main/org/apache/tools/ant/DemuxOutputStream.java
  2. +7
    -7
      src/main/org/apache/tools/ant/DirectoryScanner.java
  3. +4
    -4
      src/main/org/apache/tools/ant/IntrospectionHelper.java
  4. +16
    -14
      src/main/org/apache/tools/ant/Main.java
  5. +2
    -2
      src/main/org/apache/tools/ant/PathTokenizer.java
  6. +2
    -1
      src/main/org/apache/tools/ant/Project.java
  7. +5
    -3
      src/main/org/apache/tools/ant/ProjectHelper.java
  8. +2
    -2
      src/main/org/apache/tools/ant/RuntimeConfigurable.java
  9. +5
    -5
      src/main/org/apache/tools/ant/Target.java
  10. +4
    -2
      src/main/org/apache/tools/ant/Task.java
  11. +14
    -7
      src/main/org/apache/tools/ant/TypeAdapter.java
  12. +4
    -5
      src/main/org/apache/tools/ant/UnknownElement.java
  13. +2
    -1
      src/main/org/apache/tools/ant/XmlLogger.java
  14. +2
    -2
      src/main/org/apache/tools/ant/helper/ProjectHelper2.java
  15. +18
    -3
      src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java
  16. +2
    -0
      src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java
  17. +2
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
  18. +5
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java
  19. +167
    -87
      src/main/org/apache/tools/ant/taskdefs/optional/IContract.java
  20. +15
    -9
      src/main/org/apache/tools/ant/taskdefs/optional/Javah.java
  21. +13
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/Native2Ascii.java
  22. +35
    -22
      src/main/org/apache/tools/ant/taskdefs/optional/NetRexxC.java
  23. +12
    -17
      src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
  24. +11
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java
  25. +18
    -12
      src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
  26. +19
    -4
      src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java
  27. +8
    -8
      src/main/org/apache/tools/ant/taskdefs/optional/Script.java
  28. +1
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/StyleBook.java
  29. +4
    -4
      src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
  30. +32
    -27
      src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
  31. +9
    -3
      src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java
  32. +10
    -10
      src/main/org/apache/tools/ant/types/optional/ScriptFilter.java
  33. +4
    -0
      src/main/org/apache/tools/ant/util/optional/WeakishReference12.java

+ 18
- 3
src/main/org/apache/tools/ant/DemuxOutputStream.java View File

@@ -92,6 +92,12 @@ public class DemuxOutputStream extends OutputStream {
/** Initial buffer size. */
private static final int INTIAL_SIZE = 132;

/** Carriage return */
private static final int CR = 0x0d;

/** Linefeed */
private static final int LF = 0x0a;

/** Mapping from thread to buffer (Thread to BufferInfo). */
private Hashtable buffers = new Hashtable();

@@ -243,14 +249,23 @@ public class DemuxOutputStream extends OutputStream {
}
}

public void write(byte b[], int off, int len) throws IOException {
/**
* Write a block of characters to the output stream
*
* @param b the array containg the data
* @param off the offset into the array where data starts
* @param len the length of block
*
* @throws IOException if the data cannot be written into the stream.
*/
public void write(byte[] b, int off, int len) throws IOException {
// find the line breaks and pass other chars through in blocks
int offset = off;
int blockStartOffset = offset;
int remaining = len;
BufferInfo bufferInfo = getBufferInfo();
while (remaining > 0) {
while (remaining > 0 && b[offset] != 0x0a && b[offset] != 0x0d) {
while (remaining > 0 && b[offset] != LF && b[offset] != CR) {
offset++;
remaining--;
}
@@ -259,7 +274,7 @@ public class DemuxOutputStream extends OutputStream {
if (blockLength > 0) {
bufferInfo.buffer.write(b, blockStartOffset, blockLength);
}
while (remaining > 0 && (b[offset] == 0x0a || b[offset] == 0x0d)) {
while (remaining > 0 && (b[offset] == LF || b[offset] == CR)) {
write(b[offset]);
offset++;
remaining--;


+ 7
- 7
src/main/org/apache/tools/ant/DirectoryScanner.java View File

@@ -655,7 +655,7 @@ public class DirectoryScanner
// put in the newroots vector the include patterns without
// wildcard tokens
for (int icounter = 0; icounter < includes.length; icounter++) {
String newpattern =
String newpattern =
SelectorUtils.rtrimWildcardTokens(includes[icounter]);
// check whether the candidate new pattern has a parent
boolean hasParent = false;
@@ -716,19 +716,19 @@ public class DirectoryScanner
} else {
if (currentelement.length() > 0) {
if (currentelement.charAt(currentelement.length()
- 1)
- 1)
!= File.separatorChar) {
currentelement =
currentelement =
currentelement + File.separatorChar;
}
}
scandir(myfile, currentelement, true);
}
} else {
if (isCaseSensitive
if (isCaseSensitive
&& originalpattern.equals(currentelement)) {
accountForIncludedFile(currentelement, myfile);
} else if (!isCaseSensitive
} else if (!isCaseSensitive
&& originalpattern.equalsIgnoreCase(currentelement)) {
accountForIncludedFile(currentelement, myfile);
}
@@ -1160,7 +1160,7 @@ public class DirectoryScanner
* @since Ant 1.6
*/
private File findFileCaseInsensitive(File base, String path) {
File f = findFileCaseInsensitive(base,
File f = findFileCaseInsensitive(base,
SelectorUtils.tokenizePath(path));
return f == null ? new File(base, path) : f;
}
@@ -1211,7 +1211,7 @@ public class DirectoryScanner
* basedir?
* @since Ant 1.6
*/
private boolean isSymlink(File base, Vector pathElements) {
private boolean isSymlink(File base, Vector pathElements) {
if (pathElements.size() > 0) {
String current = (String) pathElements.remove(0);
try {


+ 4
- 4
src/main/org/apache/tools/ant/IntrospectionHelper.java View File

@@ -502,8 +502,8 @@ public class IntrospectionHelper implements BuildListener {
return;
} else {
// Not whitespace - fail
String msg = project.getElementName(element) +
" doesn't support nested text data.";
String msg = project.getElementName(element)
+ " doesn't support nested text data.";
throw new BuildException(msg);
}
}
@@ -703,8 +703,8 @@ public class IntrospectionHelper implements BuildListener {
throws BuildException {
Class at = (Class) attributeTypes.get(attributeName);
if (at == null) {
String msg = "Class " + bean.getName() +
" doesn't support the \"" + attributeName + "\" attribute.";
String msg = "Class " + bean.getName()
+ " doesn't support the \"" + attributeName + "\" attribute.";
throw new BuildException(msg);
}
return at;


+ 16
- 14
src/main/org/apache/tools/ant/Main.java View File

@@ -99,16 +99,16 @@ public class Main implements AntMain {
private static PrintStream err = System.err;

/** The build targets. */
private Vector targets = new Vector(5);
private Vector targets = new Vector();

/** Set of properties that can be used by tasks. */
private Properties definedProps = new Properties();

/** Names of classes to add as listeners to project. */
private Vector listeners = new Vector(5);
private Vector listeners = new Vector(1);

/** File names of property files to load on startup. */
private Vector propertyFiles = new Vector(5);
private Vector propertyFiles = new Vector(1);

/** Indicates whether this build is to support interactive input */
private boolean allowInput = true;
@@ -334,8 +334,8 @@ public class Main implements AntMain {
+ "permissions.";
throw new BuildException(msg);
} catch (ArrayIndexOutOfBoundsException aioobe) {
String msg = "You must specify a log file when " +
"using the -log argument";
String msg = "You must specify a log file when "
+ "using the -log argument";
throw new BuildException(msg);
}
} else if (arg.equals("-buildfile") || arg.equals("-file")
@@ -344,8 +344,8 @@ public class Main implements AntMain {
buildFile = new File(args[i + 1].replace('/', File.separatorChar));
i++;
} catch (ArrayIndexOutOfBoundsException aioobe) {
String msg = "You must specify a buildfile when " +
"using the -buildfile argument";
String msg = "You must specify a buildfile when "
+ "using the -buildfile argument";
throw new BuildException(msg);
}
} else if (arg.equals("-listener")) {
@@ -353,8 +353,8 @@ public class Main implements AntMain {
listeners.addElement(args[i + 1]);
i++;
} catch (ArrayIndexOutOfBoundsException aioobe) {
String msg = "You must specify a classname when " +
"using the -listener argument";
String msg = "You must specify a classname when "
+ "using the -listener argument";
throw new BuildException(msg);
}
} else if (arg.startsWith("-D")) {
@@ -421,8 +421,8 @@ public class Main implements AntMain {
propertyFiles.addElement(args[i + 1]);
i++;
} catch (ArrayIndexOutOfBoundsException aioobe) {
String msg = "You must specify a property filename when " +
"using the -propertyfile argument";
String msg = "You must specify a property filename when "
+ "using the -propertyfile argument";
throw new BuildException(msg);
}
} else if (arg.equals("-k") || arg.equals("-keep-going")) {
@@ -483,6 +483,7 @@ public class Main implements AntMain {
try {
fis.close();
} catch (IOException e) {
// ignore
}
}
}
@@ -502,7 +503,8 @@ public class Main implements AntMain {
}

if (logTo != null) {
out = err = logTo;
out = logTo;
err = logTo;
System.setOut(out);
System.setErr(out);
}
@@ -605,8 +607,8 @@ public class Main implements AntMain {
// use a system manager that prevents from System.exit()
// only in JDK > 1.1
SecurityManager oldsm = null;
if (!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_0) &&
!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1)) {
if (!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_0)
&& !JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1)) {
oldsm = System.getSecurityManager();

//SecurityManager can not be installed here for backwards


+ 2
- 2
src/main/org/apache/tools/ant/PathTokenizer.java View File

@@ -176,8 +176,8 @@ public class PathTokenizer {
// make sure we aren't going to get the path separator next
if (!nextToken.equals(File.pathSeparator)) {
if (nextToken.equals(":")) {
if (!token.startsWith("/") && !token.startsWith("\\")
&& !token.startsWith(".")
if (!token.startsWith("/") && !token.startsWith("\\")
&& !token.startsWith(".")
&& !token.startsWith("..")) {
// it indeed is a drive spec, get the next bit
String oneMore = tokenizer.nextToken().trim();


+ 2
- 1
src/main/org/apache/tools/ant/Project.java View File

@@ -2029,7 +2029,8 @@ public class Project {
// Should move to a separate public class - and have API to add
// listeners, etc.
private static class AntRefTable extends Hashtable {
Project project;
private Project project;

public AntRefTable(Project project) {
super();
this.project = project;


+ 5
- 3
src/main/org/apache/tools/ant/ProjectHelper.java View File

@@ -132,7 +132,7 @@ public class ProjectHelper {
// Since the tree is composed of UE and RC - it can be reused !
// protected Hashtable processedFiles=new Hashtable();

protected Vector importStack = new Vector();
private Vector importStack = new Vector();

// Temporary - until we figure a better API
/** EXPERIMENTAL WILL_CHANGE
@@ -146,6 +146,8 @@ public class ProjectHelper {
* Import stack.
* Used to keep track of imported files. Error reporting should
* display the import path.
*
* @return the stack of import source objects.
*/
public Vector getImportStack() {
return importStack;
@@ -229,8 +231,8 @@ public class ProjectHelper {
String helperClassName = rd.readLine();
rd.close();

if (helperClassName != null &&
!"".equals(helperClassName)) {
if (helperClassName != null
&& !"".equals(helperClassName)) {

helper = newHelper(helperClassName);
}


+ 2
- 2
src/main/org/apache/tools/ant/RuntimeConfigurable.java View File

@@ -349,8 +349,8 @@ public class RuntimeConfigurable implements Serializable {
}

// Configure the object
Object target = (wrappedObject instanceof TypeAdapter) ?
((TypeAdapter) wrappedObject).getProxy() : wrappedObject;
Object target = (wrappedObject instanceof TypeAdapter)
? ((TypeAdapter) wrappedObject).getProxy() : wrappedObject;

//PropertyHelper ph=PropertyHelper.getPropertyHelper(p);
IntrospectionHelper ih =


+ 5
- 5
src/main/org/apache/tools/ant/Target.java View File

@@ -77,12 +77,12 @@ public class Target implements TaskContainer {
/** The "unless" condition to test on execution. */
private String unlessCondition = "";
/** List of targets this target is dependent on. */
private List/*<String>*/ dependencies = null;
private List dependencies = null;
/** Children of this target (tasks and data types). */
private List/*<Task|RuntimeConfigurable>*/ children = new ArrayList(5);
private List children = new ArrayList();
/** Position in task list */
private int taskPosition = 0;
/** Project this target belongs to. */
private Project project;
/** Description of this target, if any. */
@@ -180,7 +180,7 @@ public class Target implements TaskContainer {
public void startImportedTasks() {
importedTasks = new ArrayList();
}
/**
* Adds a task to this target.
*
@@ -228,7 +228,7 @@ public class Target implements TaskContainer {
}
}

return (Task[])tasks.toArray(new Task[tasks.size()]);
return (Task[]) tasks.toArray(new Task[tasks.size()]);
}

/**


+ 4
- 2
src/main/org/apache/tools/ant/Task.java View File

@@ -204,7 +204,8 @@ public abstract class Task extends ProjectComponent {
*
* @exception BuildException if someting goes wrong with the build
*/
public void init() throws BuildException {}
public void init() throws BuildException {
}

/**
* Called by the project to let the task do its work. This method may be
@@ -215,7 +216,8 @@ public abstract class Task extends ProjectComponent {
*
* @exception BuildException if something goes wrong with the build
*/
public void execute() throws BuildException {}
public void execute() throws BuildException {
}

/**
* Returns the file/location where this task was defined.


+ 14
- 7
src/main/org/apache/tools/ant/TypeAdapter.java View File

@@ -60,17 +60,21 @@ package org.apache.tools.ant;
* @author costin@dnt.ro
* @author peter reilly
*/
public interface TypeAdapter {
public interface TypeAdapter {

/**
* Sets the project
*
* @param p the project instance.
*/
public void setProject(Project p);
void setProject(Project p);

/**
* Gets the project
*
* @return the project instance.
*/
public Project getProject();
Project getProject();

/**
* Sets the proxy object, whose methods are going to be
@@ -81,17 +85,20 @@ public interface TypeAdapter {
*
* @param o The target object. Must not be <code>null</code>.
*/
public void setProxy(Object o);
void setProxy(Object o);

/**
* Returns the proxy object.
*
* @return the target proxy object
*/
public Object getProxy();
Object getProxy();

/**
* Check if the proxy class matchs the criteria
* Check if the proxy class is compatible with this adapter - i.e.
* the adapter will be able to adapt instances of the give class.
*
* @patam proxyClass the class to be checked.
*/
public void checkProxyClass(Class proxyClass);
void checkProxyClass(Class proxyClass);
}

+ 4
- 5
src/main/org/apache/tools/ant/UnknownElement.java View File

@@ -439,8 +439,9 @@ public class UnknownElement extends Task {
*/
public String getTaskName() {
//return elementName;
return realThing == null || !(realThing instanceof Task) ?
super.getTaskName() : ((Task) realThing).getTaskName();
return realThing == null
|| !(realThing instanceof Task) ? super.getTaskName()
: ((Task) realThing).getTaskName();
}

/**
@@ -481,6 +482,4 @@ public class UnknownElement extends Task {
}
return false;
}


}// UnknownElement
}

+ 2
- 1
src/main/org/apache/tools/ant/XmlLogger.java View File

@@ -92,7 +92,7 @@ public class XmlLogger implements BuildLogger {
private PrintStream outStream;

/** DocumentBuilder to use when creating the document to start with. */
private static final DocumentBuilder builder = getDocumentBuilder();
private static DocumentBuilder builder = getDocumentBuilder();

/**
* Returns a default DocumentBuilder instance or throws an
@@ -230,6 +230,7 @@ public class XmlLogger implements BuildLogger {
try {
out.close();
} catch (IOException e) {
// ignore
}
}
}


+ 2
- 2
src/main/org/apache/tools/ant/helper/ProjectHelper2.java View File

@@ -104,7 +104,7 @@ public class ProjectHelper2 extends ProjectHelper {

public void parse(Project project, Object source)
throws BuildException {
this.getImportStack().addElement(source);
getImportStack().addElement(source);
//System.out.println("Adding " + source);
AntXMLContext context = null;
context = (AntXMLContext) project.getReference("ant.parsing.context");
@@ -116,7 +116,7 @@ public class ProjectHelper2 extends ProjectHelper {
project.addReference("ant.targets", context.getTargets());
}

if (this.getImportStack().size() > 1) {
if (getImportStack().size() > 1) {
// we are in an imported file.
context.setIgnoreProjectTag(true);
context.getCurrentTarget().startImportedTasks();


+ 18
- 3
src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java View File

@@ -76,6 +76,12 @@ public class LogOutputStream extends OutputStream {
/** Initial buffer size. */
private static final int INTIAL_SIZE = 132;

/** Carriage return */
private static final int CR = 0x0d;

/** Linefeed */
private static final int LF = 0x0a;

private ByteArrayOutputStream buffer
= new ByteArrayOutputStream(INTIAL_SIZE);
private boolean skip = false;
@@ -162,13 +168,22 @@ public class LogOutputStream extends OutputStream {
return level;
}

public void write(byte b[], int off, int len) throws IOException {
/**
* Write a block of characters to the output stream
*
* @param b the array containg the data
* @param off the offset into the array where data starts
* @param len the length of block
*
* @throws IOException if the data cannot be written into the stream.
*/
public void write(byte[] b, int off, int len) throws IOException {
// find the line breaks and pass other chars through in blocks
int offset = off;
int blockStartOffset = offset;
int remaining = len;
while (remaining > 0) {
while (remaining > 0 && b[offset] != 0x0a && b[offset] != 0x0d) {
while (remaining > 0 && b[offset] != LF && b[offset] != CR) {
offset++;
remaining--;
}
@@ -177,7 +192,7 @@ public class LogOutputStream extends OutputStream {
if (blockLength > 0) {
buffer.write(b, blockStartOffset, blockLength);
}
while (remaining > 0 && (b[offset] == 0x0a || b[offset] == 0x0d)) {
while (remaining > 0 && (b[offset] == LF || b[offset] == CR)) {
write(b[offset]);
offset++;
remaining--;


+ 2
- 0
src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java View File

@@ -298,6 +298,7 @@ public class ANTLR extends Task {

public void execute() throws BuildException {
validateAttributes();

//TODO: use ANTLR to parse the grammar file to do this.
File generatedFile = getGeneratedFile();
boolean targetIsOutOfDate =
@@ -437,6 +438,7 @@ public class ANTLR extends Task {
/**
* Whether the antlr version is 2.7.2 (or higher).
*
* @return true if the version of Antlr present is 2.7.2 or later.
* @since Ant 1.6
*/
protected boolean is272() {


+ 2
- 2
src/main/org/apache/tools/ant/taskdefs/optional/Cab.java View File

@@ -177,8 +177,8 @@ public class Cab extends MatchingTask {
boolean upToDate = true;
for (int i = 0; i < files.size() && upToDate; i++) {
String file = files.elementAt(i).toString();
if (fileUtils.resolveFile(baseDir, file).lastModified() >
cabFile.lastModified()) {
if (fileUtils.resolveFile(baseDir, file).lastModified()
> cabFile.lastModified()) {
upToDate = false;
}
}


+ 5
- 2
src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java View File

@@ -296,7 +296,9 @@ public class EchoProperties extends Task {
if (null != in) {
in.close();
}
} catch (IOException ioe) {}
} catch (IOException ioe) {
//ignore
}
}
}

@@ -347,6 +349,7 @@ public class EchoProperties extends Task {
try {
os.close();
} catch (IOException e) {
//ignore
}
}
}
@@ -390,7 +393,7 @@ public class EchoProperties extends Task {
String name;
Enumeration e = props.propertyNames();
while (e.hasMoreElements()) {
name = (String)e.nextElement();
name = (String) e.nextElement();
Element propElement = doc.createElement(PROPERTY);
propElement.setAttribute(ATTR_NAME, name);
propElement.setAttribute(ATTR_VALUE, props.getProperty(name));


+ 167
- 87
src/main/org/apache/tools/ant/taskdefs/optional/IContract.java View File

@@ -53,8 +53,6 @@
*/
package org.apache.tools.ant.taskdefs.optional;



import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -84,7 +82,8 @@ import org.apache.tools.ant.types.Reference;
* iControl generates a control file that you can refer to
* from this task using the controlfile attribute.
* iContract is at
* <a href="http://www.reliable-systems.com/tools/">http://www.reliable-systems.com/tools/</a>
* <a href="http://www.reliable-systems.com/tools/">
* http://www.reliable-systems.com/tools/</a>
* <p/>
* Thanks to Rainer Schmitz for enhancements and comments.
*
@@ -104,55 +103,63 @@ import org.apache.tools.ant.types.Reference;
* </tr>
* <tr>
* <td valign="top">instrumentdir</td>
* <td valign="top">Indicates where the instrumented source files should go.</td>
* <td valign="top">Indicates where the instrumented source
* files should go.</td>
* <td valign="top" align="center">Yes</td>
* </tr>
* <tr>
* <td valign="top">repositorydir</td>
* <td valign="top">Indicates where the repository source files should go.</td>
* <td valign="top">Indicates where the repository source
* files should go.</td>
* <td valign="top" align="center">Yes</td>
* </tr>
* <tr>
* <td valign="top">builddir</td>
* <td valign="top">Indicates where the compiled instrumented classes should go.
* Defaults to the value of instrumentdir.
* <td valign="top">Indicates where the compiled instrumented
* classes should go. Defaults to the value of
* instrumentdir.
* </p>
* <em>NOTE:</em> Don't use the same directory for compiled instrumented classes
* and uninstrumented classes. It will break the dependency checking. (Classes will
* not be reinstrumented if you change them).</td>
* <em>NOTE:</em> Don't use the same directory for compiled
* instrumented classes and uninstrumented classes. It will break the
* dependency checking. (Classes will not be reinstrumented if you
* change them).</td>
* <td valign="top" align="center">No</td>
* </tr>
* <tr>
* <td valign="top">repbuilddir</td>
* <td valign="top">Indicates where the compiled repository classes should go.
* Defaults to the value of repositorydir.</td>
* <td valign="top">Indicates where the compiled repository classes
* should go. Defaults to the value of repositorydir.</td>
* <td valign="top" align="center">No</td>
* </tr>
* <tr>
* <td valign="top">pre</td>
* <td valign="top">Indicates whether or not to instrument for preconditions.
* Defaults to <code>true</code> unless controlfile is specified, in which case it
* defaults to <code>false</code>.</td>
* <td valign="top">Indicates whether or not to instrument for
* preconditions. Defaults to <code>true</code> unless
* controlfile is specified, in which case it defaults
* to <code>false</code>.</td>
* <td valign="top" align="center">No</td>
* </tr>
* <tr>
* <td valign="top">post</td>
* <td valign="top">Indicates whether or not to instrument for postconditions.
* Defaults to <code>true</code> unless controlfile is specified, in which case it
* defaults to <code>false</code>.</td>
* <td valign="top">Indicates whether or not to instrument for
* postconditions. Defaults to <code>true</code> unless
* controlfile is specified, in which case it defaults
* to <code>false</code>.</td>
* <td valign="top" align="center">No</td>
* </tr>
* <tr>
* <td valign="top">invariant</td>
* <td valign="top">Indicates whether or not to instrument for invariants.
* Defaults to <code>true</code> unless controlfile is specified, in which case it
* defaults to <code>false</code>.</td>
* Defaults to <code>true</code> unless controlfile is
* specified, in which case it defaults to
* <code>false</code>.</td>
* <td valign="top" align="center">No</td>
* </tr>
* <tr>
* <td valign="top">failthrowable</td>
* <td valign="top">The full name of the Throwable (Exception) that should be
* thrown when an assertion is violated. Defaults to <code>java.lang.Error</code></td>
* <td valign="top">The full name of the Throwable (Exception) that
* should be thrown when an assertion is violated.
* Defaults to <code>java.lang.Error</code></td>
* <td valign="top" align="center">No</td>
* </tr>
* <tr>
@@ -180,22 +187,28 @@ import org.apache.tools.ant.types.Reference;
* </tr>
* <tr>
* <td valign="top">controlfile</td>
* <td valign="top">The name of the control file to pass to iContract. Consider using iControl to generate the file.
* Default is not to pass a file. </td>
* <td valign="top" align="center">Only if <code>updateicontrol=true</code></td>
* <td valign="top">The name of the control file to pass to iContract.
* Consider using iControl to generate the file.
* Default is not to pass a file. </td>
* <td valign="top" align="center">
* Only if <code>updateicontrol=true</code></td>
* </tr>
* <tr>
* <td valign="top">classdir</td>
* <td valign="top">Indicates where compiled (unistrumented) classes are located.
* This is required in order to properly update the icontrol.properties file, not
* for instrumentation.</td>
* <td valign="top" align="center">Only if <code>updateicontrol=true</code></td>
* <td valign="top">Indicates where compiled (unistrumented) classes are
* located. This is required in order to properly update
* the icontrol.properties file, not for instrumentation.
* </td>
* <td valign="top" align="center">Only if
* <code>updateicontrol=true</code></td>
* </tr>
* <tr>
* <td valign="top">targets</td>
* <td valign="top">Name of the file that will be generated by this task, which lists all the
* classes that iContract will instrument. If specified, the file will not be deleted after execution.
* If not specified, a file will still be created, but it will be deleted after execution.</td>
* <td valign="top">Name of the file that will be generated by this task,
* which lists all the classes that iContract will
* instrument. If specified, the file will not be deleted
* after execution. If not specified, a file will still
* be created, but it will be deleted after execution.</td>
* <td valign="top" align="center">No</td>
* </tr>
* </table>
@@ -228,8 +241,9 @@ import org.apache.tools.ant.types.Reference;
*/
public class IContract extends MatchingTask {

private static final String ICONTROL_PROPERTIES_HEADER =
" You might want to set classRoot to point to your normal compilation class root directory.";
private static final String ICONTROL_PROPERTIES_HEADER
= "You might want to set classRoot to point to your normal "
+ "compilation class root directory.";

/** compiler to use for instrumenation */
private String icCompiler = "javac";
@@ -288,8 +302,12 @@ public class IContract extends MatchingTask {
private boolean invariant = true;
private boolean invariantModified = false;

/** Indicates whether or not to instrument all files regardless of timestamp */
// can't be explicitly set, is set if control file exists and is newer than any source file
/**
* Indicates whether or not to instrument all files regardless of timestamp
*
* Can't be explicitly set, is set if control file exists and is newer
* than any source file
*/
private boolean instrumentall = false;

/**
@@ -534,13 +552,14 @@ public class IContract extends MatchingTask {
}


// We want to be notified if iContract jar is missing. This makes life easier for the user
// who didn't understand that iContract is a separate library (duh!)
// We want to be notified if iContract jar is missing.
// This makes life easier for the user who didn't understand
// that iContract is a separate library (duh!)
getProject().addBuildListener(new IContractPresenceDetector());

// Prepare the directories for iContract. iContract will make them if they
// don't exist, but for some reason I don't know, it will complain about the REP files
// afterwards
// Prepare the directories for iContract. iContract will make
// them if they don't exist, but for some reason I don't know,
// it will complain about the REP files afterwards
Mkdir mkdir = (Mkdir) getProject().createTask("mkdir");

mkdir.setDir(instrumentDir);
@@ -553,42 +572,60 @@ public class IContract extends MatchingTask {
// Set the classpath that is needed for regular Javac compilation
Path baseClasspath = createClasspath();

// Might need to add the core classes if we're not using Sun's Javac (like Jikes)
// Might need to add the core classes if we're not using
// Sun's Javac (like Jikes)
String compiler = getProject().getProperty("build.compiler");
ClasspathHelper classpathHelper = new ClasspathHelper(compiler);

classpathHelper.modify(baseClasspath);

// Create the classpath required to compile the sourcefiles BEFORE instrumentation
// Create the classpath required to compile the sourcefiles
// BEFORE instrumentation
Path beforeInstrumentationClasspath = ((Path) baseClasspath.clone());

beforeInstrumentationClasspath.append(new Path(getProject(),
srcDir.getAbsolutePath()));

// Create the classpath required to compile the sourcefiles AFTER instrumentation
// Create the classpath required to compile the sourcefiles
// AFTER instrumentation
Path afterInstrumentationClasspath = ((Path) baseClasspath.clone());

afterInstrumentationClasspath.append(new Path(getProject(), instrumentDir.getAbsolutePath()));
afterInstrumentationClasspath.append(new Path(getProject(), repositoryDir.getAbsolutePath()));
afterInstrumentationClasspath.append(new Path(getProject(), srcDir.getAbsolutePath()));
afterInstrumentationClasspath.append(new Path(getProject(), buildDir.getAbsolutePath()));
afterInstrumentationClasspath.append(new Path(getProject(),
instrumentDir.getAbsolutePath()));
afterInstrumentationClasspath.append(new Path(getProject(),
repositoryDir.getAbsolutePath()));
afterInstrumentationClasspath.append(new Path(getProject(),
srcDir.getAbsolutePath()));
afterInstrumentationClasspath.append(new Path(getProject(),
buildDir.getAbsolutePath()));

// Create the classpath required to automatically compile the repository files
// Create the classpath required to automatically compile the
// repository files
Path repositoryClasspath = ((Path) baseClasspath.clone());

repositoryClasspath.append(new Path(getProject(), instrumentDir.getAbsolutePath()));
repositoryClasspath.append(new Path(getProject(), srcDir.getAbsolutePath()));
repositoryClasspath.append(new Path(getProject(), repositoryDir.getAbsolutePath()));
repositoryClasspath.append(new Path(getProject(), buildDir.getAbsolutePath()));
repositoryClasspath.append(new Path(getProject(),
instrumentDir.getAbsolutePath()));
repositoryClasspath.append(new Path(getProject(),
srcDir.getAbsolutePath()));
repositoryClasspath.append(new Path(getProject(),
repositoryDir.getAbsolutePath()));
repositoryClasspath.append(new Path(getProject(),
buildDir.getAbsolutePath()));

// Create the classpath required for iContract itself
Path iContractClasspath = ((Path) baseClasspath.clone());

iContractClasspath.append(new Path(getProject(), System.getProperty("java.home") + File.separator + ".." + File.separator + "lib" + File.separator + "tools.jar"));
iContractClasspath.append(new Path(getProject(), srcDir.getAbsolutePath()));
iContractClasspath.append(new Path(getProject(), repositoryDir.getAbsolutePath()));
iContractClasspath.append(new Path(getProject(), instrumentDir.getAbsolutePath()));
iContractClasspath.append(new Path(getProject(), buildDir.getAbsolutePath()));
iContractClasspath.append(new Path(getProject(),
System.getProperty("java.home") + File.separator + ".."
+ File.separator + "lib" + File.separator + "tools.jar"));
iContractClasspath.append(new Path(getProject(),
srcDir.getAbsolutePath()));
iContractClasspath.append(new Path(getProject(),
repositoryDir.getAbsolutePath()));
iContractClasspath.append(new Path(getProject(),
instrumentDir.getAbsolutePath()));
iContractClasspath.append(new Path(getProject(),
buildDir.getAbsolutePath()));

// Create a forked java process
Java iContract = (Java) getProject().createTask("java");
@@ -603,18 +640,36 @@ public class IContract extends MatchingTask {

args.append(directiveString());
args.append("-v").append(verbosity).append(" ");
args.append("-b").append("\"").append(icCompiler).append(" -classpath ").append(beforeInstrumentationClasspath).append("\" ");
args.append("-c").append("\"").append(icCompiler).append(" -classpath ").append(afterInstrumentationClasspath).append(" -d ").append(buildDir).append("\" ");
args.append("-n").append("\"").append(icCompiler).append(" -classpath ").append(repositoryClasspath).append("\" ");

args.append("-b").append("\"").append(icCompiler);
args.append(" -classpath ").append(beforeInstrumentationClasspath);
args.append("\" ");

args.append("-c").append("\"").append(icCompiler);
args.append(" -classpath ").append(afterInstrumentationClasspath);
args.append(" -d ").append(buildDir).append("\" ");

args.append("-n").append("\"").append(icCompiler);
args.append(" -classpath ").append(repositoryClasspath);
args.append("\" ");

args.append("-d").append(failThrowable).append(" ");
args.append("-o").append(instrumentDir).append(File.separator).append("@p").append(File.separator).append("@f.@e ");
args.append("-k").append(repositoryDir).append(File.separator).append("@p ");

args.append("-o").append(instrumentDir).append(File.separator);
args.append("@p").append(File.separator).append("@f.@e ");

args.append("-k").append(repositoryDir).append(File.separator);
args.append("@p ");

args.append(quiet ? "-q " : "");
args.append(instrumentall ? "-a " : "");// reinstrument everything if controlFile exists and is newer than any class
// reinstrument everything if controlFile exists and is newer
// than any class
args.append(instrumentall ? "-a " : "");
args.append("@").append(targets.getAbsolutePath());
iContract.createArg().setLine(args.toString());

//System.out.println( "JAVA -classpath " + iContractClasspath + " com.reliablesystems.iContract.Tool " + args.toString() );
//System.out.println( "JAVA -classpath " + iContractClasspath
// + " com.reliablesystems.iContract.Tool " + args.toString() );

// update iControlProperties if it's set.
if (updateIcontrol) {
@@ -624,17 +679,24 @@ public class IContract extends MatchingTask {
// to read existing propertiesfile
iControlProps.load(new FileInputStream("icontrol.properties"));
} catch (IOException e) {
log("File icontrol.properties not found. That's ok. Writing a default one.");
log("File icontrol.properties not found. That's ok. "
+ "Writing a default one.");
}
iControlProps.setProperty("sourceRoot", srcDir.getAbsolutePath());
iControlProps.setProperty("classRoot", classDir.getAbsolutePath());
iControlProps.setProperty("classpath", afterInstrumentationClasspath.toString());
iControlProps.setProperty("controlFile", controlFile.getAbsolutePath());
iControlProps.setProperty("targetsFile", targets.getAbsolutePath());
iControlProps.setProperty("sourceRoot",
srcDir.getAbsolutePath());
iControlProps.setProperty("classRoot",
classDir.getAbsolutePath());
iControlProps.setProperty("classpath",
afterInstrumentationClasspath.toString());
iControlProps.setProperty("controlFile",
controlFile.getAbsolutePath());
iControlProps.setProperty("targetsFile",
targets.getAbsolutePath());

try {
// to read existing propertiesfile
iControlProps.store(new FileOutputStream("icontrol.properties"), ICONTROL_PROPERTIES_HEADER);
iControlProps.store(new FileOutputStream("icontrol.properties"),
ICONTROL_PROPERTIES_HEADER);
log("Updated icontrol.properties");
} catch (IOException e) {
log("Couldn't write icontrol.properties.");
@@ -646,11 +708,14 @@ public class IContract extends MatchingTask {

if (result != 0) {
if (iContractMissing) {
log("iContract can't be found on your classpath. Your classpath is:");
log("iContract can't be found on your classpath. "
+ "Your classpath is:");
log(classpath.toString());
log("If you don't have the iContract jar, go get it at http://www.reliable-systems.com/tools/");
log("If you don't have the iContract jar, go get it at "
+ "http://www.reliable-systems.com/tools/");
}
throw new BuildException("iContract instrumentation failed. Code=" + result);
throw new BuildException("iContract instrumentation failed. "
+ "Code = " + result);
}
} else {
// not dirty
@@ -662,22 +727,28 @@ public class IContract extends MatchingTask {
/** Checks that the required attributes are set. */
private void preconditions() throws BuildException {
if (srcDir == null) {
throw new BuildException("srcdir attribute must be set!", getLocation());
throw new BuildException("srcdir attribute must be set!",
getLocation());
}
if (!srcDir.exists()) {
throw new BuildException("srcdir \"" + srcDir.getPath() + "\" does not exist!", getLocation());
throw new BuildException("srcdir \"" + srcDir.getPath()
+ "\" does not exist!", getLocation());
}
if (instrumentDir == null) {
throw new BuildException("instrumentdir attribute must be set!", getLocation());
throw new BuildException("instrumentdir attribute must be set!",
getLocation());
}
if (repositoryDir == null) {
throw new BuildException("repositorydir attribute must be set!", getLocation());
throw new BuildException("repositorydir attribute must be set!",
getLocation());
}
if (updateIcontrol && classDir == null) {
throw new BuildException("classdir attribute must be specified when updateicontrol=true!", getLocation());
throw new BuildException("classdir attribute must be specified "
+ "when updateicontrol=true!", getLocation());
}
if (updateIcontrol && controlFile == null) {
throw new BuildException("controlfile attribute must be specified when updateicontrol=true!", getLocation());
throw new BuildException("controlfile attribute must be specified "
+ "when updateicontrol=true!", getLocation());
}
}

@@ -706,10 +777,12 @@ public class IContract extends MatchingTask {
try {
if (targets == null) {
targets = new File("targets");
log("Warning: targets file not specified. generating file: " + targets.getName());
log("Warning: targets file not specified. generating file: "
+ targets.getName());
writeTargets = true;
} else if (!targets.exists()) {
log("Specified targets file doesn't exist. generating file: " + targets.getName());
log("Specified targets file doesn't exist. generating file: "
+ targets.getName());
writeTargets = true;
}
if (writeTargets) {
@@ -733,7 +806,9 @@ public class IContract extends MatchingTask {
}

if (!classFile.exists() || srcFile.lastModified() > classFile.lastModified()) {
//log( "Found a file newer than the instrumentDir class file: " + srcFile.getPath() + " newer than " + classFile.getPath() + ". Running iContract again..." );
//log( "Found a file newer than the instrumentDir class file: "
// + srcFile.getPath() + " newer than " + classFile.getPath()
// + ". Running iContract again..." );
dirty = true;
}
}
@@ -761,7 +836,10 @@ public class IContract extends MatchingTask {
if (files[i].endsWith(".class")) {
if (controlFileTime > srcFile.lastModified()) {
if (!dirty) {
log("Control file " + controlFile.getAbsolutePath() + " has been updated. Instrumenting all files...");
log("Control file "
+ controlFile.getAbsolutePath()
+ " has been updated. "
+ "Instrumenting all files...");
}
dirty = true;
instrumentall = true;
@@ -771,7 +849,8 @@ public class IContract extends MatchingTask {
}
}
} catch (Throwable t) {
throw new BuildException("Got an interesting exception:" + t.getMessage());
throw new BuildException("Got an interesting exception:"
+ t.getMessage());
}
}

@@ -876,7 +955,8 @@ public class IContract extends MatchingTask {

// make it public
public void modify(Path path) {
// depending on what compiler to use, set the includeJavaRuntime flag
// depending on what compiler to use, set the
// includeJavaRuntime flag
if ("jikes".equals(compiler)) {
icCompiler = compiler;
includeJavaRuntime = true;


+ 15
- 9
src/main/org/apache/tools/ant/taskdefs/optional/Javah.java View File

@@ -275,25 +275,31 @@ public class Javah extends Task {
}

/**
* Executes the task.
* Execute the task
*
* @throws BuildException is there is a problem in the task execution.
*/
public void execute() throws BuildException {
// first off, make sure that we've got a srcdir

if ((cls == null) && (classes.size() == 0)) {
throw new BuildException("class attribute must be set!", getLocation());
throw new BuildException("class attribute must be set!",
getLocation());
}

if ((cls != null) && (classes.size() > 0)) {
throw new BuildException("set class attribute or class element, not both.", getLocation());
throw new BuildException("set class attribute or class element, "
+ "not both.", getLocation());
}

if (destDir != null) {
if (!destDir.isDirectory()) {
throw new BuildException("destination directory \"" + destDir + "\" does not exist or is not a directory", getLocation());
throw new BuildException("destination directory \"" + destDir
+ "\" does not exist or is not a directory", getLocation());
}
if (outputFile != null) {
throw new BuildException("destdir and outputFile are mutually exclusive", getLocation());
throw new BuildException("destdir and outputFile are mutually "
+ "exclusive", getLocation());
}
}

@@ -305,8 +311,8 @@ public class Javah extends Task {

String compiler = getProject().getProperty("build.compiler");
if (compiler == null) {
if (!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1) &&
!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_2)) {
if (!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1)
&& !JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_2)) {
compiler = "modern";
} else {
compiler = "classic";
@@ -357,9 +363,9 @@ public class Javah extends Task {
Object javahMain = constructor.newInstance(new Object[] {cmd.getArguments()});

// find the run method
Method runMethod = javahMainClass.getMethod("run",new Class[0]);
Method runMethod = javahMainClass.getMethod("run", new Class[0]);

runMethod.invoke(javahMain,new Object[0]);
runMethod.invoke(javahMain, new Object[0]);
} catch (Exception ex) {
if (ex instanceof BuildException) {
throw (BuildException) ex;


+ 13
- 2
src/main/org/apache/tools/ant/taskdefs/optional/Native2Ascii.java View File

@@ -135,6 +135,10 @@ public class Native2Ascii extends MatchingTask {

/**
* Defines the FileNameMapper to use (nested mapper element).
*
* @return the mapper to use for file name translations.
*
* @throws BuildException if more than one mapper is defined.
*/
public Mapper createMapper() throws BuildException {
if (mapper != null) {
@@ -145,6 +149,11 @@ public class Native2Ascii extends MatchingTask {
return mapper;
}

/**
* Execute the task
*
* @throws BuildException is there is a problem in the task execution.
*/
public void execute() throws BuildException {

DirectoryScanner scanner = null; // Scanner to find our inputs
@@ -252,8 +261,10 @@ public class Native2Ascii extends MatchingTask {

private class ExtMapper implements FileNameMapper {

public void setFrom(String s) {}
public void setTo(String s) {}
public void setFrom(String s) {
}
public void setTo(String s) {
}

public String[] mapFileName(String fileName) {
int lastDot = fileName.lastIndexOf('.');


+ 35
- 22
src/main/org/apache/tools/ant/taskdefs/optional/NetRexxC.java View File

@@ -163,10 +163,14 @@ public class NetRexxC extends MatchingTask {
private boolean suppressDeprecation = false;

// constants for the messages to suppress by flags and their corresponding properties
static final String MSG_METHOD_ARGUMENT_NOT_USED = "Warning: Method argument is not used";
static final String MSG_PRIVATE_PROPERTY_NOT_USED = "Warning: Private property is defined but not used";
static final String MSG_VARIABLE_NOT_USED = "Warning: Variable is set but not used";
static final String MSG_EXCEPTION_NOT_SIGNALLED = "is in SIGNALS list but is not signalled within the method";
static final String MSG_METHOD_ARGUMENT_NOT_USED
= "Warning: Method argument is not used";
static final String MSG_PRIVATE_PROPERTY_NOT_USED
= "Warning: Private property is defined but not used";
static final String MSG_VARIABLE_NOT_USED
= "Warning: Variable is set but not used";
static final String MSG_EXCEPTION_NOT_SIGNALLED
= "is in SIGNALS list but is not signalled within the method";
static final String MSG_DEPRECATION = "has been deprecated";

// other implementation variables
@@ -290,7 +294,7 @@ public class NetRexxC extends MatchingTask {
* false.
*/
public void setJava(boolean java) {
log( "The attribute java is currently unused.", Project.MSG_WARN );
log("The attribute java is currently unused.", Project.MSG_WARN);
}


@@ -527,7 +531,6 @@ public class NetRexxC extends MatchingTask {
* with arguments like -Dant.netrexxc.verbose=verbose5 one can easily take
* control of all netrexxc-tasks.
*/
// Sorry for the formatting, but that way it's easier to keep in sync with the private properties (line by line).
public void init() {
String p;

@@ -736,7 +739,7 @@ public class NetRexxC extends MatchingTask {
j++;
}
// create a single array of arguments for the compiler
String compileArgs[] = new String[compileOptionsArray.length + fileListArray.length];
String[] compileArgs = new String[compileOptionsArray.length + fileListArray.length];

for (int i = 0; i < compileOptionsArray.length; i++) {
compileArgs[i] = compileOptionsArray[i];
@@ -782,38 +785,48 @@ public class NetRexxC extends MatchingTask {
String l;
BufferedReader in = new BufferedReader(new StringReader(out.toString()));

log("replacing destdir '" + ddir + "' through sourcedir '" + sdir + "'", Project.MSG_VERBOSE);
log("replacing destdir '" + ddir + "' through sourcedir '"
+ sdir + "'", Project.MSG_VERBOSE);
while ((l = in.readLine()) != null) {
int idx;

while (doReplace && ((idx = l.indexOf(ddir)) != -1)) {// path is mentioned in the message
while (doReplace && ((idx = l.indexOf(ddir)) != -1)) {
// path is mentioned in the message
l = (new StringBuffer(l)).replace(idx, idx + dlen, sdir).toString();
}
// verbose level logging for suppressed messages
if (suppressMethodArgumentNotUsed && l.indexOf(MSG_METHOD_ARGUMENT_NOT_USED) != -1) {
if (suppressMethodArgumentNotUsed
&& l.indexOf(MSG_METHOD_ARGUMENT_NOT_USED) != -1) {
log(l, Project.MSG_VERBOSE);
} else if (suppressPrivatePropertyNotUsed && l.indexOf(MSG_PRIVATE_PROPERTY_NOT_USED) != -1) {
} else if (suppressPrivatePropertyNotUsed
&& l.indexOf(MSG_PRIVATE_PROPERTY_NOT_USED) != -1) {
log(l, Project.MSG_VERBOSE);
} else if (suppressVariableNotUsed && l.indexOf(MSG_VARIABLE_NOT_USED) != -1) {
} else if (suppressVariableNotUsed
&& l.indexOf(MSG_VARIABLE_NOT_USED) != -1) {
log(l, Project.MSG_VERBOSE);
} else if (suppressExceptionNotSignalled && l.indexOf(MSG_EXCEPTION_NOT_SIGNALLED) != -1) {
} else if (suppressExceptionNotSignalled
&& l.indexOf(MSG_EXCEPTION_NOT_SIGNALLED) != -1) {
log(l, Project.MSG_VERBOSE);
} else if (suppressDeprecation && l.indexOf(MSG_DEPRECATION) != -1) {
} else if (suppressDeprecation
&& l.indexOf(MSG_DEPRECATION) != -1) {
log(l, Project.MSG_VERBOSE);
} else if (l.indexOf("Error:") != -1) {// error level logging for compiler errors
} else if (l.indexOf("Error:") != -1) {
// error level logging for compiler errors
log(l, Project.MSG_ERR);
} else if (l.indexOf("Warning:") != -1) {// warning for all warning messages
} else if (l.indexOf("Warning:") != -1) {
// warning for all warning messages
log(l, Project.MSG_WARN);
} else {
log(l, Project.MSG_INFO);// info level for the rest.
log(l, Project.MSG_INFO); // info level for the rest.
}
}
if (rc > 1) {
throw new BuildException("Compile failed, messages should have been provided.");
throw new BuildException("Compile failed, messages should "
+ "have been provided.");
}
} catch (IOException ioe) {
throw new BuildException("Unexpected IOException while playing with Strings",
ioe);
throw new BuildException("Unexpected IOException while "
+ "playing with Strings", ioe);
} finally {
// need to reset java.class.path property
// since the NetRexx compiler has no option for the classpath
@@ -902,8 +915,8 @@ public class NetRexxC extends MatchingTask {
target.append(File.pathSeparator);
target.append(f.getAbsolutePath());
} else {
log("Dropping from classpath: " +
f.getAbsolutePath(), Project.MSG_VERBOSE);
log("Dropping from classpath: "
+ f.getAbsolutePath(), Project.MSG_VERBOSE);
}
}



+ 12
- 17
src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java View File

@@ -98,7 +98,8 @@ import org.apache.tools.ant.types.EnumeratedAttribute;
*The &lt;propertyfile&gt; task must have:<br>
* <ul><li>file</li></ul>
*Other parameters are:<br>
* <ul><li>comment, key, operation, type and value (the final four being eliminated shortly)</li></ul>
* <ul><li>comment, key, operation, type and value (the final four being
* eliminated shortly)</li></ul>
*
*The &lt;entry&gt; task must have:<br>
* <ul><li>key</li></ul>
@@ -253,7 +254,9 @@ public class PropertyFile extends Task {
if (bos != null) {
try {
bos.close();
} catch (IOException ioex) {}
} catch (IOException ioex) {
// ignore
}
}
}
}
@@ -506,8 +509,8 @@ public class PropertyFile extends Task {
* fields
*/
private void checkParameters() throws BuildException {
if (type == Type.STRING_TYPE &&
operation == Operation.DECREMENT_OPER) {
if (type == Type.STRING_TYPE
&& operation == Operation.DECREMENT_OPER) {
throw new BuildException("- is not suported for string "
+ "properties (key:" + key + ")");
}
@@ -518,8 +521,7 @@ public class PropertyFile extends Task {
if (key == null) {
throw new BuildException("key is mandatory");
}
if (type == Type.STRING_TYPE &&
pattern != null) {
if (type == Type.STRING_TYPE && pattern != null) {
throw new BuildException("pattern is not suported for string "
+ "properties (key:" + key + ")");
}
@@ -631,16 +633,9 @@ public class PropertyFile extends Task {
private static final String MONTH = "month";
private static final String YEAR = "year";

private static final String[] units = {
MILLISECOND,
SECOND,
MINUTE,
HOUR,
DAY,
WEEK,
MONTH,
YEAR
};
private static final String[] UNITS
= {MILLISECOND, SECOND, MINUTE, HOUR,
DAY, WEEK, MONTH, YEAR };

private Hashtable calendarFields = new Hashtable();

@@ -663,7 +658,7 @@ public class PropertyFile extends Task {
}

public String[] getValues() {
return units;
return UNITS;
}
}
}

+ 11
- 1
src/main/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java View File

@@ -98,7 +98,9 @@ public class RenameExtensions extends MatchingTask {

/**
* The string that files must end in to be renamed
**/
*
* @param from the extension of files being renamed.
*/
public void setFromExtension(String from) {
fromExtension = from;
}
@@ -106,6 +108,8 @@ public class RenameExtensions extends MatchingTask {
/**
* The string that renamed files will end with on
* completion
*
* @param to the extension of the renamed files.
*/
public void setToExtension(String to) {
toExtension = to;
@@ -114,6 +118,8 @@ public class RenameExtensions extends MatchingTask {
/**
* store replace attribute - this determines whether the target file
* should be overwritten if present
*
* @param replace if true overwrite any target files that exist.
*/
public void setReplace(boolean replace) {
this.replace = replace;
@@ -121,6 +127,8 @@ public class RenameExtensions extends MatchingTask {

/**
* Set the source dir to find the files to be renamed.
*
* @param srcDir the source directory.
*/
public void setSrcDir(File srcDir) {
this.srcDir = srcDir;
@@ -128,6 +136,8 @@ public class RenameExtensions extends MatchingTask {

/**
* Executes the task.
*
* @throws BuildException is there is a problem in the task execution.
*/
public void execute() throws BuildException {



+ 18
- 12
src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java View File

@@ -220,9 +220,11 @@ public class ReplaceRegExp extends Task {
* <li>g : Global replacement. Replace all occurences found
* <li>i : Case Insensitive. Do not consider case in the match
* <li>m : Multiline. Treat the string as multiple lines of input,
* using "^" and "$" as the start or end of any line, respectively, rather than start or end of string.
* using "^" and "$" as the start or end of any line, respectively,
* rather than start or end of string.
* <li> s : Singleline. Treat the string as a single line of input, using
* "." to match any character, including a newline, which normally, it would not match.
* "." to match any character, including a newline, which normally,
* it would not match.
*</ul>
*/
public void setFlags(String flags) {
@@ -334,13 +336,11 @@ public class ReplaceRegExp extends Task {

boolean changes = false;

log("Replacing pattern '" + regex.getPattern(getProject()) +
"' with '" + subs.getExpression(getProject()) +
"' in '" + f.getPath() + "'" +
(byline ? " by line" : "") +
(flags.length() > 0 ? " with flags: '" + flags + "'" : "") +
".",
Project.MSG_VERBOSE);
log("Replacing pattern '" + regex.getPattern(getProject())
+ "' with '" + subs.getExpression(getProject())
+ "' in '" + f.getPath() + "'" + (byline ? " by line" : "")
+ (flags.length() > 0 ? " with flags: '" + flags + "'" : "")
+ ".", Project.MSG_VERBOSE);

if (byline) {
StringBuffer linebuf = new StringBuffer();
@@ -450,6 +450,7 @@ public class ReplaceRegExp extends Task {
r.close();
}
} catch (Exception e) {
// ignore any secondary exceptions
}

try {
@@ -457,6 +458,7 @@ public class ReplaceRegExp extends Task {
w.close();
}
} catch (Exception e) {
// ignore any secondary exceptions
}
if (temp != null) {
temp.delete();
@@ -465,8 +467,12 @@ public class ReplaceRegExp extends Task {
}


public void execute()
throws BuildException {
/**
* Execute the task
*
* @throws BuildException is there is a problem in the task execution.
*/
public void execute() throws BuildException {
if (regex == null) {
throw new BuildException("No expression to match.");
}
@@ -516,7 +522,7 @@ public class ReplaceRegExp extends Task {
FileSet fs = (FileSet) (filesets.elementAt(i));
DirectoryScanner ds = fs.getDirectoryScanner(getProject());

String files[] = ds.getIncludedFiles();
String[] files = ds.getIncludedFiles();

for (int j = 0; j < files.length; j++) {
File f = new File(fs.getDir(getProject()), files[j]);


+ 19
- 4
src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java View File

@@ -126,6 +126,11 @@ public class Rpm extends Task {
*/
private File error;

/**
* Execute the task
*
* @throws BuildException is there is a problem in the task execution.
*/
public void execute() throws BuildException {

Commandline toExecute = new Commandline();
@@ -161,7 +166,9 @@ public class Rpm extends Task {
} else {
if (output != null) {
try {
outputstream = new PrintStream(new BufferedOutputStream(new FileOutputStream(output)));
BufferedOutputStream bos
= new BufferedOutputStream(new FileOutputStream(output));
outputstream = new PrintStream(bos);
} catch (IOException e) {
throw new BuildException(e, getLocation());
}
@@ -170,7 +177,9 @@ public class Rpm extends Task {
}
if (error != null) {
try {
errorstream = new PrintStream(new BufferedOutputStream(new FileOutputStream(error)));
BufferedOutputStream bos
= new BufferedOutputStream(new FileOutputStream(error));
errorstream = new PrintStream(bos);
} catch (IOException e) {
throw new BuildException(e, getLocation());
}
@@ -198,12 +207,16 @@ public class Rpm extends Task {
if (output != null) {
try {
outputstream.close();
} catch (IOException e) {}
} catch (IOException e) {
// ignore any secondary error
}
}
if (error != null) {
try {
errorstream.close();
} catch (IOException e) {}
} catch (IOException e) {
// ignore any secondary error
}
}
}
}
@@ -213,6 +226,8 @@ public class Rpm extends Task {
* subdirectories, SPECS, SOURCES, BUILD, SRPMS ; optional.
* If this isn't specified,
* the <tt>baseDir</tt> value is used
*
* @param td the directory containing the normal RPM directories.
*/
public void setTopDir(File td) {
this.topDir = td;


+ 8
- 8
src/main/org/apache/tools/ant/taskdefs/optional/Script.java View File

@@ -81,8 +81,8 @@ public class Script extends Task {
for (Enumeration e = dictionary.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();

boolean isValid = key.length() > 0 &&
Character.isJavaIdentifierStart(key.charAt(0));
boolean isValid = key.length() > 0
&& Character.isJavaIdentifierStart(key.charAt(0));

for (int i = 1; isValid && i < key.length(); i++) {
isValid = Character.isJavaIdentifierPart(key.charAt(i));
@@ -112,7 +112,7 @@ public class Script extends Task {

BSFManager manager = new BSFManager ();

for (Enumeration e = beans.keys() ; e.hasMoreElements() ;) {
for (Enumeration e = beans.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();
Object value = beans.get(key);
manager.declareBean(key, value, value.getClass());
@@ -137,7 +137,7 @@ public class Script extends Task {
/**
* Defines the language (required).
*
* @param msg Sets the value for the script variable.
* @param language the scripting language name for the script.
*/
public void setLanguage(String language) {
this.language = language;
@@ -146,7 +146,7 @@ public class Script extends Task {
/**
* Load the script from an external file ; optional.
*
* @param msg Sets the value for the script variable.
* @param fileName the name of the file containing the script source.
*/
public void setSrc(String fileName) {
File file = new File(fileName);
@@ -155,7 +155,7 @@ public class Script extends Task {
}

int count = (int) file.length();
byte data[] = new byte[count];
byte[] data = new byte[count];

try {
FileInputStream inStream = new FileInputStream(file);
@@ -169,9 +169,9 @@ public class Script extends Task {
}

/**
* The script text.
* Set the script text.
*
* @param msg Sets the value for the script variable.
* @param text a component of the script text to be added.
*/
public void addText(String text) {
this.script += text;


+ 1
- 2
src/main/org/apache/tools/ant/taskdefs/optional/StyleBook.java View File

@@ -70,8 +70,7 @@ import org.apache.tools.ant.taskdefs.Java;
* @author <a href="mailto:marcus.boerger@post.rwth-aachen.de">Marcus
* B&ouml;rger</a>
*/
public class StyleBook
extends Java {
public class StyleBook extends Java {
protected File m_targetDirectory;
protected File m_skinDirectory;
protected String m_loaderConfig;


+ 4
- 4
src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java View File

@@ -209,8 +209,8 @@ public class TraXLiaison implements XSLTLiaison, ErrorListener, XSLTLoggerAware
reader.setEntityResolver(entityResolver);
src = new SAXSource(reader, new InputSource(is));
} else {
throw new IllegalStateException("xcatalog specified, but " +
"parser doesn't support SAX");
throw new IllegalStateException("xcatalog specified, but "
+ "parser doesn't support SAX");
}
} else {
src = new StreamSource(is);
@@ -305,8 +305,8 @@ public class TraXLiaison implements XSLTLiaison, ErrorListener, XSLTLoggerAware

// specific attributes for the transformer
for (int i = 0; i < attributes.size(); i++) {
final Object[] pair = (Object[])attributes.elementAt(i);
tfactory.setAttribute((String)pair[0], pair[1]);
final Object[] pair = (Object[]) attributes.elementAt(i);
tfactory.setAttribute((String) pair[0], pair[1]);
}

if (uriResolver != null) {


+ 32
- 27
src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java View File

@@ -87,8 +87,10 @@ import org.xml.sax.helpers.ParserAdapter;
* Checks XML files are valid (or only well formed). The
* task uses the SAX2 parser implementation provided by JAXP by default
* (probably the one that is used by Ant itself), but one can specify any
* SAX1/2 parser if needed
* @author Raphael Pierquin <a href="mailto:raphael.pierquin@agisphere.com">raphael.pierquin@agisphere.com</a>
* SAX1/2 parser if needed.
*
* @author Raphael Pierquin <a href="mailto:raphael.pierquin@agisphere.com">
* raphael.pierquin@agisphere.com</a>
* @author Nick Pellow <a href="mailto:nick@svana.org">nick@svana.org</a>
*/
public class XMLValidateTask extends Task {
@@ -98,7 +100,7 @@ public class XMLValidateTask extends Task {
*/
private static FileUtils fu = FileUtils.newFileUtils();

protected static String INIT_FAILED_MSG =
protected static final String INIT_FAILED_MSG =
"Could not start xml validation: ";

// ant task properties
@@ -108,8 +110,10 @@ public class XMLValidateTask extends Task {
protected boolean lenient = false;
protected String readerClassName = null;

protected File file = null; // file to be validated
protected Vector filesets = new Vector(); // sets of file to be validated
/** file to be validated */
protected File file = null;
/** sets of file to be validated */
protected Vector filesets = new Vector();
protected Path classpath;


@@ -137,7 +141,6 @@ public class XMLValidateTask extends Task {
* parser yields an error.
*/
public void setFailOnError(boolean fail) {

failOnError = fail;
}

@@ -147,35 +150,35 @@ public class XMLValidateTask extends Task {
* If set to <code>true</true> (default), log a warn message for each SAX warn event.
*/
public void setWarn(boolean bool) {

warn = bool;
}

/**
* Specify whether the parser should be validating. Default is <code>true</code>.
* Specify whether the parser should be validating. Default
* is <code>true</code>.
* <p>
* If set to false, the validation will fail only if the parsed document is not well formed XML.
* If set to false, the validation will fail only if the parsed document
* is not well formed XML.
* <p>
* this option is ignored if the specified class with {@link #setClassName(String)} is not a SAX2
* XMLReader.
* this option is ignored if the specified class
* with {@link #setClassName(String)} is not a SAX2 XMLReader.
*/
public void setLenient(boolean bool) {

lenient = bool;
}

/**
* Specify the class name of the SAX parser to be used. (optional)
* @param className should be an implementation of SAX2 <code>org.xml.sax.XMLReader</code>
* or SAX2 <code>org.xml.sax.Parser</code>.
* <p> if className is an implementation of <code>org.xml.sax.Parser</code>, {@link #setLenient(boolean)},
* @param className should be an implementation of SAX2
* <code>org.xml.sax.XMLReader</code> or SAX2 <code>org.xml.sax.Parser</code>.
* <p> if className is an implementation of
* <code>org.xml.sax.Parser</code>, {@link #setLenient(boolean)},
* will be ignored.
* <p> if not set, the default will be used.
* @see org.xml.sax.XMLReader
* @see org.xml.sax.Parser
*/
public void setClassName(String className) {

readerClassName = className;
}

@@ -184,7 +187,6 @@ public class XMLValidateTask extends Task {
* Specify the classpath to be searched to load the parser (optional)
*/
public void setClasspath(Path classpath) {

if (this.classpath == null) {
this.classpath = classpath;
} else {
@@ -268,7 +270,8 @@ public class XMLValidateTask extends Task {

int fileProcessed = 0;
if (file == null && (filesets.size() == 0)) {
throw new BuildException("Specify at least one source - a file or a fileset.");
throw new BuildException("Specify at least one source - "
+ "a file or a fileset.");
}

initValidator();
@@ -293,7 +296,7 @@ public class XMLValidateTask extends Task {
DirectoryScanner ds = fs.getDirectoryScanner(getProject());
String[] files = ds.getIncludedFiles();

for (int j = 0; j < files.length ; j++) {
for (int j = 0; j < files.length; j++) {
File srcFile = new File(fs.getDir(getProject()), files[j]);
doValidate(srcFile);
fileProcessed++;
@@ -352,8 +355,8 @@ public class XMLValidateTask extends Task {
Project.MSG_VERBOSE);
} else {
throw new BuildException(INIT_FAILED_MSG
+ reader.getClass().getName()
+ " implements nor SAX1 Parser nor SAX2 XMLReader.");
+ reader.getClass().getName()
+ " implements nor SAX1 Parser nor SAX2 XMLReader.");
}
}

@@ -420,7 +423,8 @@ public class XMLValidateTask extends Task {

if (errorHandler.getFailure()) {
if (failOnError) {
throw new BuildException(afile + " is not a valid XML document.");
throw new BuildException(afile
+ " is not a valid XML document.");
} else {
log(afile + " is not a valid XML document", Project.MSG_ERR);
}
@@ -480,11 +484,12 @@ public class XMLValidateTask extends Task {
try {
int line = e.getLineNumber();
int col = e.getColumnNumber();
return new URL(sysID).getFile() +
(line == -1 ? "" : (":" + line +
(col == -1 ? "" : (":" + col)))) +
": " + e.getMessage();
return new URL(sysID).getFile()
+ (line == -1 ? "" : (":" + line
+ (col == -1 ? "" : (":" + col))))
+ ": " + e.getMessage();
} catch (MalformedURLException mfue) {
// ignore and just return exception message
}
}
return e.getMessage();
@@ -499,7 +504,7 @@ public class XMLValidateTask extends Task {
public class Attribute {
/** The name of the attribute to set.
*
* Valid attributes <a href=http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description">include.</a>
* Valid attributes <a href="http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description">include.</a>
*/
private String attributeName = null;



+ 9
- 3
src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java View File

@@ -108,17 +108,23 @@ public class XalanLiaison implements XSLTLiaison {
if (xslStream != null) {
xslStream.close();
}
} catch (IOException ignored) {}
} catch (IOException ignored) {
//ignore
}
try {
if (fis != null) {
fis.close();
}
} catch (IOException ignored) {}
} catch (IOException ignored) {
//ignore
}
try {
if (fos != null) {
fos.close();
}
} catch (IOException ignored) {}
} catch (IOException ignored) {
//ignore
}
}
}



+ 10
- 10
src/main/org/apache/tools/ant/types/optional/ScriptFilter.java View File

@@ -72,6 +72,8 @@ import org.apache.tools.ant.BuildException;
* to a script.
* The script is meant to use get self.token and
* set self.token in the reply.
*
* @author Not Specified.
*/
public class ScriptFilter extends TokenFilter.ChainableReaderFilter {
/** The language - attribute of element */
@@ -90,7 +92,7 @@ public class ScriptFilter extends TokenFilter.ChainableReaderFilter {
/**
* Defines the language (required).
*
* @param msg Sets the value for the script variable.
* @param language the scripting language name for the script.
*/
public void setLanguage(String language) {
this.language = language;
@@ -105,8 +107,8 @@ public class ScriptFilter extends TokenFilter.ChainableReaderFilter {
for (Enumeration e = dictionary.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();

boolean isValid = key.length() > 0 &&
Character.isJavaIdentifierStart(key.charAt(0));
boolean isValid = key.length() > 0
&& Character.isJavaIdentifierStart(key.charAt(0));

for (int i = 1; isValid && i < key.length(); i++) {
isValid = Character.isJavaIdentifierPart(key.charAt(i));
@@ -116,8 +118,7 @@ public class ScriptFilter extends TokenFilter.ChainableReaderFilter {
if (isValid) {
beans.put(key, dictionary.get(key));
}
}
catch (Throwable t) {
} catch (Throwable t) {
throw new BuildException(t);
//System.err.println("What the helll");
}
@@ -203,8 +204,7 @@ public class ScriptFilter extends TokenFilter.ChainableReaderFilter {
try {
manager.exec(language, "<ANT>", 0, 0, script);
return getToken();
}
catch (BSFException be) {
} catch (BSFException be) {
Throwable t = be;
Throwable te = be.getTargetException();
if (te != null) {
@@ -220,7 +220,7 @@ public class ScriptFilter extends TokenFilter.ChainableReaderFilter {
/**
* Load the script from an external file ; optional.
*
* @param msg Sets the value for the script variable.
* @param fileName the name of the file containing the script source.
*/
public void setSrc(String fileName) {
File file = new File(fileName);
@@ -229,7 +229,7 @@ public class ScriptFilter extends TokenFilter.ChainableReaderFilter {
}

int count = (int) file.length();
byte data[] = new byte[count];
byte[] data = new byte[count];

try {
FileInputStream inStream = new FileInputStream(file);
@@ -245,7 +245,7 @@ public class ScriptFilter extends TokenFilter.ChainableReaderFilter {
/**
* The script text.
*
* @param msg Sets the value for the script variable.
* @param text a component of the script text to be added.
*/
public void addText(String text) {
this.script += text;


+ 4
- 0
src/main/org/apache/tools/ant/util/optional/WeakishReference12.java View File

@@ -61,6 +61,8 @@ import java.lang.ref.WeakReference;
/**
* This is a reference that really is is Weak, as it uses the
* appropriate java.lang.ref class.
*
* @author Not Specified.
*/
public class WeakishReference12 extends WeakishReference {

@@ -78,6 +80,8 @@ public class WeakishReference12 extends WeakishReference {

/**
* Returns this reference object's referent.
*
* @return referent.
*/
public Object get() {
return weakref.get();


Loading…
Cancel
Save