Browse Source

java 5, continued

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1375571 13f79535-47bb-0310-9956-ffa450edef68
master
Matthew Jason Benson 13 years ago
parent
commit
da5f3bfd25
78 changed files with 735 additions and 854 deletions
  1. +7
    -5
      src/main/org/apache/tools/ant/Main.java
  2. +1
    -1
      src/main/org/apache/tools/ant/Project.java
  3. +1
    -1
      src/main/org/apache/tools/ant/dispatch/DispatchUtils.java
  4. +2
    -2
      src/main/org/apache/tools/ant/filters/ClassConstants.java
  5. +0
    -4
      src/main/org/apache/tools/ant/filters/FixCrLfFilter.java
  6. +3
    -3
      src/main/org/apache/tools/ant/filters/LineContains.java
  7. +3
    -3
      src/main/org/apache/tools/ant/filters/LineContainsRegExp.java
  8. +4
    -4
      src/main/org/apache/tools/ant/filters/ReplaceTokens.java
  9. +38
    -38
      src/main/org/apache/tools/ant/filters/SortFilter.java
  10. +4
    -4
      src/main/org/apache/tools/ant/filters/StripLineComments.java
  11. +3
    -3
      src/main/org/apache/tools/ant/filters/TailFilter.java
  12. +3
    -3
      src/main/org/apache/tools/ant/filters/TokenFilter.java
  13. +14
    -14
      src/main/org/apache/tools/ant/filters/util/ChainReaderHelper.java
  14. +12
    -12
      src/main/org/apache/tools/ant/helper/AntXMLContext.java
  15. +2
    -2
      src/main/org/apache/tools/ant/helper/IgnoreDependenciesExecutor.java
  16. +9
    -13
      src/main/org/apache/tools/ant/helper/ProjectHelper2.java
  17. +1
    -1
      src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java
  18. +2
    -7
      src/main/org/apache/tools/ant/input/DefaultInputHandler.java
  19. +5
    -5
      src/main/org/apache/tools/ant/input/MultipleChoiceInputRequest.java
  20. +1
    -2
      src/main/org/apache/tools/ant/input/SecureInputHandler.java
  21. +1
    -0
      src/main/org/apache/tools/ant/launch/LaunchException.java
  22. +8
    -10
      src/main/org/apache/tools/ant/launch/Launcher.java
  23. +1
    -1
      src/main/org/apache/tools/ant/launch/Locator.java
  24. +13
    -11
      src/main/org/apache/tools/ant/listener/MailLogger.java
  25. +1
    -1
      src/main/org/apache/tools/ant/listener/ProfileLogger.java
  26. +3
    -1
      src/main/org/apache/tools/ant/loader/AntClassLoader5.java
  27. +4
    -6
      src/main/org/apache/tools/ant/property/ParseProperties.java
  28. +7
    -9
      src/main/org/apache/tools/ant/property/ResolvePropertyMap.java
  29. +7
    -7
      src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java
  30. +7
    -12
      src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java
  31. +42
    -50
      src/main/org/apache/tools/ant/taskdefs/Ant.java
  32. +22
    -27
      src/main/org/apache/tools/ant/taskdefs/AntStructure.java
  33. +3
    -2
      src/main/org/apache/tools/ant/taskdefs/Antlib.java
  34. +2
    -2
      src/main/org/apache/tools/ant/taskdefs/Apt.java
  35. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/AugmentReference.java
  36. +3
    -4
      src/main/org/apache/tools/ant/taskdefs/BindTargets.java
  37. +12
    -20
      src/main/org/apache/tools/ant/taskdefs/Checksum.java
  38. +16
    -16
      src/main/org/apache/tools/ant/taskdefs/Concat.java
  39. +45
    -62
      src/main/org/apache/tools/ant/taskdefs/Copy.java
  40. +6
    -6
      src/main/org/apache/tools/ant/taskdefs/Copydir.java
  41. +25
    -40
      src/main/org/apache/tools/ant/taskdefs/Definer.java
  42. +3
    -3
      src/main/org/apache/tools/ant/taskdefs/Delete.java
  43. +3
    -6
      src/main/org/apache/tools/ant/taskdefs/ExecTask.java
  44. +48
    -50
      src/main/org/apache/tools/ant/taskdefs/Execute.java
  45. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java
  46. +9
    -9
      src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java
  47. +10
    -10
      src/main/org/apache/tools/ant/taskdefs/Expand.java
  48. +3
    -3
      src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
  49. +2
    -2
      src/main/org/apache/tools/ant/taskdefs/GenerateKey.java
  50. +14
    -18
      src/main/org/apache/tools/ant/taskdefs/HostInfo.java
  51. +3
    -4
      src/main/org/apache/tools/ant/taskdefs/ImportTask.java
  52. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/Input.java
  53. +10
    -10
      src/main/org/apache/tools/ant/taskdefs/JDBCTask.java
  54. +24
    -35
      src/main/org/apache/tools/ant/taskdefs/Jar.java
  55. +3
    -3
      src/main/org/apache/tools/ant/taskdefs/Java.java
  56. +8
    -9
      src/main/org/apache/tools/ant/taskdefs/Javac.java
  57. +42
    -44
      src/main/org/apache/tools/ant/taskdefs/Javadoc.java
  58. +3
    -3
      src/main/org/apache/tools/ant/taskdefs/KeySubst.java
  59. +0
    -1
      src/main/org/apache/tools/ant/taskdefs/Length.java
  60. +2
    -2
      src/main/org/apache/tools/ant/taskdefs/LoadProperties.java
  61. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/LoadResource.java
  62. +35
    -37
      src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
  63. +7
    -7
      src/main/org/apache/tools/ant/taskdefs/MakeUrl.java
  64. +35
    -40
      src/main/org/apache/tools/ant/taskdefs/Manifest.java
  65. +35
    -42
      src/main/org/apache/tools/ant/taskdefs/Zip.java
  66. +2
    -2
      src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java
  67. +15
    -14
      src/main/org/apache/tools/ant/taskdefs/email/Mailer.java
  68. +2
    -2
      src/main/org/apache/tools/ant/types/AntFilterReader.java
  69. +10
    -8
      src/main/org/apache/tools/ant/types/DataType.java
  70. +3
    -3
      src/main/org/apache/tools/ant/types/Environment.java
  71. +4
    -4
      src/main/org/apache/tools/ant/types/FilterChain.java
  72. +5
    -10
      src/main/org/apache/tools/ant/types/Path.java
  73. +11
    -12
      src/main/org/apache/tools/ant/types/resources/Resources.java
  74. +4
    -12
      src/main/org/apache/tools/ant/types/spi/Service.java
  75. +5
    -5
      src/main/org/apache/tools/ant/util/IdentityStack.java
  76. +18
    -16
      src/main/org/apache/tools/ant/util/LinkedHashtable.java
  77. +7
    -7
      src/main/org/apache/tools/ant/util/ReflectUtil.java
  78. +3
    -3
      src/main/org/apache/tools/ant/util/StringUtils.java

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

@@ -843,17 +843,19 @@ public class Main implements AntMain {
project.init();

// resolve properties
PropertyHelper propertyHelper = (PropertyHelper) PropertyHelper
.getPropertyHelper(project);
HashMap<Object, Object> props = new HashMap<Object, Object>(definedProps);
PropertyHelper propertyHelper = PropertyHelper.getPropertyHelper(project);
@SuppressWarnings({ "rawtypes", "unchecked" })
Map raw = new HashMap(definedProps);
@SuppressWarnings("unchecked")
Map<String, Object> props = raw;

ResolvePropertyMap resolver = new ResolvePropertyMap(project,
NOPROPERTIES, propertyHelper.getExpanders());
resolver.resolveAllProperties(props, null, false);

// set user-define properties
for (Entry<Object, Object> ent : props.entrySet()) {
String arg = (String) ent.getKey();
for (Entry<String, Object> ent : props.entrySet()) {
String arg = ent.getKey();
Object value = ent.getValue();
project.setUserProperty(arg, String.valueOf(value));
}


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

@@ -2022,7 +2022,7 @@ public class Project implements ResourceFactory {
* Must not be <code>null</code>.
*
* @return the reference with the specified ID, or <code>null</code> if
* there is no such reference in the project.
* there is no such reference in the project, with type inference.
*/
public <T> T getReference(String key) {
@SuppressWarnings("unchecked")


+ 1
- 1
src/main/org/apache/tools/ant/dispatch/DispatchUtils.java View File

@@ -58,7 +58,7 @@ public class DispatchUtils {
if (name.length() > 1) {
mName += name.substring(1);
}
final Class c = dispatchable.getClass();
final Class<? extends Dispatchable> c = dispatchable.getClass();
final Method actionM = c.getMethod(mName, new Class[0]);
if (actionM != null) {
final Object o = actionM.invoke(dispatchable, (Object[]) null);


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

@@ -106,10 +106,10 @@ public final class ClassConstants
} else {
final byte[] bytes = clazz.getBytes(ResourceUtils.ISO_8859_1);
try {
final Class javaClassHelper =
final Class<?> javaClassHelper =
Class.forName(JAVA_CLASS_HELPER);
if (javaClassHelper != null) {
final Class[] params = {
final Class<?>[] params = {
byte[].class
};
final Method getConstants =


+ 0
- 4
src/main/org/apache/tools/ant/filters/FixCrLfFilter.java View File

@@ -435,10 +435,6 @@ public final class FixCrLfFilter extends BaseParamFilterReader implements Chaina
push(cs, 0, cs.length);
}

public void push(String s) {
push(s.toCharArray());
}

/**
* Does this filter want to block edits on the last character returned
* by read()?


+ 3
- 3
src/main/org/apache/tools/ant/filters/LineContains.java View File

@@ -55,7 +55,7 @@ public final class LineContains
private static final String NEGATE_KEY = "negate";

/** Vector that holds the strings that input lines must contain. */
private Vector contains = new Vector();
private Vector<String> contains = new Vector<String>();

/**
* Remaining line to be read from this filter, or <code>null</code> if
@@ -163,7 +163,7 @@ public final class LineContains
* @param contains A vector of words which must be contained within a line
* in order for it to match in this filter. Must not be <code>null</code>.
*/
private void setContains(final Vector contains) {
private void setContains(final Vector<String> contains) {
this.contains = contains;
}

@@ -176,7 +176,7 @@ public final class LineContains
* returned object is "live" - in other words, changes made to the
* returned object are mirrored in the filter.
*/
private Vector getContains() {
private Vector<String> getContains() {
return contains;
}



+ 3
- 3
src/main/org/apache/tools/ant/filters/LineContainsRegExp.java View File

@@ -57,7 +57,7 @@ public final class LineContainsRegExp
private static final String CS_KEY = "casesensitive";

/** Vector that holds the expressions that input lines must contain. */
private Vector regexps = new Vector();
private Vector<RegularExpression> regexps = new Vector<RegularExpression>();

/**
* Remaining line to be read from this filter, or <code>null</code> if
@@ -155,7 +155,7 @@ public final class LineContainsRegExp
* within a line in order for it to match in this filter. Must not be
* <code>null</code>.
*/
private void setRegexps(final Vector regexps) {
private void setRegexps(final Vector<RegularExpression> regexps) {
this.regexps = regexps;
}

@@ -169,7 +169,7 @@ public final class LineContainsRegExp
* filter. The returned object is "live" - in other words, changes made to
* the returned object are mirrored in the filter.
*/
private Vector getRegexps() {
private Vector<RegularExpression> getRegexps() {
return regexps;
}



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

@@ -70,7 +70,7 @@ public final class ReplaceTokens
private int queueIndex = -1;

/** Hashtable to hold the replacee-replacer pairs (String to String). */
private Hashtable hash = new Hashtable();
private Hashtable<String, String> hash = new Hashtable<String, String>();

/** Character marking the beginning of a token. */
private char beginToken = DEFAULT_BEGIN_TOKEN;
@@ -266,7 +266,7 @@ public final class ReplaceTokens
* @param hash A map (String->String) of token keys to replacement
* values. Must not be <code>null</code>.
*/
private void setTokens(final Hashtable hash) {
private void setTokens(final Hashtable<String, String> hash) {
this.hash = hash;
}

@@ -276,7 +276,7 @@ public final class ReplaceTokens
* @return a map (String->String) of token keys to replacement
* values
*/
private Hashtable getTokens() {
private Hashtable<String, String> getTokens() {
return hash;
}

@@ -339,7 +339,7 @@ public final class ReplaceTokens

private void makeTokensFromProperties(Resource r) {
Properties props = getProperties(r);
for (Enumeration e = props.keys(); e.hasMoreElements();) {
for (Enumeration<?> e = props.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();
String value = props.getProperty(key);
hash.put(key, value);


+ 38
- 38
src/main/org/apache/tools/ant/filters/SortFilter.java View File

@@ -32,11 +32,11 @@ import org.apache.tools.ant.types.Parameter;
* <p>
* Sort a file before and/or after the file.
* </p>
*
*
* <p>
* Examples:
* </p>
*
*
* <pre>
* &lt;copy todir=&quot;build&quot;&gt;
* &lt;fileset dir=&quot;input&quot; includes=&quot;*.txt&quot;/&gt;
@@ -45,14 +45,14 @@ import org.apache.tools.ant.types.Parameter;
* &lt;/filterchain&gt;
* &lt;/copy&gt;
* </pre>
*
*
* <p>
* Sort all files <code>*.txt</code> from <i>src</i> location and copy
* them into <i>build</i> location. The lines of each file are sorted
* in ascendant order comparing the lines via the
* <code>String.compareTo(Object o)</code> method.
* </p>
*
*
* <pre>
* &lt;copy todir=&quot;build&quot;&gt;
* &lt;fileset dir=&quot;input&quot; includes=&quot;*.txt&quot;/&gt;
@@ -61,14 +61,14 @@ import org.apache.tools.ant.types.Parameter;
* &lt;/filterchain&gt;
* &lt;/copy&gt;
* </pre>
*
*
* <p>
* Sort all files <code>*.txt</code> from <i>src</i> location into reverse
* order and copy them into <i>build</i> location. If reverse parameter has
* value <code>true</code> (default value), then the output line of the files
* will be in ascendant order.
* </p>
*
*
* <pre>
* &lt;copy todir=&quot;build&quot;&gt;
* &lt;fileset dir=&quot;input&quot; includes=&quot;*.txt&quot;/&gt;
@@ -79,7 +79,7 @@ import org.apache.tools.ant.types.Parameter;
* &lt;/filterchain&gt;
* &lt;/copy&gt;
* </pre>
*
*
* <p>
* Sort all files <code>*.txt</code> from <i>src</i> location using as
* sorting criterium <code>EvenFirstCmp</code> class, that sorts the file
@@ -89,7 +89,7 @@ import org.apache.tools.ant.types.Parameter;
* therefore in case of inner class has to be <em>static</em>. It also has to
* implement <code>java.util.Comparator</code> interface, for example:
* </p>
*
*
* <pre>
* package org.apache.tools.ant.filters;
* ...(omitted)
@@ -99,9 +99,9 @@ import org.apache.tools.ant.types.Parameter;
* }
* }
* </pre>
*
*
* <p>The example above is equivalent to:</p>
*
*
* <blockquote><pre>
* &lt;componentdef name="evenfirst"
* classname="org.apache.tools.ant.filters.EvenFirstCmp&quot;/&gt;
@@ -114,10 +114,10 @@ import org.apache.tools.ant.types.Parameter;
* &lt;/filterchain&gt;
* &lt;/copy&gt;
* </pre></blockquote>
*
*
* <p> If parameter <code>comparator</code> is present, then
* <code>reverse</code> parameter will not be taken into account. </p>
*
*
* @since Ant 1.8.0
*/
public final class SortFilter extends BaseParamFilterReader
@@ -135,7 +135,7 @@ public final class SortFilter extends BaseParamFilterReader
/**
* Instance of comparator class to be used for sorting.
*/
private Comparator comparator = null;
private Comparator<? super String> comparator = null;

/**
* Controls if the sorting process will be in ascendant/descendant order. If
@@ -148,7 +148,7 @@ public final class SortFilter extends BaseParamFilterReader
/**
* Stores the lines to be sorted.
*/
private List lines;
private List<String> lines;

/**
* Remaining line to be read from this filter, or <code>null</code> if the
@@ -157,11 +157,11 @@ public final class SortFilter extends BaseParamFilterReader
*/
private String line = null;

private Iterator iterator = null;
private Iterator<String> iterator = null;

/**
* Constructor for "dummy" instances.
*
*
* @see BaseFilterReader#BaseFilterReader()
*/
public SortFilter() {
@@ -170,7 +170,7 @@ public final class SortFilter extends BaseParamFilterReader

/**
* Creates a new filtered reader.
*
*
* @param in
* A Reader object providing the underlying stream. Must not be
* <code>null</code>.
@@ -184,10 +184,10 @@ public final class SortFilter extends BaseParamFilterReader
* of lines have already been read, the resulting stream is effectively at
* an end. Otherwise, the next character from the underlying stream is read
* and returned.
*
*
* @return the next character in the resulting stream, or -1 if the end of
* the resulting stream has been reached
*
*
* @exception IOException
* if the underlying stream throws an IOException during
* reading
@@ -213,7 +213,7 @@ public final class SortFilter extends BaseParamFilterReader
} else {
if (lines == null) {
// We read all lines and sort them
lines = new ArrayList();
lines = new ArrayList<String>();
for (line = readLine(); line != null; line = readLine()) {
lines.add(line);
}
@@ -237,11 +237,11 @@ public final class SortFilter extends BaseParamFilterReader

/**
* Creates a new SortReader using the passed in Reader for instantiation.
*
*
* @param rdr
* A Reader object providing the underlying stream. Must not be
* <code>null</code>.
*
*
* @return a new filter based on this configuration, but filtering the
* specified reader
*/
@@ -256,7 +256,7 @@ public final class SortFilter extends BaseParamFilterReader
/**
* Returns <code>true</code> if the sorting process will be in reverse
* order, otherwise the sorting process will be in ascendant order.
*
*
* @return <code>true</code> if the sorting process will be in reverse
* order, otherwise the sorting process will be in ascendant order.
*/
@@ -267,7 +267,7 @@ public final class SortFilter extends BaseParamFilterReader
/**
* Sets the sorting process will be in ascendant (<code>reverse=false</code>)
* or to descendant (<code>reverse=true</code>).
*
*
* @param reverse
* Boolean representing reverse ordering process.
*/
@@ -277,30 +277,30 @@ public final class SortFilter extends BaseParamFilterReader

/**
* Returns the comparator to be used for sorting.
*
*
* @return the comparator
*/
public Comparator getComparator() {
public Comparator<? super String> getComparator() {
return comparator;
}

/**
* Set the comparator to be used as sorting criterium.
*
*
* @param comparator
* the comparator to set
*/
public void setComparator(Comparator comparator) {
public void setComparator(Comparator<? super String> comparator) {
this.comparator = comparator;
}

/**
* Set the comparator to be used as sorting criterium as nested element.
*
* Set the comparator to be used as sorting criterion as nested element.
*
* @param comparator
* the comparator to set
*/
public void add(Comparator comparator) {
public void add(Comparator<? super String> comparator) {
if (this.comparator != null && comparator != null) {
throw new BuildException("can't have more than one comparator");
}
@@ -324,8 +324,10 @@ public final class SortFilter extends BaseParamFilterReader
if (COMPARATOR_KEY.equals(paramName)) {
try {
String className = (String) params[i].getValue();
setComparator((Comparator) (Class.forName(className)
.newInstance()));
@SuppressWarnings("unchecked")
final Comparator<? super String> comparatorInstance = (Comparator<? super String>) (Class
.forName(className).newInstance());
setComparator(comparatorInstance);
continue;
} catch (InstantiationException e) {
throw new BuildException(e);
@@ -353,15 +355,13 @@ public final class SortFilter extends BaseParamFilterReader
/**
* Sorts the read lines (<code>lines</code>)acording to the sorting
* criteria defined by the user.
*
*
*/
private void sort() {
if (comparator == null) {
if (reverse) {
Collections.sort(lines, new Comparator() {
public int compare(Object o1, Object o2) {
String s1 = (String) o1;
String s2 = (String) o2;
Collections.sort(lines, new Comparator<String>() {
public int compare(String s1, String s2) {
return (-s1.compareTo(s2));
}
});


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

@@ -54,7 +54,7 @@ public final class StripLineComments
private static final String COMMENTS_KEY = "comment";

/** Vector that holds the comment prefixes. */
private Vector comments = new Vector();
private Vector<String> comments = new Vector<String>();

/** The line that has been read ahead. */
private String line = null;
@@ -110,7 +110,7 @@ public final class StripLineComments

while (line != null) {
for (int i = 0; i < commentsSize; i++) {
String comment = (String) comments.elementAt(i);
String comment = comments.elementAt(i);
if (line.startsWith(comment)) {
line = null;
break;
@@ -149,7 +149,7 @@ public final class StripLineComments
* @param comments A list of strings, each of which is a prefix
* for a comment line. Must not be <code>null</code>.
*/
private void setComments(final Vector comments) {
private void setComments(final Vector<String> comments) {
this.comments = comments;
}

@@ -158,7 +158,7 @@ public final class StripLineComments
*
* @return the list of comment prefixes to strip.
*/
private Vector getComments() {
private Vector<String> getComments() {
return comments;
}



+ 3
- 3
src/main/org/apache/tools/ant/filters/TailFilter.java View File

@@ -65,7 +65,7 @@ public final class TailFilter extends BaseParamFilterReader
/** the position in the current line */
private int linePos = 0;

private LinkedList lineList = new LinkedList();
private LinkedList<String> lineList = new LinkedList<String>();

/**
* Constructor for "dummy" instances.
@@ -212,7 +212,7 @@ public final class TailFilter extends BaseParamFilterReader
lineList.add(line);
if (lines == -1) {
if (lineList.size() > skip) {
return (String) lineList.removeFirst();
return lineList.removeFirst();
}
} else {
long linesToKeep = lines + (skip > 0 ? skip : 0);
@@ -235,7 +235,7 @@ public final class TailFilter extends BaseParamFilterReader
}
}
if (lineList.size() > 0) {
return (String) lineList.removeFirst();
return lineList.removeFirst();
}
return null;
}


+ 3
- 3
src/main/org/apache/tools/ant/filters/TokenFilter.java View File

@@ -58,7 +58,7 @@ public class TokenFilter extends BaseFilterReader


/** string filters */
private Vector filters = new Vector();
private Vector<Filter> filters = new Vector<Filter>();
/** the tokenizer to use on the input stream */
private Tokenizer tokenizer = null;
/** the output token termination */
@@ -109,8 +109,8 @@ public class TokenFilter extends BaseFilterReader
if (line == null) {
return -1;
}
for (Enumeration e = filters.elements(); e.hasMoreElements();) {
Filter filter = (Filter) e.nextElement();
for (Enumeration<Filter> e = filters.elements(); e.hasMoreElements();) {
Filter filter = e.nextElement();
line = filter.filter(line);
if (line == null) {
break;


+ 14
- 14
src/main/org/apache/tools/ant/filters/util/ChainReaderHelper.java View File

@@ -60,7 +60,7 @@ public final class ChainReaderHelper {
/**
* Chain of filters
*/
public Vector filterChains = new Vector();
public Vector<FilterChain> filterChains = new Vector<FilterChain>();

/** The Ant project */
private Project project = null;
@@ -106,7 +106,7 @@ public final class ChainReaderHelper {
*
* @param fchain the filter chains collection
*/
public void setFilterChains(Vector fchain) {
public void setFilterChains(Vector<FilterChain> fchain) {
filterChains = fchain;
}

@@ -122,14 +122,14 @@ public final class ChainReaderHelper {

Reader instream = primaryReader;
final int filterReadersCount = filterChains.size();
final Vector finalFilters = new Vector();
final ArrayList/*<AntClassLoader>*/ classLoadersToCleanUp =
new ArrayList/*<AntClassLoader>*/();
final Vector<Object> finalFilters = new Vector<Object>();
final ArrayList<AntClassLoader> classLoadersToCleanUp =
new ArrayList<AntClassLoader>();

for (int i = 0; i < filterReadersCount; i++) {
final FilterChain filterchain =
(FilterChain) filterChains.elementAt(i);
final Vector filterReaders = filterchain.getFilterReaders();
filterChains.elementAt(i);
final Vector<Object> filterReaders = filterchain.getFilterReaders();
final int readerCount = filterReaders.size();
for (int j = 0; j < readerCount; j++) {
finalFilters.addElement(filterReaders.elementAt(j));
@@ -197,9 +197,9 @@ public final class ChainReaderHelper {
/**
* Deregisters Classloaders from the project so GC can remove them later.
*/
private static void cleanUpClassLoaders(List/*<AntClassLoader>*/ loaders) {
for (Iterator it = loaders.iterator(); it.hasNext(); ) {
((AntClassLoader) it.next()).cleanup();
private static void cleanUpClassLoaders(List<AntClassLoader> loaders) {
for (Iterator<AntClassLoader> it = loaders.iterator(); it.hasNext(); ) {
it.next().cleanup();
}
}

@@ -223,13 +223,13 @@ public final class ChainReaderHelper {
*/
private Reader expandReader(final AntFilterReader filter,
final Reader ancestor,
final List/*<AntClassLoader>*/ classLoadersToCleanUp) {
final List<AntClassLoader> classLoadersToCleanUp) {
final String className = filter.getClassName();
final Path classpath = filter.getClasspath();
final Project pro = filter.getProject();
if (className != null) {
try {
Class clazz = null;
Class<?> clazz = null;
if (classpath == null) {
clazz = Class.forName(className);
} else {
@@ -242,11 +242,11 @@ public final class ChainReaderHelper {
throw new BuildException(className + " does not extend"
+ " java.io.FilterReader");
}
final Constructor[] constructors = clazz.getConstructors();
final Constructor<?>[] constructors = clazz.getConstructors();
int j = 0;
boolean consPresent = false;
for (; j < constructors.length; j++) {
Class[] types = constructors[j].getParameterTypes();
Class<?>[] types = constructors[j].getParameterTypes();
if (types.length == 1
&& types[0].isAssignableFrom(Reader.class)) {
consPresent = true;


+ 12
- 12
src/main/org/apache/tools/ant/helper/AntXMLContext.java View File

@@ -54,7 +54,7 @@ public class AntXMLContext {
* defined. Project maintains a Hashtable, which is not ordered.
* This will allow description to know the original order.
*/
private Vector targetVector = new Vector();
private Vector<Target> targetVector = new Vector<Target>();

/**
* Parent directory of the build file. Used for resolving entities
@@ -92,7 +92,7 @@ public class AntXMLContext {
/** The stack of RuntimeConfigurable2 wrapping the
objects.
*/
private Vector wStack = new Vector();
private Vector<RuntimeConfigurable> wStack = new Vector<RuntimeConfigurable>();

/**
* Indicates whether the project tag attributes are to be ignored
@@ -101,11 +101,11 @@ public class AntXMLContext {
private boolean ignoreProjectTag = false;

/** Keeps track of prefix -> uri mapping during parsing */
private Map prefixMapping = new HashMap();
private Map<String, List<String>> prefixMapping = new HashMap<String, List<String>>();


/** Keeps track of targets in files */
private Map currentTargets = null;
private Map<String, Target> currentTargets = null;

/**
* constructor
@@ -253,7 +253,7 @@ public class AntXMLContext {
* access the stack of wrappers
* @return the stack of wrappers
*/
public Vector getWrapperStack() {
public Vector<RuntimeConfigurable> getWrapperStack() {
return wStack;
}

@@ -302,7 +302,7 @@ public class AntXMLContext {
* access the vector of targets
* @return vector of targets
*/
public Vector getTargets() {
public Vector<Target> getTargets() {
return targetVector;
}

@@ -362,9 +362,9 @@ public class AntXMLContext {
* @param uri a namespace uri
*/
public void startPrefixMapping(String prefix, String uri) {
List list = (List) prefixMapping.get(prefix);
List<String> list = prefixMapping.get(prefix);
if (list == null) {
list = new ArrayList();
list = new ArrayList<String>();
prefixMapping.put(prefix, list);
}
list.add(uri);
@@ -376,7 +376,7 @@ public class AntXMLContext {
* @param prefix the namespace prefix
*/
public void endPrefixMapping(String prefix) {
List list = (List) prefixMapping.get(prefix);
List<String> list = prefixMapping.get(prefix);
if (list == null || list.size() == 0) {
return; // Should not happen
}
@@ -390,7 +390,7 @@ public class AntXMLContext {
* @return the uri for this prefix, null if not present
*/
public String getPrefixMapping(String prefix) {
List list = (List) prefixMapping.get(prefix);
List<String> list = prefixMapping.get(prefix);
if (list == null || list.size() == 0) {
return null;
}
@@ -401,7 +401,7 @@ public class AntXMLContext {
* Get the targets in the current source file.
* @return the current targets.
*/
public Map getCurrentTargets() {
public Map<String, Target> getCurrentTargets() {
return currentTargets;
}

@@ -409,7 +409,7 @@ public class AntXMLContext {
* Set the map of the targets in the current source file.
* @param currentTargets a map of targets.
*/
public void setCurrentTargets(Map currentTargets) {
public void setCurrentTargets(Map<String, Target> currentTargets) {
this.currentTargets = currentTargets;
}



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

@@ -40,11 +40,11 @@ public class IgnoreDependenciesExecutor implements Executor {
/** {@inheritDoc}. */
public void executeTargets(Project project, String[] targetNames)
throws BuildException {
Hashtable targets = project.getTargets();
Hashtable<String, Target> targets = project.getTargets();
BuildException thrownException = null;
for (int i = 0; i < targetNames.length; i++) {
try {
Target t = (Target) targets.get(targetNames[i]);
Target t = targets.get(targetNames[i]);
if (t == null) {
throw new BuildException("Unknown target " + targetNames[i]);
}


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

@@ -50,7 +50,6 @@ import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Stack;

@@ -157,13 +156,13 @@ public class ProjectHelper2 extends ProjectHelper {
context.setIgnoreProjectTag(true);
Target currentTarget = context.getCurrentTarget();
Target currentImplicit = context.getImplicitTarget();
Map currentTargets = context.getCurrentTargets();
Map<String, Target> currentTargets = context.getCurrentTargets();
try {
Target newCurrent = new Target();
newCurrent.setProject(project);
newCurrent.setName("");
context.setCurrentTarget(newCurrent);
context.setCurrentTargets(new HashMap());
context.setCurrentTargets(new HashMap<String, Target>());
context.setImplicitTarget(newCurrent);
parse(project, source, new RootHandler(context, mainHandler));
newCurrent.execute();
@@ -174,7 +173,7 @@ public class ProjectHelper2 extends ProjectHelper {
}
} else {
// top level file
context.setCurrentTargets(new HashMap());
context.setCurrentTargets(new HashMap<String, Target>());
parse(project, source, new RootHandler(context, mainHandler));
// Execute the top-level target
context.getImplicitTarget().execute();
@@ -485,7 +484,7 @@ public class ProjectHelper2 extends ProjectHelper {
* with the implicit execution stack )
*/
public static class RootHandler extends DefaultHandler {
private Stack antHandlers = new Stack();
private Stack<AntHandler> antHandlers = new Stack<AntHandler>();
private AntHandler currentHandler = null;
private AntXMLContext context;

@@ -962,7 +961,7 @@ public class ProjectHelper2 extends ProjectHelper {
throw new BuildException("Duplicate target '" + name + "'",
target.getLocation());
}
Hashtable projectTargets = project.getTargets();
Hashtable<String, Target> projectTargets = project.getTargets();
boolean usedTarget = false;
// If the name has not already been defined define it
if (projectTargets.containsKey(name)) {
@@ -979,12 +978,9 @@ public class ProjectHelper2 extends ProjectHelper {
if (!isInIncludeMode) {
target.setDepends(depends);
} else {
for (Iterator iter =
Target.parseDepends(depends, name, "depends")
.iterator();
iter.hasNext(); ) {
target.addDependency(prefix + sep + iter.next());
}
for (String string : Target.parseDepends(depends, name, "depends")) {
target.addDependency(prefix + sep + string);
}
}
}
if (!isInIncludeMode && context.isIgnoringProjectTag()
@@ -1003,7 +999,7 @@ public class ProjectHelper2 extends ProjectHelper {
}
if (extensionPointMissing != null && extensionPoint == null) {
throw new BuildException("onMissingExtensionPoint attribute cannot " +
"be specified unless extensionOf is specified",
"be specified unless extensionOf is specified",
target.getLocation());

}


+ 1
- 1
src/main/org/apache/tools/ant/helper/ProjectHelperImpl.java View File

@@ -855,7 +855,7 @@ public class ProjectHelperImpl extends ProjectHelper {
* BuildException being thrown during configuration.
*/
public void init(String propType, AttributeList attrs) throws SAXParseException {
Class parentClass = parent.getClass();
Class<?> parentClass = parent.getClass();
IntrospectionHelper ih = IntrospectionHelper.getHelper(helperImpl.project, parentClass);

try {


+ 2
- 7
src/main/org/apache/tools/ant/input/DefaultInputHandler.java View File

@@ -22,7 +22,6 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Enumeration;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.util.KeepAliveInputStream;

@@ -86,16 +85,12 @@ public class DefaultInputHandler implements InputHandler {
String prompt = request.getPrompt();
String def = request.getDefaultValue();
if (request instanceof MultipleChoiceInputRequest) {
StringBuffer sb = new StringBuffer(prompt);
sb.append(" (");
Enumeration e =
((MultipleChoiceInputRequest) request).getChoices().elements();
StringBuilder sb = new StringBuilder(prompt).append(" (");
boolean first = true;
while (e.hasMoreElements()) {
for (String next : ((MultipleChoiceInputRequest) request).getChoices()) {
if (!first) {
sb.append(", ");
}
String next = (String) e.nextElement();
if (next.equals(def)) {
sb.append('[');
}


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

@@ -27,26 +27,26 @@ import java.util.Vector;
* @since Ant 1.5
*/
public class MultipleChoiceInputRequest extends InputRequest {
private final LinkedHashSet choices;
private final LinkedHashSet<String> choices;

/**
* @param prompt The prompt to show to the user. Must not be null.
* @param choices holds all input values that are allowed.
* Must not be null.
*/
public MultipleChoiceInputRequest(String prompt, Vector choices) {
public MultipleChoiceInputRequest(String prompt, Vector<String> choices) {
super(prompt);
if (choices == null) {
throw new IllegalArgumentException("choices must not be null");
}
this.choices = new LinkedHashSet(choices);
this.choices = new LinkedHashSet<String>(choices);
}

/**
* @return The possible values.
*/
public Vector getChoices() {
return new Vector(choices);
public Vector<String> getChoices() {
return new Vector<String>(choices);
}

/**


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

@@ -42,8 +42,7 @@ public class SecureInputHandler extends DefaultInputHandler {
public void handleInput(InputRequest request) throws BuildException {
String prompt = getPrompt(request);
try {
Class system = Class.forName("java.lang.System");
Object console = ReflectUtil.invokeStatic(system, "console");
Object console = ReflectUtil.invokeStatic(System.class, "console");
do {
char[] input = (char[]) ReflectUtil.invoke(
console, "readPassword", String.class, prompt,


+ 1
- 0
src/main/org/apache/tools/ant/launch/LaunchException.java View File

@@ -23,6 +23,7 @@ package org.apache.tools.ant.launch;
* @since Ant 1.6
*/
public class LaunchException extends Exception {
private static final long serialVersionUID = 1L;

/**
* Constructs an exception with the given descriptive message.


+ 8
- 10
src/main/org/apache/tools/ant/launch/Launcher.java View File

@@ -24,7 +24,6 @@ import java.io.File;
import java.util.StringTokenizer;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;



@@ -133,7 +132,7 @@ public class Launcher {
* @param libPathURLs the list of paths to add to
* @throws MalformedURLException if we can't create a URL
*/
private void addPath(String path, boolean getJars, List libPathURLs)
private void addPath(String path, boolean getJars, List<URL> libPathURLs)
throws MalformedURLException {
StringTokenizer tokenizer = new StringTokenizer(path, File.pathSeparator);
while (tokenizer.hasMoreElements()) {
@@ -190,9 +189,9 @@ public class Launcher {
+ "ant could not be located (estimated value="+antHome.getAbsolutePath()+")");
}

List libPaths = new ArrayList();
List<String> libPaths = new ArrayList<String>();
String cpString = null;
List argList = new ArrayList();
List<String> argList = new ArrayList<String>();
String[] newArgs;
boolean noUserLib = false;
boolean noClassPath = false;
@@ -271,7 +270,7 @@ public class Launcher {

URLClassLoader loader = new URLClassLoader(jars, Launcher.class.getClassLoader());
Thread.currentThread().setContextClassLoader(loader);
Class mainClass = null;
Class<?> mainClass = null;
int exitCode = 0;
Throwable thrown=null;
try {
@@ -311,20 +310,19 @@ public class Launcher {
* @return an array of URLs.
* @throws MalformedURLException if the URLs cannot be created.
*/
private URL[] getLibPathURLs(String cpString, List libPaths)
private URL[] getLibPathURLs(String cpString, List<String> libPaths)
throws MalformedURLException {
List libPathURLs = new ArrayList();
List<URL> libPathURLs = new ArrayList<URL>();

if (cpString != null) {
addPath(cpString, false, libPathURLs);
}

for (Iterator i = libPaths.iterator(); i.hasNext();) {
String libPath = (String) i.next();
for (String libPath : libPaths) {
addPath(libPath, true, libPathURLs);
}

return (URL[]) libPathURLs.toArray(new URL[libPathURLs.size()]);
return libPathURLs.toArray(new URL[libPathURLs.size()]);
}

/**


+ 1
- 1
src/main/org/apache/tools/ant/launch/Locator.java View File

@@ -113,7 +113,7 @@ public final class Locator {
*
* @since Ant 1.6
*/
public static File getClassSource(Class c) {
public static File getClassSource(Class<?> c) {
String classResource = c.getName().replace('.', '/') + ".class";
return getResourceSource(c.getClassLoader(), classResource);
}


+ 13
- 11
src/main/org/apache/tools/ant/listener/MailLogger.java View File

@@ -17,6 +17,7 @@
*/
package org.apache.tools.ant.listener;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -32,6 +33,7 @@ import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.email.EmailAddress;
import org.apache.tools.ant.taskdefs.email.Header;
import org.apache.tools.ant.taskdefs.email.Message;
import org.apache.tools.ant.taskdefs.email.Mailer;
import org.apache.tools.ant.util.ClasspathUtils;
@@ -100,7 +102,7 @@ public class MailLogger extends DefaultLogger {
super.buildFinished(event);

Project project = event.getProject();
Hashtable properties = project.getProperties();
Hashtable<String, Object> properties = project.getProperties();

// overlay specified properties file (if any), which overrides project
// settings
@@ -118,7 +120,7 @@ public class MailLogger extends DefaultLogger {
}
}

for (Enumeration e = fileProperties.keys(); e.hasMoreElements();) {
for (Enumeration<?> e = fileProperties.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();
String value = fileProperties.getProperty(key);
properties.put(key, project.replaceProperties(value));
@@ -298,7 +300,7 @@ public class MailLogger extends DefaultLogger {
* @exception Exception thrown if no default value is specified and the
* property is not present in properties.
*/
private String getValue(Hashtable properties, String name,
private String getValue(Hashtable<String, Object> properties, String name,
String defaultValue) throws Exception {
String propertyName = "MailLogger." + name;
String value = (String) properties.get(propertyName);
@@ -371,7 +373,7 @@ public class MailLogger extends DefaultLogger {
return;
}
// convert the replyTo string into a vector of emailaddresses
Vector replyToList = vectorizeEmailAddresses(values.replytoList());
Vector<EmailAddress> replyToList = vectorizeEmailAddresses(values.replytoList());
mailer.setHost(values.mailhost());
mailer.setPort(values.port());
mailer.setUser(values.user());
@@ -388,17 +390,17 @@ public class MailLogger extends DefaultLogger {
mailer.setMessage(mymessage);
mailer.setFrom(new EmailAddress(values.from()));
mailer.setReplyToList(replyToList);
Vector toList = vectorizeEmailAddresses(values.toList());
Vector<EmailAddress> toList = vectorizeEmailAddresses(values.toList());
mailer.setToList(toList);
mailer.setCcList(new Vector());
mailer.setBccList(new Vector());
mailer.setFiles(new Vector());
mailer.setCcList(new Vector<EmailAddress>());
mailer.setBccList(new Vector<EmailAddress>());
mailer.setFiles(new Vector<File>());
mailer.setSubject(values.subject());
mailer.setHeaders(new Vector());
mailer.setHeaders(new Vector<Header>());
mailer.send();
}
private Vector vectorizeEmailAddresses(String listString) {
Vector emailList = new Vector();
private Vector<EmailAddress> vectorizeEmailAddresses(String listString) {
Vector<EmailAddress> emailList = new Vector<EmailAddress>();
StringTokenizer tokens = new StringTokenizer(listString, ",");
while (tokens.hasMoreTokens()) {
emailList.addElement(new EmailAddress(tokens.nextToken()));


+ 1
- 1
src/main/org/apache/tools/ant/listener/ProfileLogger.java View File

@@ -32,7 +32,7 @@ import org.apache.tools.ant.util.StringUtils;
*/
public class ProfileLogger extends DefaultLogger {

private Map profileData = new HashMap(); // <Object, Date>
private Map<Object, Date> profileData = new HashMap<Object, Date>();

/**
* Logs a message to say that the target has started.


+ 3
- 1
src/main/org/apache/tools/ant/loader/AntClassLoader5.java View File

@@ -21,6 +21,8 @@ package org.apache.tools.ant.loader;
import java.util.Enumeration;
import java.io.Closeable;
import java.io.IOException;
import java.net.URL;

import org.apache.tools.ant.AntClassLoader;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.Path;
@@ -52,7 +54,7 @@ public class AntClassLoader5 extends AntClassLoader implements Closeable {
}

/** {@inheritDoc} */
public Enumeration getResources(String name) throws IOException {
public Enumeration<URL> getResources(String name) throws IOException {
return getNamedResources(name);
}



+ 4
- 6
src/main/org/apache/tools/ant/property/ParseProperties.java View File

@@ -19,7 +19,6 @@ package org.apache.tools.ant.property;

import java.text.ParsePosition;
import java.util.Collection;
import java.util.Iterator;
import org.apache.tools.ant.Project;

/**
@@ -31,7 +30,7 @@ public class ParseProperties implements ParseNextProperty {

private final Project project;
private final GetProperty getProperty;
private final Collection expanders;
private final Collection<PropertyExpander> expanders;

/**
* Constructor with a getProperty.
@@ -39,7 +38,7 @@ public class ParseProperties implements ParseNextProperty {
* @param expanders a sequence of expanders
* @param getProperty property resolver.
*/
public ParseProperties(Project project, Collection expanders, GetProperty getProperty) {
public ParseProperties(Project project, Collection<PropertyExpander> expanders, GetProperty getProperty) {
this.project = project;
this.expanders = expanders;
this.getProperty = getProperty;
@@ -183,9 +182,8 @@ public class ParseProperties implements ParseNextProperty {
}

private String parsePropertyName(String value, ParsePosition pos) {
for (Iterator iter = expanders.iterator(); iter.hasNext();) {
String propertyName = ((PropertyExpander) iter.next())
.parsePropertyName(value, pos, this);
for (PropertyExpander propertyExpander : expanders) {
String propertyName = propertyExpander.parsePropertyName(value, pos, this);
if (propertyName == null) {
continue;
}


+ 7
- 9
src/main/org/apache/tools/ant/property/ResolvePropertyMap.java View File

@@ -17,7 +17,6 @@
*/
package org.apache.tools.ant.property;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.HashSet;
@@ -31,10 +30,10 @@ import org.apache.tools.ant.BuildException;
* @since Ant 1.8.0
*/
public class ResolvePropertyMap implements GetProperty {
private final Set seen = new HashSet();
private final Set<String> seen = new HashSet<String>();
private final ParseProperties parseProperties;
private final GetProperty master;
private Map map;
private Map<String, Object> map;
private String prefix;
// whether properties of the value side of the map should be
// expanded
@@ -49,7 +48,7 @@ public class ResolvePropertyMap implements GetProperty {
* @param master the master property holder (usually PropertyHelper)
* @param expanders a collection of expanders (usually from PropertyHelper).
*/
public ResolvePropertyMap(Project project, GetProperty master, Collection expanders) {
public ResolvePropertyMap(Project project, GetProperty master, Collection<PropertyExpander> expanders) {
this.master = master;
this.parseProperties = new ParseProperties(project, expanders, this);
}
@@ -102,7 +101,7 @@ public class ResolvePropertyMap implements GetProperty {
* @param map the map to resolve properties in.
* @deprecated since Ant 1.8.2, use the three-arg method instead.
*/
public void resolveAllProperties(Map map) {
public void resolveAllProperties(Map<String, Object> map) {
resolveAllProperties(map, null, false);
}

@@ -113,7 +112,7 @@ public class ResolvePropertyMap implements GetProperty {
* will finally receive - may be null.
* @deprecated since Ant 1.8.2, use the three-arg method instead.
*/
public void resolveAllProperties(Map map, String prefix) {
public void resolveAllProperties(Map<String, Object> map, String prefix) {
resolveAllProperties(map, null, false);
}

@@ -125,7 +124,7 @@ public class ResolvePropertyMap implements GetProperty {
* @param prefixValues - whether the prefix will be applied
* to properties on the value side of the map as well.
*/
public void resolveAllProperties(Map map, String prefix,
public void resolveAllProperties(Map<String, Object> map, String prefix,
boolean prefixValues) {
// The map, prefix and prefixValues flag get used in the
// getProperty callback
@@ -133,9 +132,8 @@ public class ResolvePropertyMap implements GetProperty {
this.prefix = prefix;
this.prefixValues = prefixValues;

for (Iterator i = map.keySet().iterator(); i.hasNext();) {
for (String key : map.keySet()) {
expandingLHS = true;
String key = (String) i.next();
Object result = getProperty(key);
String value = result == null ? "" : result.toString();
map.put(key, value);


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

@@ -25,7 +25,6 @@ import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import org.apache.tools.ant.BuildException;
@@ -55,10 +54,10 @@ public abstract class AbstractCvsTask extends Task {

private Commandline cmd = new Commandline();

private ArrayList modules = new ArrayList();
private ArrayList<Module> modules = new ArrayList<Module>();

/** list of Commandline children */
private Vector vecCommandlines = new Vector();
private Vector<Commandline> vecCommandlines = new Vector<Commandline>();

/**
* the CVSROOT variable.
@@ -769,8 +768,7 @@ public abstract class AbstractCvsTask extends Task {
if (cvsPackage != null) {
c.createArgument().setLine(cvsPackage);
}
for (Iterator iter = modules.iterator(); iter.hasNext(); ) {
Module m = (Module) iter.next();
for (Module m : modules) {
c.createArgument().setValue(m.getName());
}
if (this.compression > 0
@@ -855,8 +853,10 @@ public abstract class AbstractCvsTask extends Task {
modules.add(m);
}

protected List getModules() {
return (List) modules.clone();
protected List<Module> getModules() {
@SuppressWarnings("unchecked")
final List<Module> clone = (List<Module>) modules.clone();
return clone;
}

public static final class Module {


+ 7
- 12
src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java View File

@@ -19,7 +19,6 @@
package org.apache.tools.ant.taskdefs;

import java.io.File;
import java.util.Enumeration;
import java.util.Vector;

import org.apache.tools.ant.BuildException;
@@ -74,7 +73,7 @@ public abstract class AbstractJarSignerTask extends Task {
/**
* the filesets of the jars to sign
*/
protected Vector filesets = new Vector();
protected Vector<FileSet> filesets = new Vector<FileSet>();
/**
* name of JDK program we are looking for
*/
@@ -291,10 +290,7 @@ public abstract class AbstractJarSignerTask extends Task {
}

//now patch in all system properties
Vector props = sysProperties.getVariablesVector();
Enumeration e = props.elements();
while (e.hasMoreElements()) {
Environment.Variable variable = (Environment.Variable) e.nextElement();
for (Environment.Variable variable : sysProperties.getVariablesVector()) {
declareSysProperty(cmd, variable);
}
}
@@ -358,8 +354,9 @@ public abstract class AbstractJarSignerTask extends Task {
* fileset, if is defined
* @return a vector of FileSet instances
*/
protected Vector createUnifiedSources() {
Vector sources = (Vector) filesets.clone();
protected Vector<FileSet> createUnifiedSources() {
@SuppressWarnings("unchecked")
Vector<FileSet> sources = (Vector<FileSet>) filesets.clone();
if (jar != null) {
//we create a fileset with the source file.
//this lets us combine our logic for handling output directories,
@@ -382,10 +379,8 @@ public abstract class AbstractJarSignerTask extends Task {
*/
protected Path createUnifiedSourcePath() {
Path p = path == null ? new Path(getProject()) : (Path) path.clone();
Vector s = createUnifiedSources();
Enumeration e = s.elements();
while (e.hasMoreElements()) {
p.add((FileSet) e.nextElement());
for (FileSet fileSet : createUnifiedSources()) {
p.add(fileSet);
}
return p;
}


+ 42
- 50
src/main/org/apache/tools/ant/taskdefs/Ant.java View File

@@ -87,10 +87,10 @@ public class Ant extends Task {
private boolean inheritRefs = false;

/** the properties to pass to the new project */
private Vector properties = new Vector();
private Vector<Property> properties = new Vector<Property>();

/** the references to pass to the new project */
private Vector references = new Vector();
private Vector<Reference> references = new Vector<Reference>();

/** the temporary project created to run the build file */
private Project newProject;
@@ -99,10 +99,10 @@ public class Ant extends Task {
private PrintStream out = null;

/** the sets of properties to pass to the new project */
private Vector propertySets = new Vector();
private Vector<PropertySet> propertySets = new Vector<PropertySet>();

/** the targets to call on the new project */
private Vector targets = new Vector();
private Vector<String> targets = new Vector<String>();

/** whether the target attribute was specified **/
private boolean targetAttributeSet = false;
@@ -192,7 +192,7 @@ public class Ant extends Task {
private void initializeProject() {
newProject.setInputHandler(getProject().getInputHandler());

Iterator iter = getBuildListeners();
Iterator<BuildListener> iter = getBuildListeners();
while (iter.hasNext()) {
newProject.addBuildListener((BuildListener) iter.next());
}
@@ -232,9 +232,7 @@ public class Ant extends Task {
addAlmostAll(getProject().getProperties(), PropertyType.PLAIN);
}

Enumeration e = propertySets.elements();
while (e.hasMoreElements()) {
PropertySet ps = (PropertySet) e.nextElement();
for (PropertySet ps : propertySets) {
addAlmostAll(ps.getProperties(), PropertyType.PLAIN);
}
}
@@ -334,7 +332,7 @@ public class Ant extends Task {
public void execute() throws BuildException {
File savedDir = dir;
String savedAntFile = antFile;
Vector locals = new VectorSet(targets);
Vector<String> locals = new VectorSet<String>(targets);
try {
getNewProject();

@@ -414,10 +412,10 @@ public class Ant extends Task {
+ "its own parent target.");
}
boolean circular = false;
for (Iterator it = locals.iterator();
for (Iterator<String> it = locals.iterator();
!circular && it.hasNext();) {
Target other =
(Target) (getProject().getTargets().get(it.next()));
getProject().getTargets().get(it.next());
circular |= (other != null
&& other.dependsOn(owningTargetName));
}
@@ -452,9 +450,7 @@ public class Ant extends Task {
} finally {
// help the gc
newProject = null;
Enumeration e = properties.elements();
while (e.hasMoreElements()) {
Property p = (Property) e.nextElement();
for (Property p : properties) {
p.setProject(null);
}

@@ -475,7 +471,7 @@ public class Ant extends Task {
* <p>
* This function may be overrided by providers of custom ProjectHelper so they can implement easily their sub
* launcher.
*
*
* @return the name of the default file
* @since Ant 1.8.0
*/
@@ -491,9 +487,9 @@ public class Ant extends Task {
private void overrideProperties() throws BuildException {
// remove duplicate properties - last property wins
// Needed for backward compatibility
Set set = new HashSet();
Set<String> set = new HashSet<String>();
for (int i = properties.size() - 1; i >= 0; --i) {
Property p = (Property) properties.get(i);
Property p = properties.get(i);
if (p.getName() != null && !p.getName().equals("")) {
if (set.contains(p.getName())) {
properties.remove(i);
@@ -502,9 +498,9 @@ public class Ant extends Task {
}
}
}
Enumeration e = properties.elements();
Enumeration<Property> e = properties.elements();
while (e.hasMoreElements()) {
Property p = (Property) e.nextElement();
Property p = e.nextElement();
p.setProject(newProject);
p.execute();
}
@@ -524,39 +520,35 @@ public class Ant extends Task {
* @throws BuildException if a reference does not have a refid.
*/
private void addReferences() throws BuildException {
Hashtable thisReferences
= (Hashtable) getProject().getReferences().clone();
Hashtable newReferences = newProject.getReferences();
Enumeration e;
if (references.size() > 0) {
for (e = references.elements(); e.hasMoreElements();) {
Reference ref = (Reference) e.nextElement();
String refid = ref.getRefId();
if (refid == null) {
throw new BuildException("the refid attribute is required"
+ " for reference elements");
}
if (!thisReferences.containsKey(refid)) {
log("Parent project doesn't contain any reference '"
+ refid + "'",
Project.MSG_WARN);
continue;
}
@SuppressWarnings("unchecked")
Hashtable<String, Object> thisReferences
= (Hashtable<String, Object>) getProject().getReferences().clone();
for (Reference ref : references) {
String refid = ref.getRefId();
if (refid == null) {
throw new BuildException("the refid attribute is required"
+ " for reference elements");
}
if (!thisReferences.containsKey(refid)) {
log("Parent project doesn't contain any reference '"
+ refid + "'",
Project.MSG_WARN);
continue;
}

thisReferences.remove(refid);
String toRefid = ref.getToRefid();
if (toRefid == null) {
toRefid = refid;
}
copyReference(refid, toRefid);
thisReferences.remove(refid);
String toRefid = ref.getToRefid();
if (toRefid == null) {
toRefid = refid;
}
copyReference(refid, toRefid);
}

// Now add all references that are not defined in the
// subproject, if inheritRefs is true
if (inheritRefs) {
for (e = thisReferences.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();
Hashtable<String, Object> newReferences = newProject.getReferences();
for (String key : thisReferences.keySet()) {
if (newReferences.containsKey(key)) {
continue;
}
@@ -584,7 +576,7 @@ public class Ant extends Task {
return;
}

Class c = orig.getClass();
Class<?> c = orig.getClass();
Object copy = orig;
try {
Method cloneM = c.getMethod("clone", new Class[0]);
@@ -628,8 +620,8 @@ public class Ant extends Task {
* user property or an inherited property).
* @since Ant 1.8.0
*/
private void addAlmostAll(Hashtable props, PropertyType type) {
Enumeration e = props.keys();
private void addAlmostAll(Hashtable<?, ?> props, PropertyType type) {
Enumeration<?> e = props.keys();
while (e.hasMoreElements()) {
String key = e.nextElement().toString();
if (MagicNames.PROJECT_BASEDIR.equals(key)
@@ -763,7 +755,7 @@ public class Ant extends Task {
/**
* @since Ant 1.6.2
*/
private Iterator getBuildListeners() {
private Iterator<BuildListener> getBuildListeners() {
return getProject().getBuildListeners().iterator();
}

@@ -776,7 +768,7 @@ public class Ant extends Task {

/** Creates a reference to be configured by Ant. */
public Reference() {
super();
super();
}

private String targetid = null;


+ 22
- 27
src/main/org/apache/tools/ant/taskdefs/AntStructure.java View File

@@ -27,7 +27,6 @@ import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.IntrospectionHelper;
@@ -96,26 +95,21 @@ public class AntStructure extends Task {
}

printer.printHead(out, getProject(),
new Hashtable(getProject().getTaskDefinitions()),
new Hashtable(getProject().getDataTypeDefinitions()));
new Hashtable<String, Class<?>>(getProject().getTaskDefinitions()),
new Hashtable<String, Class<?>>(getProject().getDataTypeDefinitions()));

printer.printTargetDecl(out);

Iterator dataTypes = getProject().getCopyOfDataTypeDefinitions()
.keySet().iterator();
while (dataTypes.hasNext()) {
String typeName = (String) dataTypes.next();
for (String typeName : getProject().getCopyOfDataTypeDefinitions()
.keySet()) {
printer.printElementDecl(
out, getProject(), typeName,
(Class) getProject().getDataTypeDefinitions().get(typeName));
out, getProject(), typeName,
getProject().getDataTypeDefinitions().get(typeName));
}

Iterator tasks = getProject().getCopyOfTaskDefinitions().keySet()
.iterator();
while (tasks.hasNext()) {
String tName = (String) tasks.next();
for (String tName : getProject().getCopyOfTaskDefinitions().keySet()) {
printer.printElementDecl(out, getProject(), tName,
(Class) getProject().getTaskDefinitions().get(tName));
getProject().getTaskDefinitions().get(tName));
}

printer.printTail(out);
@@ -151,8 +145,8 @@ public class AntStructure extends Task {
* @param types map (name to implementing class)
* data types.
*/
void printHead(PrintWriter out, Project p, Hashtable tasks,
Hashtable types);
void printHead(PrintWriter out, Project p, Hashtable<String, Class<?>> tasks,
Hashtable<String, Class<?>> types);

/**
* Prints the definition for the target element.
@@ -169,7 +163,7 @@ public class AntStructure extends Task {
* @param element class of the defined element.
*/
void printElementDecl(PrintWriter out, Project p, String name,
Class element);
Class<?> element);

/**
* Prints the trailer.
@@ -184,13 +178,14 @@ public class AntStructure extends Task {
private static final String TASKS = "%tasks;";
private static final String TYPES = "%types;";

private Hashtable visited = new Hashtable();
private Hashtable<String, String> visited = new Hashtable<String, String>();

public void printTail(PrintWriter out) {
visited.clear();
}

public void printHead(PrintWriter out, Project p, Hashtable tasks, Hashtable types) {
public void printHead(PrintWriter out, Project p, Hashtable<String, Class<?>> tasks,
Hashtable<String, Class<?>> types) {
printHead(out, tasks.keys(), types.keys());
}

@@ -201,14 +196,14 @@ public class AntStructure extends Task {
* <p>Basically this prints the XML declaration, defines some
* entities and the project element.</p>
*/
private void printHead(PrintWriter out, Enumeration tasks,
Enumeration types) {
private void printHead(PrintWriter out, Enumeration<String> tasks,
Enumeration<String> types) {
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
out.println("<!ENTITY % boolean \"(true|false|on|off|yes|no)\">");
out.print("<!ENTITY % tasks \"");
boolean first = true;
while (tasks.hasMoreElements()) {
String tName = (String) tasks.nextElement();
String tName = tasks.nextElement();
if (!first) {
out.print(" | ");
} else {
@@ -220,7 +215,7 @@ public class AntStructure extends Task {
out.print("<!ENTITY % types \"");
first = true;
while (types.hasMoreElements()) {
String typeName = (String) types.nextElement();
String typeName = types.nextElement();
if (!first) {
out.print(" | ");
} else {
@@ -281,7 +276,7 @@ public class AntStructure extends Task {
* Print the definition for a given element.
*/
public void printElementDecl(PrintWriter out, Project p,
String name, Class element) {
String name, Class<?> element) {

if (visited.containsKey(name)) {
return;
@@ -313,7 +308,7 @@ public class AntStructure extends Task {
return;
}

Vector v = new Vector();
Vector<String> v = new Vector<String>();
if (ih.supportsCharacters()) {
v.addElement("#PCDATA");
}
@@ -322,7 +317,7 @@ public class AntStructure extends Task {
v.addElement(TASKS);
}

Enumeration e = ih.getNestedElements();
Enumeration<String> e = ih.getNestedElements();
while (e.hasMoreElements()) {
v.addElement(e.nextElement());
}
@@ -359,7 +354,7 @@ public class AntStructure extends Task {

sb.append(LINE_SEP).append(" ")
.append(attrName).append(" ");
Class type = ih.getAttributeType(attrName);
Class<?> type = ih.getAttributeType(attrName);
if (type.equals(java.lang.Boolean.class)
|| type.equals(java.lang.Boolean.TYPE)) {
sb.append(BOOLEAN).append(" ");


+ 3
- 2
src/main/org/apache/tools/ant/taskdefs/Antlib.java View File

@@ -113,7 +113,7 @@ public class Antlib extends Task implements TaskContainer {
//
private ClassLoader classLoader;
private String uri = "";
private List tasks = new ArrayList();
private List<Object> tasks = new ArrayList<Object>();

/**
* Set the class loader for this antlib.
@@ -155,7 +155,8 @@ public class Antlib extends Task implements TaskContainer {
* any tasks that derive from Definer.
*/
public void execute() {
for (Iterator i = tasks.iterator(); i.hasNext();) {
//TODO handle tasks added via #addTask()
for (Iterator<Object> i = tasks.iterator(); i.hasNext();) {
UnknownElement ue = (UnknownElement) i.next();
setLocation(ue.getLocation());
ue.maybeConfigure();


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

@@ -41,7 +41,7 @@ public class Apt
private boolean compile = true;
private String factory;
private Path factoryPath;
private Vector options = new Vector();
private Vector<Option> options = new Vector<Option>();
private File preprocessDir;
/** The name of the apt tool. */
public static final String EXECUTABLE_NAME = "apt";
@@ -234,7 +234,7 @@ public class Apt
* Each option will use '"-E" name ["=" value]' argument.
* @return the options.
*/
public Vector getOptions() {
public Vector<Option> getOptions() {
return options;
}



+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/AugmentReference.java View File

@@ -32,7 +32,7 @@ public class AugmentReference extends Task implements TypeAdapter {
/**
* {@inheritDoc}
*/
public void checkProxyClass(Class proxyClass) {
public void checkProxyClass(Class<?> proxyClass) {
}

/**


+ 3
- 4
src/main/org/apache/tools/ant/taskdefs/BindTargets.java View File

@@ -33,7 +33,7 @@ public class BindTargets extends Task {

private String extensionPoint;

private List/* <String> */targets = new ArrayList();
private List<String> targets = new ArrayList<String>();

private OnMissingExtensionPoint onMissingExtensionPoint;

@@ -80,10 +80,9 @@ public class BindTargets extends Task {
ProjectHelper helper = (ProjectHelper) getProject().getReference(
ProjectHelper.PROJECTHELPER_REFERENCE);

Iterator itTarget = targets.iterator();
while (itTarget.hasNext()) {
for (Iterator<String> itTarget = targets.iterator(); itTarget.hasNext();) {
helper.getExtensionStack().add(
new String[] { extensionPoint, (String) itTarget.next(),
new String[] { extensionPoint, itTarget.next(),
onMissingExtensionPoint.name() });
}



+ 12
- 20
src/main/org/apache/tools/ant/taskdefs/Checksum.java View File

@@ -31,8 +31,6 @@ import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.Set;
import java.util.Arrays;
import java.text.MessageFormat;
import java.text.ParseException;
@@ -60,7 +58,6 @@ import org.apache.tools.ant.util.StringUtils;
*/
public class Checksum extends MatchingTask implements Condition {

private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
private static final int NIBBLE = 4;
private static final int WORD = 16;
private static final int BUFFER_SIZE = 8 * 1024;
@@ -112,14 +109,14 @@ public class Checksum extends MatchingTask implements Condition {
* Key: java.util.File (source file)
* Value: java.lang.String (digest)
*/
private Map allDigests = new HashMap();
private Map<File, byte[]> allDigests = new HashMap<File, byte[]>();
/**
* Holds relative file names for all files (always with a forward slash).
* This is used to calculate the total hash.
* Key: java.util.File (source file)
* Value: java.lang.String (relative file name)
*/
private Map relativeFilePaths = new HashMap();
private Map<File, String> relativeFilePaths = new HashMap<File, String>();
/**
* Property where totalChecksum gets set.
*/
@@ -140,7 +137,7 @@ public class Checksum extends MatchingTask implements Condition {
/**
* Stores SourceFile, DestFile pairs and SourceFile, Property String pairs.
*/
private Hashtable includeFileMap = new Hashtable();
private Hashtable<File, Object> includeFileMap = new Hashtable<File, Object>();
/**
* Message Digest instance
*/
@@ -478,9 +475,9 @@ public class Checksum extends MatchingTask implements Condition {
FileOutputStream fos = null;
byte[] buf = new byte[readBufferSize];
try {
for (Enumeration e = includeFileMap.keys(); e.hasMoreElements();) {
for (Map.Entry<File, Object> e : includeFileMap.entrySet()) {
messageDigest.reset();
File src = (File) e.nextElement();
File src = e.getKey();
if (!isCondition) {
log("Calculating " + algorithm + " checksum for " + src, Project.MSG_VERBOSE);
}
@@ -499,7 +496,7 @@ public class Checksum extends MatchingTask implements Condition {
}
String checksum = createDigestString(fileDigest);
//can either be a property name string or a file
Object destination = includeFileMap.get(src);
Object destination = e.getValue();
if (destination instanceof java.lang.String) {
String prop = (String) destination;
if (isCondition) {
@@ -549,14 +546,11 @@ public class Checksum extends MatchingTask implements Condition {
if (totalproperty != null) {
// Calculate the total checksum
// Convert the keys (source files) into a sorted array.
Set keys = allDigests.keySet();
Object[] keyArray = keys.toArray();
File[] keyArray = allDigests.keySet().toArray(new File[allDigests.size()]);
// File is Comparable, but sort-order is platform
// dependent (case-insensitive on Windows)
Arrays.sort(keyArray, new Comparator() {
public int compare(Object o1, Object o2) {
File f1 = (File) o1;
File f2 = (File) o2;
Arrays.sort(keyArray, new Comparator<File>() {
public int compare(File f1, File f2) {
return f1 == null ? (f2 == null ? 0 : -1)
: (f2 == null ? 1
: getRelativeFilePath(f1)
@@ -565,11 +559,9 @@ public class Checksum extends MatchingTask implements Condition {
});
// Loop over the checksums and generate a total hash.
messageDigest.reset();
for (int i = 0; i < keyArray.length; i++) {
File src = (File) keyArray[i];

for (File src : keyArray) {
// Add the digest for the file content
byte[] digest = (byte[]) allDigests.get(src);
byte[] digest = allDigests.get(src);
messageDigest.update(digest);

// Add the file path
@@ -675,7 +667,7 @@ public class Checksum extends MatchingTask implements Condition {
* @since 1.7
*/
public static class FormatElement extends EnumeratedAttribute {
private static HashMap formatMap = new HashMap();
private static HashMap<String, MessageFormat> formatMap = new HashMap<String, MessageFormat>();
private static final String CHECKSUM = "CHECKSUM";
private static final String MD5SUM = "MD5SUM";
private static final String SVF = "SVF";


+ 16
- 16
src/main/org/apache/tools/ant/taskdefs/Concat.java View File

@@ -211,8 +211,8 @@ public class Concat extends Task implements ResourceCollection {
}
}

private interface ReaderFactory {
Reader getReader(Object o) throws IOException;
private interface ReaderFactory<S> {
Reader getReader(S s) throws IOException;
}

/**
@@ -220,15 +220,15 @@ public class Concat extends Task implements ResourceCollection {
* The concatentated result can then be filtered as
* a single stream.
*/
private final class MultiReader extends Reader {
private final class MultiReader<S> extends Reader {
private Reader reader = null;
private int lastPos = 0;
private char[] lastChars = new char[eolString.length()];
private boolean needAddSeparator = false;
private Iterator readerSources;
private ReaderFactory factory;
private Iterator<S> readerSources;
private ReaderFactory<S> factory;

private MultiReader(Iterator readerSources, ReaderFactory factory) {
private MultiReader(Iterator<S> readerSources, ReaderFactory<S> factory) {
this.readerSources = readerSources;
this.factory = factory;
}
@@ -389,7 +389,7 @@ public class Concat extends Task implements ResourceCollection {
return result;
}
Reader resourceReader = getFilteredReader(
new MultiReader(c.iterator(), resourceReaderFactory));
new MultiReader<Resource>(c.iterator(), resourceReaderFactory));
Reader rdr;
if (header == null && footer == null) {
rdr = resourceReader;
@@ -417,7 +417,7 @@ public class Concat extends Task implements ResourceCollection {
readers[pos] = getFilteredReader(readers[pos]);
}
}
rdr = new MultiReader(Arrays.asList(readers).iterator(),
rdr = new MultiReader<Reader>(Arrays.asList(readers).iterator(),
identityReaderFactory);
}
return outputEncoding == null ? new ReaderInputStream(rdr)
@@ -469,7 +469,7 @@ public class Concat extends Task implements ResourceCollection {
private Resources rc;

/** for filtering the concatenated */
private Vector filterChains;
private Vector<FilterChain> filterChains;
/** ignore dates on input files */
private boolean forceOverwrite = true;
/** overwrite read-only files */
@@ -490,18 +490,18 @@ public class Concat extends Task implements ResourceCollection {
/** exposed resource name */
private String resourceName;

private ReaderFactory resourceReaderFactory = new ReaderFactory() {
public Reader getReader(Object o) throws IOException {
InputStream is = ((Resource) o).getInputStream();
private ReaderFactory<Resource> resourceReaderFactory = new ReaderFactory<Resource>() {
public Reader getReader(Resource o) throws IOException {
InputStream is = o.getInputStream();
return new BufferedReader(encoding == null
? new InputStreamReader(is)
: new InputStreamReader(is, encoding));
}
};

private ReaderFactory identityReaderFactory = new ReaderFactory() {
public Reader getReader(Object o) {
return (Reader) o;
private ReaderFactory<Reader> identityReaderFactory = new ReaderFactory<Reader>() {
public Reader getReader(Reader o) {
return o;
}
};

@@ -691,7 +691,7 @@ public class Concat extends Task implements ResourceCollection {
*/
public void addFilterChain(FilterChain filterChain) {
if (filterChains == null) {
filterChains = new Vector();
filterChains = new Vector<FilterChain>();
}
filterChains.addElement(filterChain);
}


+ 45
- 62
src/main/org/apache/tools/ant/taskdefs/Copy.java View File

@@ -21,11 +21,9 @@ package org.apache.tools.ant.taskdefs;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;
@@ -76,9 +74,9 @@ public class Copy extends Task {
protected File file = null; // the source file
protected File destFile = null; // the destination file
protected File destDir = null; // the destination directory
protected Vector rcs = new Vector();
protected Vector<ResourceCollection> rcs = new Vector<ResourceCollection>();
// here to provide API backwards compatibility
protected Vector filesets = rcs;
protected Vector<ResourceCollection> filesets = rcs;

private boolean enableMultipleMappings = false;
protected boolean filtering = false;
@@ -89,15 +87,15 @@ public class Copy extends Task {
protected boolean includeEmpty = true;
protected boolean failonerror = true;

protected Hashtable fileCopyMap = new LinkedHashtable();
protected Hashtable dirCopyMap = new LinkedHashtable();
protected Hashtable completeDirMap = new LinkedHashtable();
protected Hashtable<String, String[]> fileCopyMap = new LinkedHashtable<String, String[]>();
protected Hashtable<String, String[]> dirCopyMap = new LinkedHashtable<String, String[]>();
protected Hashtable<File, File> completeDirMap = new LinkedHashtable<File, File>();

protected Mapper mapperElement = null;
protected FileUtils fileUtils;
//CheckStyle:VisibilityModifier ON
private Vector filterChains = new Vector();
private Vector filterSets = new Vector();
private Vector<FilterChain> filterChains = new Vector<FilterChain>();
private Vector<FilterSet> filterSets = new Vector<FilterSet>();
private String inputEncoding = null;
private String outputEncoding = null;
private long granularity = 0;
@@ -204,7 +202,7 @@ public class Copy extends Task {
*
* @return a vector of FilterSet objects.
*/
protected Vector getFilterSets() {
protected Vector<FilterSet> getFilterSets() {
return filterSets;
}

@@ -213,7 +211,7 @@ public class Copy extends Task {
*
* @return a vector of FilterChain objects.
*/
protected Vector getFilterChains() {
protected Vector<FilterChain> getFilterChains() {
return filterChains;
}

@@ -288,7 +286,7 @@ public class Copy extends Task {
/**
* Set quiet mode. Used to hide messages when a file or directory to be
* copied does not exist.
*
*
* @param quiet
* whether or not to display error messages when a file or
* directory does not exist. Default is false.
@@ -473,13 +471,13 @@ public class Copy extends Task {
separate lists and then each list is handled in one go.
*/

HashMap filesByBasedir = new HashMap();
HashMap dirsByBasedir = new HashMap();
HashSet baseDirs = new HashSet();
ArrayList nonFileResources = new ArrayList();
HashMap<File, List<String>> filesByBasedir = new HashMap<File, List<String>>();
HashMap<File, List<String>> dirsByBasedir = new HashMap<File, List<String>>();
HashSet<File> baseDirs = new HashSet<File>();
ArrayList<Resource> nonFileResources = new ArrayList<Resource>();
final int size = rcs.size();
for (int i = 0; i < size; i++) {
ResourceCollection rc = (ResourceCollection) rcs.elementAt(i);
ResourceCollection rc = rcs.elementAt(i);

// Step (1) - beware of the ZipFileSet
if (rc instanceof FileSet && rc.isFilesystemOnly()) {
@@ -577,7 +575,7 @@ public class Copy extends Task {
Resource[] nonFiles =
(Resource[]) nonFileResources.toArray(new Resource[nonFileResources.size()]);
// restrict to out-of-date resources
Map map = scan(nonFiles, destDir);
Map<Resource, String[]> map = scan(nonFiles, destDir);
if (singleResource != null) {
map.put(singleResource,
new String[] { destFile.getAbsolutePath() });
@@ -645,21 +643,19 @@ public class Copy extends Task {
}

private void iterateOverBaseDirs(
HashSet baseDirs, HashMap dirsByBasedir, HashMap filesByBasedir) {
HashSet<File> baseDirs, HashMap<File, List<String>> dirsByBasedir, HashMap<File, List<String>> filesByBasedir) {

Iterator iter = baseDirs.iterator();
while (iter.hasNext()) {
File f = (File) iter.next();
List files = (List) filesByBasedir.get(f);
List dirs = (List) dirsByBasedir.get(f);
for (File f : baseDirs) {
List<String> files = filesByBasedir.get(f);
List<String> dirs = dirsByBasedir.get(f);

String[] srcFiles = new String[0];
if (files != null) {
srcFiles = (String[]) files.toArray(srcFiles);
srcFiles = files.toArray(srcFiles);
}
String[] srcDirs = new String[0];
if (dirs != null) {
srcDirs = (String[]) dirs.toArray(srcDirs);
srcDirs = dirs.toArray(srcDirs);
}
scan(f == NULL_FILE_PLACEHOLDER ? null : f, destDir, srcFiles,
srcDirs);
@@ -755,7 +751,7 @@ public class Copy extends Task {
*
* @since Ant 1.7
*/
protected Map scan(Resource[] fromResources, File toDir) {
protected Map<Resource, String[]> scan(Resource[] fromResources, File toDir) {
return buildMap(fromResources, toDir, getMapper());
}

@@ -769,10 +765,10 @@ public class Copy extends Task {
* @param map a map of source file to array of destination files.
*/
protected void buildMap(File fromDir, File toDir, String[] names,
FileNameMapper mapper, Hashtable map) {
FileNameMapper mapper, Hashtable<String, String[]> map) {
String[] toCopy = null;
if (forceOverwrite) {
Vector v = new Vector();
Vector<String> v = new Vector<String>();
for (int i = 0; i < names.length; i++) {
if (mapper.mapFileName(names[i]) != null) {
v.addElement(names[i]);
@@ -810,12 +806,12 @@ public class Copy extends Task {
* @return a map of source resource to array of destination files.
* @since Ant 1.7
*/
protected Map buildMap(Resource[] fromResources, final File toDir,
protected Map<Resource, String[]> buildMap(Resource[] fromResources, final File toDir,
FileNameMapper mapper) {
HashMap map = new HashMap();
HashMap<Resource, String[]> map = new HashMap<Resource, String[]>();
Resource[] toCopy = null;
if (forceOverwrite) {
Vector v = new Vector();
Vector<Resource> v = new Vector<Resource>();
for (int i = 0; i < fromResources.length; i++) {
if (mapper.mapFileName(fromResources[i].getName()) != null) {
v.addElement(fromResources[i]);
@@ -868,10 +864,9 @@ public class Copy extends Task {
+ " file" + (fileCopyMap.size() == 1 ? "" : "s")
+ " to " + destDir.getAbsolutePath());

Enumeration e = fileCopyMap.keys();
while (e.hasMoreElements()) {
String fromFile = (String) e.nextElement();
String[] toFiles = (String[]) fileCopyMap.get(fromFile);
for (Map.Entry<String, String[]> e : fileCopyMap.entrySet()) {
String fromFile = e.getKey();
String[] toFiles = e.getValue();

for (int i = 0; i < toFiles.length; i++) {
String toFile = toFiles[i];
@@ -889,10 +884,8 @@ public class Copy extends Task {
executionFilters
.addFilterSet(getProject().getGlobalFilterSet());
}
for (Enumeration filterEnum = filterSets.elements();
filterEnum.hasMoreElements();) {
executionFilters
.addFilterSet((FilterSet) filterEnum.nextElement());
for (FilterSet filterSet : filterSets) {
executionFilters.addFilterSet(filterSet);
}
fileUtils.copyFile(new File(fromFile), new File(toFile),
executionFilters,
@@ -917,10 +910,8 @@ public class Copy extends Task {
}
}
if (includeEmpty) {
Enumeration e = dirCopyMap.elements();
int createCount = 0;
while (e.hasMoreElements()) {
String[] dirs = (String[]) e.nextElement();
for (String[] dirs : dirCopyMap.values()) {
for (int i = 0; i < dirs.length; i++) {
File d = new File(dirs[i]);
if (!d.exists()) {
@@ -951,34 +942,26 @@ public class Copy extends Task {
* @param map a map of source resource to array of destination files.
* @since Ant 1.7
*/
protected void doResourceOperations(Map map) {
protected void doResourceOperations(Map<Resource, String[]> map) {
if (map.size() > 0) {
log("Copying " + map.size()
+ " resource" + (map.size() == 1 ? "" : "s")
+ " to " + destDir.getAbsolutePath());

Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
Resource fromResource = (Resource) iter.next();
String[] toFiles = (String[]) map.get(fromResource);

for (int i = 0; i < toFiles.length; i++) {
String toFile = toFiles[i];

for (Map.Entry<Resource, String[]> e : map.entrySet()) {
Resource fromResource = e.getKey();
for (String toFile : e.getValue()) {
try {
log("Copying " + fromResource + " to " + toFile,
verbosity);

FilterSetCollection executionFilters =
new FilterSetCollection();
FilterSetCollection executionFilters = new FilterSetCollection();
if (filtering) {
executionFilters
.addFilterSet(getProject().getGlobalFilterSet());
}
for (Enumeration filterEnum = filterSets.elements();
filterEnum.hasMoreElements();) {
executionFilters
.addFilterSet((FilterSet) filterEnum.nextElement());
for (FilterSet filterSet : filterSets) {
executionFilters.addFilterSet(filterSet);
}
ResourceUtils.copyResource(fromResource,
new FileResource(destDir,
@@ -1032,12 +1015,12 @@ public class Copy extends Task {
* Adds the given strings to a list contained in the given map.
* The file is the key into the map.
*/
private static void add(File baseDir, String[] names, Map m) {
private static void add(File baseDir, String[] names, Map<File, List<String>> m) {
if (names != null) {
baseDir = getKeyFile(baseDir);
List l = (List) m.get(baseDir);
List<String> l = m.get(baseDir);
if (l == null) {
l = new ArrayList(names.length);
l = new ArrayList<String>(names.length);
m.put(baseDir, l);
}
l.addAll(java.util.Arrays.asList(names));
@@ -1048,7 +1031,7 @@ public class Copy extends Task {
* Adds the given string to a list contained in the given map.
* The file is the key into the map.
*/
private static void add(File baseDir, String name, Map m) {
private static void add(File baseDir, String name, Map<File, List<String>> m) {
if (name != null) {
add(baseDir, new String[] {name}, m);
}


+ 6
- 6
src/main/org/apache/tools/ant/taskdefs/Copydir.java View File

@@ -20,8 +20,9 @@ package org.apache.tools.ant.taskdefs;

import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Map;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
@@ -41,7 +42,7 @@ public class Copydir extends MatchingTask {
private boolean filtering = false;
private boolean flatten = false;
private boolean forceOverwrite = false;
private Hashtable filecopyList = new Hashtable();
private Hashtable<String, String> filecopyList = new Hashtable<String, String>();

/**
* The src attribute
@@ -124,10 +125,9 @@ public class Copydir extends MatchingTask {
log("Copying " + filecopyList.size() + " file"
+ (filecopyList.size() == 1 ? "" : "s")
+ " to " + destDir.getAbsolutePath());
Enumeration e = filecopyList.keys();
while (e.hasMoreElements()) {
String fromFile = (String) e.nextElement();
String toFile = (String) filecopyList.get(fromFile);
for (Map.Entry<String, String> e : filecopyList.entrySet()) {
String fromFile = e.getKey();
String toFile = e.getValue();
try {
getProject().copyFile(fromFile, toFile, filtering,
forceOverwrite);


+ 25
- 40
src/main/org/apache/tools/ant/taskdefs/Definer.java View File

@@ -22,16 +22,17 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Properties;

import org.apache.tools.ant.AntTypeDefinition;
import org.apache.tools.ant.ComponentHelper;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Location;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
import org.apache.tools.ant.MagicNames;
@@ -53,15 +54,12 @@ public abstract class Definer extends DefBase {
*/
private static final String ANTLIB_XML = "/antlib.xml";

private static class ResourceStack extends ThreadLocal {
public Object initialValue() {
return new HashMap();
private static final ThreadLocal<Map<URL, Location>> RESOURCE_STACK = new ThreadLocal<Map<URL, Location>>() {
protected Map<URL, Location> initialValue() {
return new HashMap<URL, Location>();
}
Map getStack() {
return (Map) get();
}
}
private static ResourceStack resourceStack = new ResourceStack();
};

private String name;
private String classname;
private File file;
@@ -74,8 +72,8 @@ public abstract class Definer extends DefBase {
private String adapter;
private String adaptTo;

private Class adapterClass;
private Class adaptToClass;
private Class<?> adapterClass;
private Class<?> adaptToClass;

/**
* Enumerated type for onError attribute
@@ -243,32 +241,19 @@ public abstract class Definer extends DefBase {
+ "together with file or resource.";
throw new BuildException(msg, getLocation());
}
Enumeration/*<URL>*/ urls = null;
if (file != null) {
final Enumeration<URL> urls;
if (file == null) {
urls = resourceToURLs(al);
} else {
final URL url = fileToURL();
if (url == null) {
return;
}
urls = new Enumeration() {
private boolean more = true;
public boolean hasMoreElements() {
return more;
}
public Object nextElement() throws NoSuchElementException {
if (more) {
more = false;
return url;
} else {
throw new NoSuchElementException();
}
}
};
} else {
urls = resourceToURLs(al);
urls = Collections.enumeration(Collections.singleton(url));
}

while (urls.hasMoreElements()) {
URL url = (URL) urls.nextElement();
URL url = urls.nextElement();

int fmt = this.format;
if (url.toString().toLowerCase(Locale.ENGLISH).endsWith(".xml")) {
@@ -279,19 +264,19 @@ public abstract class Definer extends DefBase {
loadProperties(al, url);
break;
} else {
if (resourceStack.getStack().get(url) != null) {
if (RESOURCE_STACK.get().get(url) != null) {
log("Warning: Recursive loading of " + url
+ " ignored"
+ " at " + getLocation()
+ " originally loaded at "
+ resourceStack.getStack().get(url),
+ RESOURCE_STACK.get().get(url),
Project.MSG_WARN);
} else {
try {
resourceStack.getStack().put(url, getLocation());
RESOURCE_STACK.get().put(url, getLocation());
loadAntlib(al, url);
} finally {
resourceStack.getStack().remove(url);
RESOURCE_STACK.get().remove(url);
}
}
}
@@ -369,8 +354,8 @@ public abstract class Definer extends DefBase {
return null;
}

private Enumeration/*<URL>*/ resourceToURLs(ClassLoader classLoader) {
Enumeration ret;
private Enumeration<URL> resourceToURLs(ClassLoader classLoader) {
Enumeration<URL> ret;
try {
ret = classLoader.getResources(resource);
} catch (IOException e) {
@@ -416,7 +401,7 @@ public abstract class Definer extends DefBase {
}
Properties props = new Properties();
props.load(is);
Enumeration keys = props.keys();
Enumeration<?> keys = props.keys();
while (keys.hasMoreElements()) {
name = ((String) keys.nextElement());
classname = props.getProperty(name);
@@ -548,7 +533,7 @@ public abstract class Definer extends DefBase {
*
* @param adapterClass the class to use to adapt the definition class
*/
protected void setAdapterClass(Class adapterClass) {
protected void setAdapterClass(Class<?> adapterClass) {
this.adapterClass = adapterClass;
}

@@ -570,7 +555,7 @@ public abstract class Definer extends DefBase {
*
* @param adaptToClass the class for adaptor.
*/
protected void setAdaptToClass(Class adaptToClass) {
protected void setAdaptToClass(Class<?> adaptToClass) {
this.adaptToClass = adaptToClass;
}

@@ -585,7 +570,7 @@ public abstract class Definer extends DefBase {
*/
protected void addDefinition(ClassLoader al, String name, String classname)
throws BuildException {
Class cl = null;
Class<?> cl = null;
try {
try {
name = ProjectHelper.genComponentName(getURI(), name);


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

@@ -81,8 +81,8 @@ public class Delete extends MatchingTask {
private static final ResourceSelector EXISTS = new Exists();

private static class ReverseDirs implements ResourceCollection {
static final Comparator REVERSE = new Comparator() {
public int compare(Object foo, Object bar) {
static final Comparator<Comparable<?>> REVERSE = new Comparator<Comparable<?>>() {
public int compare(Comparable<?> foo, Comparable<?> bar) {
return ((Comparable) foo).compareTo(bar) * -1;
}
};
@@ -105,7 +105,7 @@ public class Delete extends MatchingTask {
// CheckStyle:VisibilityModifier OFF - bc
protected File file = null;
protected File dir = null;
protected Vector filesets = new Vector();
protected Vector<FileSet> filesets = new Vector<FileSet>();
protected boolean usedMatchingTask = false;
// by default, remove matching empty dirs
protected boolean includeEmpty = false;


+ 3
- 6
src/main/org/apache/tools/ant/taskdefs/ExecTask.java View File

@@ -20,11 +20,8 @@ package org.apache.tools.ant.taskdefs;

import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Locale;
import java.util.Map;
import java.util.Vector;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
@@ -721,8 +718,8 @@ public class ExecTask extends Task {
return line.substring("PATH=".length());
}

private String getPath(Map/*<String, String>*/ map) {
String p = (String) map.get("PATH");
return p != null ? p : (String) map.get("Path");
private String getPath(Map<String, String> map) {
String p = map.get("PATH");
return p != null ? p : map.get("Path");
}
}

+ 48
- 50
src/main/org/apache/tools/ant/taskdefs/Execute.java View File

@@ -26,9 +26,9 @@ import java.io.OutputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Vector;

import org.apache.tools.ant.BuildException;
@@ -43,7 +43,7 @@ import org.apache.tools.ant.util.StringUtils;

/**
* Runs an external program.
*
*
* @since Ant 1.2
*/
public class Execute {
@@ -68,7 +68,7 @@ public class Execute {
private boolean useVMLauncher = true;

private static String antWorkingDirectory = System.getProperty("user.dir");
private static Map/*<String, String>*/ procEnvironment = null;
private static Map<String, String> procEnvironment = null;

/** Used to destroy processes when the VM exits. */
private static ProcessDestroyer processDestroyer = new ProcessDestroyer();
@@ -85,7 +85,7 @@ public class Execute {
/**
* Set whether or not you want the process to be spawned.
* Default is not spawned.
*
*
* @param spawn if true you do not want Ant
* to wait for the end of the process.
* Has no influence in here, the calling task contains
@@ -101,27 +101,29 @@ public class Execute {

/**
* Find the list of environment variables for this process.
*
*
* @return a map containing the environment variables.
* @since Ant 1.8.2
*/
public static synchronized Map/*<String,String>*/ getEnvironmentVariables() {
public static synchronized Map<String,String> getEnvironmentVariables() {
if (procEnvironment != null) {
return procEnvironment;
}
if (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_1_5)
&& !Os.isFamily("openvms")) {
try {
procEnvironment = (Map) System.class
@SuppressWarnings("unchecked")
final Map<String, String> cast = (Map<String, String>) System.class
.getMethod("getenv", new Class[0])
.invoke(null, new Object[0]);
procEnvironment = cast;
return procEnvironment;
} catch (Exception x) {
x.printStackTrace();
}
}

procEnvironment = new LinkedHashMap();
procEnvironment = new LinkedHashMap<String, String>();
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
Execute exe = new Execute(new PumpStreamHandler(out));
@@ -174,17 +176,15 @@ public class Execute {

/**
* Find the list of environment variables for this process.
*
*
* @return a vector containing the environment variables.
* The vector elements are strings formatted like variable = value.
* @deprecated use #getEnvironmentVariables instead
*/
@Deprecated
public static synchronized Vector getProcEnvironment() {
Vector v = new Vector();
Iterator it = getEnvironmentVariables().entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
public static synchronized Vector<String> getProcEnvironment() {
Vector<String> v = new Vector<String>();
for (Entry<String, String> entry : getEnvironmentVariables().entrySet()) {
v.add(entry.getKey() + "=" + entry.getValue());
}
return v;
@@ -194,7 +194,7 @@ public class Execute {
* This is the operation to get our environment.
* It is a notorious troublespot pre-Java1.5, and should be approached
* with extreme caution.
*
*
* @return
*/
private static String[] getProcEnvCommand() {
@@ -240,7 +240,7 @@ public class Execute {
* ByteArrayOutputStream#toString doesn't seem to work reliably on
* OS/390, at least not the way we use it in the execution
* context.
*
*
* @param bos the output stream that one wants to read.
* @return the output stream as a string, read with
* special encodings in the case of z/os and os/400.
@@ -273,7 +273,7 @@ public class Execute {

/**
* Creates a new execute object.
*
*
* @param streamHandler the stream handler used to handle the input and
* output streams of the subprocess.
*/
@@ -283,7 +283,7 @@ public class Execute {

/**
* Creates a new execute object.
*
*
* @param streamHandler the stream handler used to handle the input and
* output streams of the subprocess.
* @param watchdog a watchdog for the subprocess or <code>null</code>
@@ -302,7 +302,7 @@ public class Execute {

/**
* Set the stream handler to use.
*
*
* @param streamHandler ExecuteStreamHandler.
* @since Ant 1.6
*/
@@ -312,7 +312,7 @@ public class Execute {

/**
* Returns the commandline used to create a subprocess.
*
*
* @return the commandline used to create a subprocess.
*/
public String[] getCommandline() {
@@ -321,7 +321,7 @@ public class Execute {

/**
* Sets the commandline of the subprocess to launch.
*
*
* @param commandline the commandline of the subprocess to launch.
*/
public void setCommandline(String[] commandline) {
@@ -330,7 +330,7 @@ public class Execute {

/**
* Set whether to propagate the default environment or not.
*
*
* @param newenv whether to propagate the process environment.
*/
public void setNewenvironment(boolean newenv) {
@@ -339,7 +339,7 @@ public class Execute {

/**
* Returns the environment used to create a subprocess.
*
*
* @return the environment used to create a subprocess.
*/
public String[] getEnvironment() {
@@ -349,7 +349,7 @@ public class Execute {

/**
* Sets the environment variables for the subprocess to launch.
*
*
* @param env array of Strings, each element of which has
* an environment variable settings in format <em>key=value</em>.
*/
@@ -364,7 +364,7 @@ public class Execute {
* Windows NT in which case a cmd.exe is spawned,
* or MRJ and setting user.dir works, or JDK 1.3 and there is
* official support in java.lang.Runtime.
*
*
* @param wd the working directory of the process.
*/
public void setWorkingDirectory(File wd) {
@@ -375,7 +375,7 @@ public class Execute {

/**
* Return the working directory.
*
*
* @return the directory as a File.
* @since Ant 1.7
*/
@@ -386,7 +386,7 @@ public class Execute {

/**
* Set the name of the antRun script using the project's value.
*
*
* @param project the current project.
* @throws BuildException not clear when it is going to throw an exception, but
* it is the method's signature.
@@ -400,7 +400,7 @@ public class Execute {
* the OS's shell. In some cases and operating systems using the shell will
* allow the shell to perform additional processing such as associating an
* executable with a script, etc.
*
*
* @param useVMLauncher true if exec should launch through the VM,
* false if the shell should be used to launch the
* command.
@@ -411,7 +411,7 @@ public class Execute {

/**
* Creates a process that runs a command.
*
*
* @param project the Project, only used for logging purposes, may be null.
* @param command the command to run.
* @param env the environment for the command.
@@ -436,7 +436,7 @@ public class Execute {

/**
* Runs a process defined by the command line and returns its exit status.
*
*
* @return the exit status of the subprocess or <code>INVALID</code>.
* @exception java.io.IOException The exception is thrown, if launching
* of the subprocess failed.
@@ -493,7 +493,7 @@ public class Execute {
/**
* Starts a process defined by the command line.
* Ant will not wait for this process, nor log its output.
*
*
* @throws java.io.IOException The exception is thrown, if launching
* of the subprocess failed.
* @since Ant 1.6
@@ -532,7 +532,7 @@ public class Execute {

/**
* Wait for a given process.
*
*
* @param process the process one wants to wait for.
*/
protected void waitFor(Process process) {
@@ -546,7 +546,7 @@ public class Execute {

/**
* Set the exit value.
*
*
* @param value exit value of the process.
*/
protected void setExitValue(int value) {
@@ -555,7 +555,7 @@ public class Execute {

/**
* Query the exit value of the process.
*
*
* @return the exit value or Execute.INVALID if no exit value has
* been received.
*/
@@ -574,7 +574,7 @@ public class Execute {
* return 0 if successful (like on any other platform), but this
* signals a failure on OpenVMS. So if you execute a new Java VM
* on OpenVMS, you cannot trust this method.</p>
*
*
* @param exitValue the exit value (return code) to be checked.
* @return <code>true</code> if <code>exitValue</code> signals a failure.
*/
@@ -587,7 +587,7 @@ public class Execute {

/**
* Did this execute return in a failure.
*
*
* @see #isFailure(int)
* @return true if and only if the exit code is interpreted as a failure
* @since Ant1.7
@@ -598,7 +598,7 @@ public class Execute {

/**
* Test for an untimely death of the process.
*
*
* @return true if a watchdog had to kill the process.
* @since Ant 1.5
*/
@@ -608,7 +608,7 @@ public class Execute {

/**
* Patch the current environment with the new values from the user.
*
*
* @return the patched environment.
*/
private String[] patchEnvironment() {
@@ -618,8 +618,8 @@ public class Execute {
if (Os.isFamily("openvms")) {
return env;
}
Map/*<String, String>*/ osEnv =
new LinkedHashMap(getEnvironmentVariables());
Map<String, String> osEnv =
new LinkedHashMap<String, String>(getEnvironmentVariables());
for (int i = 0; i < env.length; i++) {
String keyValue = env[i];
String key = keyValue.substring(0, keyValue.indexOf('='));
@@ -630,8 +630,7 @@ public class Execute {
if (osEnv.remove(key) == null && environmentCaseInSensitive) {
// not found, maybe perform a case insensitive search

for (Iterator it = osEnv.keySet().iterator(); it.hasNext();) {
String osEnvItem = (String) it.next();
for (String osEnvItem : osEnv.keySet()) {
// Nb: using default locale as key is a env name
if (osEnvItem.toLowerCase().equals(key.toLowerCase())) {
// Use the original casiness of the key
@@ -645,18 +644,17 @@ public class Execute {
osEnv.put(key, keyValue.substring(key.length() + 1));
}

ArrayList l = new ArrayList();
for (Iterator it = osEnv.entrySet().iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
ArrayList<String> l = new ArrayList<String>();
for (Entry<String, String> entry : osEnv.entrySet()) {
l.add(entry.getKey() + "=" + entry.getValue());
}
return (String[]) (l.toArray(new String[osEnv.size()]));
return l.toArray(new String[osEnv.size()]);
}

/**
* A utility method that runs an external command. Writes the output and
* error streams of the command to the project log.
*
*
* @param task The task that the command is part of. Used for logging
* @param cmdline The command to execute.
* @throws BuildException if the command does not exit successfully.
@@ -683,7 +681,7 @@ public class Execute {

/**
* Close the streams belonging to the given Process.
*
*
* @param process the <code>Process</code>.
*/
public static void closeStreams(Process process) {
@@ -703,9 +701,9 @@ public class Execute {
* multiple equivalence names are mapped to a variable with multiple
* values separated by a comma (,).
*/
private static Map getVMSLogicals(BufferedReader in)
private static Map<String, String> getVMSLogicals(BufferedReader in)
throws IOException {
HashMap logicals = new HashMap();
HashMap<String, String> logicals = new HashMap<String, String>();
String logName = null, logValue = null, newLogName;
String line = null;
// CheckStyle:MagicNumber OFF


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java View File

@@ -120,7 +120,7 @@ public class ExecuteJava implements Runnable, TimeoutObserver {
if (sysProperties != null) {
sysProperties.setSystem();
}
Class target = null;
Class<?> target = null;
try {
if (classpath == null) {
target = Class.forName(classname);


+ 9
- 9
src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java View File

@@ -59,7 +59,7 @@ public class ExecuteOn extends ExecTask {
// switching type to "dir" when we encounter a DirSet that would
// be more difficult to achieve otherwise.

protected Vector filesets = new Vector(); // contains AbstractFileSet
protected Vector<AbstractFileSet> filesets = new Vector<AbstractFileSet>(); // contains AbstractFileSet
// (both DirSet and FileSet)
private Union resources = null;
private boolean relative = false;
@@ -349,12 +349,12 @@ public class ExecuteOn extends ExecTask {
int totalDirs = 0;
boolean haveExecuted = false;
try {
Vector fileNames = new Vector();
Vector baseDirs = new Vector();
Vector<String> fileNames = new Vector<String>();
Vector<File> baseDirs = new Vector<File>();
final int size = filesets.size();
for (int i = 0; i < size; i++) {
String currentType = type;
AbstractFileSet fs = (AbstractFileSet) filesets.elementAt(i);
AbstractFileSet fs = filesets.elementAt(i);
if (fs instanceof DirSet) {
if (!FileDirBoth.DIR.equals(type)) {
log("Found a nested dirset but type is " + type + ". "
@@ -523,16 +523,16 @@ public class ExecuteOn extends ExecTask {
*/
protected String[] getCommandline(String[] srcFiles, File[] baseDirs) {
final char fileSeparator = File.separatorChar;
Vector targets = new Vector();
Vector<String> targets = new Vector<String>();
if (targetFilePos != null) {
HashSet addedFiles = new HashSet();
HashSet<String> addedFiles = new HashSet<String>();
for (int i = 0; i < srcFiles.length; i++) {
String[] subTargets = mapper.mapFileName(srcFiles[i]);
if (subTargets != null) {
for (int j = 0; j < subTargets.length; j++) {
String name = null;
if (!relative) {
name = (new File(destDir, subTargets[j])).getAbsolutePath();
name = new File(destDir, subTargets[j]).getAbsolutePath();
} else {
name = subTargets[j];
}
@@ -693,8 +693,8 @@ public class ExecuteOn extends ExecTask {
* @throws BuildException on other errors.
* @since Ant 1.6
*/
protected void runParallel(Execute exe, Vector fileNames,
Vector baseDirs)
protected void runParallel(Execute exe, Vector<String> fileNames,
Vector<File> baseDirs)
throws IOException, BuildException {
String[] s = new String[fileNames.size()];
fileNames.copyInto(s);


+ 10
- 10
src/main/org/apache/tools/ant/taskdefs/Expand.java View File

@@ -63,7 +63,7 @@ public class Expand extends Task {
private File source; // req
private boolean overwrite = true;
private Mapper mapperElement = null;
private Vector patternsets = new Vector();
private Vector<PatternSet> patternsets = new Vector<PatternSet>();
private Union resources = new Union();
private boolean resourcesSpecified = false;
private boolean failOnEmptyArchive = false;
@@ -167,10 +167,10 @@ public class Expand extends Task {
try {
zf = new ZipFile(srcF, encoding, scanForUnicodeExtraFields);
boolean empty = true;
Enumeration e = zf.getEntries();
Enumeration<ZipEntry> e = zf.getEntries();
while (e.hasMoreElements()) {
empty = false;
ZipEntry ze = (ZipEntry) e.nextElement();
ZipEntry ze = e.nextElement();
InputStream is = null;
log("extracting " + ze.getName(), Project.MSG_DEBUG);
try {
@@ -254,11 +254,11 @@ public class Expand extends Task {
.replace('\\', File.separatorChar);

boolean included = false;
Set includePatterns = new HashSet();
Set excludePatterns = new HashSet();
Set<String> includePatterns = new HashSet<String>();
Set<String> excludePatterns = new HashSet<String>();
final int size = patternsets.size();
for (int v = 0; v < size; v++) {
PatternSet p = (PatternSet) patternsets.elementAt(v);
PatternSet p = patternsets.elementAt(v);
String[] incls = p.getIncludePatterns(getProject());
if (incls == null || incls.length == 0) {
// no include pattern implicitly means includes="**"
@@ -288,15 +288,15 @@ public class Expand extends Task {
}
}

for (Iterator iter = includePatterns.iterator();
for (Iterator<String> iter = includePatterns.iterator();
!included && iter.hasNext();) {
String pattern = (String) iter.next();
String pattern = iter.next();
included = SelectorUtils.matchPath(pattern, name);
}

for (Iterator iter = excludePatterns.iterator();
for (Iterator<String> iter = excludePatterns.iterator();
included && iter.hasNext();) {
String pattern = (String) iter.next();
String pattern = iter.next();
included = !SelectorUtils.matchPath(pattern, name);
}



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

@@ -95,7 +95,7 @@ public class FixCRLF extends MatchingTask implements ChainableReader {
private File destDir = null;
private File file;
private FixCrLfFilter filter = new FixCrLfFilter();
private Vector fcv = null;
private Vector<FilterChain> fcv = null;

/**
* Encoding to assume for the files
@@ -349,7 +349,7 @@ public class FixCRLF extends MatchingTask implements ChainableReader {
if (fcv == null) {
FilterChain fc = new FilterChain();
fc.add(filter);
fcv = new Vector(1);
fcv = new Vector<FilterChain>(1);
fcv.add(fc);
}
File tmpFile = FILE_UTILS.createTempFile("fixcrlf", "", null, true, false);
@@ -390,7 +390,7 @@ public class FixCRLF extends MatchingTask implements ChainableReader {
* Deprecated, the functionality has been moved to filters.FixCrLfFilter.
* @deprecated since 1.7.0.
*/
protected class OneLiner implements Enumeration {
protected class OneLiner implements Enumeration<Object> {
private static final int UNDEF = -1;
private static final int NOTJAVA = 0;
private static final int LOOKING = 1;


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

@@ -78,7 +78,7 @@ public class GenerateKey extends Task {
* A class corresponding to the dname nested element.
*/
public static class DistinguishedName {
private Vector params = new Vector();
private Vector<DnameParam> params = new Vector<DnameParam>();

/**
* Create a param nested element.
@@ -95,7 +95,7 @@ public class GenerateKey extends Task {
* Get the nested parameters.
* @return an enumeration of the nested parameters.
*/
public Enumeration getParams() {
public Enumeration<DnameParam> getParams() {
return params.elements();
}



+ 14
- 18
src/main/org/apache/tools/ant/taskdefs/HostInfo.java View File

@@ -24,7 +24,6 @@ import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

@@ -35,7 +34,7 @@ import org.apache.tools.ant.Task;
/**
* Sets properties to the host provided, or localhost if no information is
* provided. The default properties are NAME, FQDN, ADDR4, ADDR6;
*
*
* @since Ant 1.8
* @ant.task category="utility"
*/
@@ -71,12 +70,12 @@ public class HostInfo extends Task {

private InetAddress best4;

private List inetAddrs;
private List<InetAddress> inetAddrs;

/**
* Set a prefix for the properties. If the prefix does not end with a "."
* one is automatically added.
*
*
* @param aPrefix
* the prefix to use.
* @since Ant 1.8
@@ -90,7 +89,7 @@ public class HostInfo extends Task {

/**
* Set the host to be retrieved.
*
*
* @param aHost
* the name or the address of the host, data for the local host
* will be retrieved if omitted.
@@ -102,7 +101,7 @@ public class HostInfo extends Task {

/**
* set the properties.
*
*
* @throws BuildException
* on error.
*/
@@ -116,12 +115,11 @@ public class HostInfo extends Task {

private void executeLocal() {
try {
Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
inetAddrs = new LinkedList();
inetAddrs = new LinkedList<InetAddress>();
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface currentif = (NetworkInterface) interfaces
.nextElement();
Enumeration addrs = currentif.getInetAddresses();
NetworkInterface currentif = interfaces.nextElement();
Enumeration<InetAddress> addrs = currentif.getInetAddresses();
while (addrs.hasMoreElements())
{
inetAddrs.add(addrs.nextElement());
@@ -153,16 +151,14 @@ public class HostInfo extends Task {
setProperty(ADDR6, DEF_LOCAL_ADDR6);
}
}
private boolean hasHostName(InetAddress addr)
{
{
return !addr.getHostAddress().equals(addr.getCanonicalHostName());
}

private void selectAddresses() {
Iterator i = inetAddrs.iterator();
while (i.hasNext()) {
InetAddress current = (InetAddress) i.next();
for (InetAddress current : inetAddrs) {
if (!current.isMulticastAddress()) {
if (current instanceof Inet4Address) {
best4 = selectBestAddress(best4, current);
@@ -171,7 +167,7 @@ public class HostInfo extends Task {
}
}
}
nameAddr = selectBestAddress(best4, best6);
}

@@ -199,7 +195,7 @@ public class HostInfo extends Task {
best = current;
}
} else {
// current is a "Global address", considered better than
// current is a "Global address", considered better than
// site local (and better than link local, loopback)
// address with hostname resolved considered better than
// address without hostname


+ 3
- 4
src/main/org/apache/tools/ant/taskdefs/ImportTask.java View File

@@ -34,7 +34,6 @@ import org.apache.tools.ant.util.FileUtils;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.Vector;

/**
@@ -142,7 +141,7 @@ public class ImportTask extends Task {
throw new BuildException("import requires support in ProjectHelper");
}

Vector importStack = helper.getImportStack();
Vector<Object> importStack = helper.getImportStack();

if (importStack.size() == 0) {
// this happens if ant is used with a project
@@ -166,7 +165,7 @@ public class ImportTask extends Task {

private void importResource(ProjectHelper helper,
Resource importedResource) {
Vector importStack = helper.getImportStack();
Vector<Object> importStack = helper.getImportStack();

getProject().log("Importing file " + importedResource + " from "
+ getLocation().getFileName(), Project.MSG_VERBOSE);
@@ -290,7 +289,7 @@ public class ImportTask extends Task {

/**
* Sets a bunch of Thread-local ProjectHelper properties.
*
*
* @since Ant 1.8.0
*/
private static void setProjectHelperProps(String prefix,


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/Input.java View File

@@ -218,7 +218,7 @@ public class Input extends Task {

InputRequest request = null;
if (validargs != null) {
Vector accept = StringUtils.split(validargs, ',');
Vector<String> accept = StringUtils.split(validargs, ',');
request = new MultipleChoiceInputRequest(message, accept);
} else {
request = new InputRequest(message);


+ 10
- 10
src/main/org/apache/tools/ant/taskdefs/JDBCTask.java View File

@@ -102,7 +102,7 @@ public abstract class JDBCTask extends Task {
* getting an OutOfMemoryError when calling this task
* multiple times in a row.
*/
private static Hashtable loaderMap = new Hashtable(HASH_TABLE_SIZE);
private static Hashtable<String, AntClassLoader> LOADER_MAP = new Hashtable<String, AntClassLoader>(HASH_TABLE_SIZE);

private boolean caching = true;

@@ -156,7 +156,7 @@ public abstract class JDBCTask extends Task {
*
* @since Ant 1.8.0
*/
private List/*<Property>*/ connectionProperties = new ArrayList();
private List<Property> connectionProperties = new ArrayList<Property>();

/**
* Sets the classpath for loading the driver.
@@ -303,8 +303,8 @@ public abstract class JDBCTask extends Task {
* Get the cache of loaders and drivers.
* @return a hashtable
*/
protected static Hashtable getLoaderMap() {
return loaderMap;
protected static Hashtable<String, AntClassLoader> getLoaderMap() {
return LOADER_MAP;
}

/**
@@ -352,9 +352,9 @@ public abstract class JDBCTask extends Task {
info.put("user", getUserId());
info.put("password", getPassword());

for (Iterator props = connectionProperties.iterator();
for (Iterator<Property> props = connectionProperties.iterator();
props.hasNext(); ) {
Property p = (Property) props.next();
Property p = props.next();
String name = p.getName();
String value = p.getValue();
if (name == null || value == null) {
@@ -401,7 +401,7 @@ public abstract class JDBCTask extends Task {

Driver driverInstance = null;
try {
Class dc;
Class<?> dc;
if (classpath != null) {
// check first that it is not already loaded otherwise
// consecutive runs seems to end into an OutOfMemoryError
@@ -409,9 +409,9 @@ public abstract class JDBCTask extends Task {
// several times.
// this is far from being perfect but should work
// in most cases.
synchronized (loaderMap) {
synchronized (LOADER_MAP) {
if (caching) {
loader = (AntClassLoader) loaderMap.get(driver);
loader = (AntClassLoader) LOADER_MAP.get(driver);
}
if (loader == null) {
log("Loading " + driver
@@ -419,7 +419,7 @@ public abstract class JDBCTask extends Task {
+ classpath, Project.MSG_VERBOSE);
loader = getProject().createClassLoader(classpath);
if (caching) {
loaderMap.put(driver, loader);
LOADER_MAP.put(driver, loader);
}
} else {
log("Loading " + driver


+ 24
- 35
src/main/org/apache/tools/ant/taskdefs/Jar.java View File

@@ -35,7 +35,6 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import java.util.TreeMap;
@@ -76,7 +75,7 @@ public class Jar extends Zip {
/**
* List of all known SPI Services
*/
private List serviceList = new ArrayList();
private List<Service> serviceList = new ArrayList<Service>();

/** merged manifests added through addConfiguredManifest */
private Manifest configuredManifest;
@@ -140,7 +139,7 @@ public class Jar extends Zip {
*
* @since Ant 1.6
*/
private Vector rootEntries;
private Vector<String> rootEntries;

/**
* Path containing jars that shall be indexed in addition to this archive.
@@ -183,7 +182,7 @@ public class Jar extends Zip {
archiveType = "jar";
emptyBehavior = "create";
setEncoding("UTF8");
rootEntries = new Vector();
rootEntries = new Vector<String>();
}

/**
@@ -339,9 +338,9 @@ public class Jar extends Zip {

// must not use getEntry as "well behaving" applications
// must accept the manifest in any capitalization
Enumeration e = zf.entries();
Enumeration<? extends ZipEntry> e = zf.entries();
while (e.hasMoreElements()) {
ZipEntry ze = (ZipEntry) e.nextElement();
ZipEntry ze = e.nextElement();
if (ze.getName().equalsIgnoreCase(MANIFEST_NAME)) {
InputStreamReader isr =
new InputStreamReader(zf.getInputStream(ze), "UTF-8");
@@ -380,9 +379,9 @@ public class Jar extends Zip {
ZipFile zf = null;
try {
zf = new ZipFile(jarFile);
Enumeration e = zf.entries();
Enumeration<? extends ZipEntry> e = zf.entries();
while (e.hasMoreElements()) {
ZipEntry ze = (ZipEntry) e.nextElement();
ZipEntry ze = e.nextElement();
if (ze.getName().equalsIgnoreCase(INDEX_NAME)) {
return true;
}
@@ -398,7 +397,7 @@ public class Jar extends Zip {
}
}
}
/**
* Behavior when a Manifest is found in a zipfileset or zipgroupfileset file.
* Valid values are "skip", "merge", and "mergewithoutmain".
@@ -461,13 +460,7 @@ public class Jar extends Zip {
* Write SPI Information to JAR
*/
private void writeServices(ZipOutputStream zOut) throws IOException {
Iterator serviceIterator;
Service service;

serviceIterator = serviceList.iterator();
while (serviceIterator.hasNext()) {
service = (Service) serviceIterator.next();

for (Service service : serviceList) {
InputStream is = null;
try {
is = service.getAsStream();
@@ -560,7 +553,7 @@ public class Jar extends Zip {

private void writeManifest(ZipOutputStream zOut, Manifest manifest)
throws IOException {
for (Enumeration e = manifest.getWarnings();
for (Enumeration<String> e = manifest.getWarnings();
e.hasMoreElements();) {
log("Manifest warning: " + e.nextElement(),
Project.MSG_WARN);
@@ -629,7 +622,7 @@ public class Jar extends Zip {
// header newline
writer.println(zipFile.getName());

writeIndexLikeList(new ArrayList(addedDirs.keySet()),
writeIndexLikeList(new ArrayList<String>(addedDirs.keySet()),
rootEntries, writer);
writer.println();

@@ -651,8 +644,8 @@ public class Jar extends Zip {
for (int i = 0; i < indexJarEntries.length; i++) {
String name = findJarName(indexJarEntries[i], cpEntries);
if (name != null) {
ArrayList dirs = new ArrayList();
ArrayList files = new ArrayList();
ArrayList<String> dirs = new ArrayList<String>();
ArrayList<String> files = new ArrayList<String>();
grabFilesAndDirs(indexJarEntries[i], dirs, files);
if (dirs.size() + files.size() > 0) {
writer.println(name);
@@ -1022,7 +1015,7 @@ public class Jar extends Zip {
* @throws IOException on error
* @since Ant 1.6.2
*/
protected final void writeIndexLikeList(List dirs, List files,
protected final void writeIndexLikeList(List<String> dirs, List<String> files,
PrintWriter writer)
throws IOException {
// JarIndex is sorting the directories by ascending order.
@@ -1030,10 +1023,7 @@ public class Jar extends Zip {
// hashtable by the classloader, but we'll do so anyway.
Collections.sort(dirs);
Collections.sort(files);
Iterator iter = dirs.iterator();
while (iter.hasNext()) {
String dir = (String) iter.next();

for (String dir : dirs) {
// try to be smart, not to be fooled by a weird directory name
dir = dir.replace('\\', '/');
if (dir.startsWith("./")) {
@@ -1050,7 +1040,7 @@ public class Jar extends Zip {
// looks like nothing from META-INF should be added
// and the check is not case insensitive.
// see sun.misc.JarIndex
// see also
// see also
// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4408526
if (!indexMetaInf && dir.startsWith("META-INF")) {
continue;
@@ -1059,9 +1049,8 @@ public class Jar extends Zip {
writer.println(dir);
}

iter = files.iterator();
while (iter.hasNext()) {
writer.println(iter.next());
for (String file : files) {
writer.println(file);
}
}

@@ -1091,7 +1080,7 @@ public class Jar extends Zip {
return (new File(fileName)).getName();
}
fileName = fileName.replace(File.separatorChar, '/');
TreeMap matches = new TreeMap(new Comparator() {
TreeMap<String, String> matches = new TreeMap<String, String>(new Comparator<Object>() {
// longest match comes first
public int compare(Object o1, Object o2) {
if (o1 instanceof String && o2 instanceof String) {
@@ -1132,17 +1121,17 @@ public class Jar extends Zip {
* @since Ant 1.7
* @throws IOException on error
*/
protected static void grabFilesAndDirs(String file, List dirs,
List files)
protected static void grabFilesAndDirs(String file, List<String> dirs,
List<String> files)
throws IOException {
org.apache.tools.zip.ZipFile zf = null;
try {
zf = new org.apache.tools.zip.ZipFile(file, "utf-8");
Enumeration entries = zf.getEntries();
HashSet dirSet = new HashSet();
Enumeration<org.apache.tools.zip.ZipEntry> entries = zf.getEntries();
HashSet<String> dirSet = new HashSet<String>();
while (entries.hasMoreElements()) {
org.apache.tools.zip.ZipEntry ze =
(org.apache.tools.zip.ZipEntry) entries.nextElement();
entries.nextElement();
String name = ze.getName();
if (ze.isDirectory()) {
dirSet.add(name);


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

@@ -76,7 +76,7 @@ public class Java extends Task {
private boolean spawn = false;
private boolean incompatibleWithSpawn = false;

private static final String TIMEOUT_MESSAGE =
private static final String TIMEOUT_MESSAGE =
"Timeout: killed the sub-process";

/**
@@ -896,12 +896,12 @@ public class Java extends Task {
* @param args arguments for the class.
* @throws BuildException in case of IOException in the execution.
*/
protected void run(String classname, Vector args) throws BuildException {
protected void run(String classname, Vector<String> args) throws BuildException {
CommandlineJava cmdj = new CommandlineJava();
cmdj.setClassname(classname);
final int size = args.size();
for (int i = 0; i < size; i++) {
cmdj.createArgument().setValue((String) args.elementAt(i));
cmdj.createArgument().setValue(args.elementAt(i));
}
run(cmdj);
}


+ 8
- 9
src/main/org/apache/tools/ant/taskdefs/Javac.java View File

@@ -23,8 +23,8 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
@@ -120,7 +120,7 @@ public class Javac extends MatchingTask {
protected boolean failOnError = true;
protected boolean listFiles = false;
protected File[] compileList = new File[0];
private Map/*<String,Long>*/ packageInfos = new HashMap();
private Map<String, Long> packageInfos = new HashMap<String, Long>();
// CheckStyle:VisibilityModifier ON

private String source;
@@ -940,7 +940,7 @@ public class Javac extends MatchingTask {
*/
protected void resetFileLists() {
compileList = new File[0];
packageInfos = new HashMap();
packageInfos = new HashMap<String, Long>();
}

/**
@@ -984,7 +984,7 @@ public class Javac extends MatchingTask {
if (adapter instanceof CompilerAdapterExtension) {
extensions =
((CompilerAdapterExtension) adapter).getSupportedFileExtensions();
}
}

if (extensions == null) {
extensions = new String[] { "java" };
@@ -997,7 +997,7 @@ public class Javac extends MatchingTask {
extensions[i] = "*." + extensions[i];
}
}
return extensions;
return extensions;
}

/**
@@ -1219,10 +1219,9 @@ public class Javac extends MatchingTask {
* @see <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=43114">Bug #43114</a>
*/
private void generateMissingPackageInfoClasses(File dest) throws IOException {
for (Iterator i = packageInfos.entrySet().iterator(); i.hasNext(); ) {
Map.Entry entry = (Map.Entry) i.next();
String pkg = (String) entry.getKey();
Long sourceLastMod = (Long) entry.getValue();
for (Entry<String, Long> entry : packageInfos.entrySet()) {
String pkg = entry.getKey();
Long sourceLastMod = entry.getValue();
File pkgBinDir = new File(dest, pkg.replace('/', File.separatorChar));
pkgBinDir.mkdirs();
File pkgInfoClass = new File(pkgBinDir, "package-info.class");


+ 42
- 44
src/main/org/apache/tools/ant/taskdefs/Javadoc.java View File

@@ -78,7 +78,7 @@ import org.apache.tools.ant.util.JavaEnvUtils;
public class Javadoc extends Task {
// Whether *this VM* is 1.4+ (but also check executable != null).

private static final boolean JAVADOC_5 =
private static final boolean JAVADOC_5 =
!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_4);

/**
@@ -214,7 +214,7 @@ public class Javadoc extends Task {
public class DocletInfo extends ExtensionInfo {

/** Collection of doclet parameters. */
private Vector params = new Vector();
private Vector<DocletParam> params = new Vector<DocletParam>();

/**
* Create a doclet parameter to be configured by Ant.
@@ -233,7 +233,7 @@ public class Javadoc extends Task {
*
* @return an Enumeration of DocletParam instances.
*/
public Enumeration getParams() {
public Enumeration<DocletParam> getParams() {
return params.elements();
}
}
@@ -366,7 +366,7 @@ public class Javadoc extends Task {
* task runtime.</p>
*/
public class ResourceCollectionContainer {
private ArrayList rcs = new ArrayList();
private ArrayList<ResourceCollection> rcs = new ArrayList<ResourceCollection>();
/**
* Add a resource collection to the container.
* @param rc the collection to add.
@@ -379,7 +379,7 @@ public class Javadoc extends Task {
* Get an iterator on the collection.
* @return an iterator.
*/
private Iterator iterator() {
private Iterator<ResourceCollection> iterator() {
return rcs.iterator();
}
}
@@ -425,9 +425,9 @@ public class Javadoc extends Task {
private boolean failOnError = false;
private Path sourcePath = null;
private File destDir = null;
private Vector sourceFiles = new Vector();
private Vector packageNames = new Vector();
private Vector excludePackageNames = new Vector(1);
private Vector<SourceFile> sourceFiles = new Vector<SourceFile>();
private Vector<PackageName> packageNames = new Vector<PackageName>();
private Vector<PackageName> excludePackageNames = new Vector<PackageName>(1);
private boolean author = true;
private boolean version = true;
private DocletInfo doclet = null;
@@ -435,9 +435,9 @@ public class Javadoc extends Task {
private Path bootclasspath = null;
private String group = null;
private String packageList = null;
private Vector links = new Vector();
private Vector groups = new Vector();
private Vector tags = new Vector();
private Vector<LinkArgument> links = new Vector<LinkArgument>();
private Vector<GroupArgument> groups = new Vector<GroupArgument>();
private Vector<Object> tags = new Vector<Object>();
private boolean useDefaultExcludes = true;
private Html doctitle = null;
private Html header = null;
@@ -455,7 +455,7 @@ public class Javadoc extends Task {

private ResourceCollectionContainer nestedSourceFiles
= new ResourceCollectionContainer();
private Vector packageSets = new Vector();
private Vector<DirSet> packageSets = new Vector<DirSet>();

/**
* Work around command line length limit by using an external file
@@ -1450,7 +1450,7 @@ public class Javadoc extends Task {
*/
public class GroupArgument {
private Html title;
private Vector packages = new Vector();
private Vector<PackageName> packages = new Vector<PackageName>();

/** Constructor for GroupArgument */
public GroupArgument() {
@@ -1662,7 +1662,7 @@ public class Javadoc extends Task {
public void execute() throws BuildException {
checkTaskName();

Vector packagesToDoc = new Vector();
Vector<String> packagesToDoc = new Vector<String>();
Path sourceDirs = new Path(getProject());

checkPackageAndSourcePath();
@@ -1674,7 +1674,8 @@ public class Javadoc extends Task {
parsePackages(packagesToDoc, sourceDirs);
checkPackages(packagesToDoc, sourceDirs);

Vector sourceFilesToDoc = (Vector) sourceFiles.clone();
@SuppressWarnings("unchecked")
Vector<SourceFile> sourceFilesToDoc = (Vector<SourceFile>) sourceFiles.clone();
addSourceFiles(sourceFilesToDoc);

checkPackagesToDoc(packagesToDoc, sourceFilesToDoc);
@@ -1799,7 +1800,7 @@ public class Javadoc extends Task {
}
}

private void checkPackages(Vector packagesToDoc, Path sourceDirs) {
private void checkPackages(Vector<String> packagesToDoc, Path sourceDirs) {
if (packagesToDoc.size() != 0 && sourceDirs.size() == 0) {
String msg = "sourcePath attribute must be set when "
+ "specifying package names.";
@@ -1808,7 +1809,7 @@ public class Javadoc extends Task {
}

private void checkPackagesToDoc(
Vector packagesToDoc, Vector sourceFilesToDoc) {
Vector<String> packagesToDoc, Vector<SourceFile> sourceFilesToDoc) {
if (packageList == null && packagesToDoc.size() == 0
&& sourceFilesToDoc.size() == 0) {
throw new BuildException("No source files and no packages have "
@@ -1880,9 +1881,9 @@ public class Javadoc extends Task {
toExecute.createArgument().setPath(docletPath);
}
}
for (Enumeration e = doclet.getParams();
for (Enumeration<DocletParam> e = doclet.getParams();
e.hasMoreElements();) {
DocletParam param = (DocletParam) e.nextElement();
DocletParam param = e.nextElement();
if (param.getName() == null) {
throw new BuildException("Doclet parameters must "
+ "have a name");
@@ -1952,8 +1953,8 @@ public class Javadoc extends Task {

private void doLinks(Commandline toExecute) {
if (links.size() != 0) {
for (Enumeration e = links.elements(); e.hasMoreElements();) {
LinkArgument la = (LinkArgument) e.nextElement();
for (Enumeration<LinkArgument> e = links.elements(); e.hasMoreElements();) {
LinkArgument la = e.nextElement();

if (la.getHref() == null || la.getHref().length() == 0) {
log("No href was given for the link - skipping",
@@ -2065,8 +2066,8 @@ public class Javadoc extends Task {
// add the group arguments
private void doGroups(Commandline toExecute) {
if (groups.size() != 0) {
for (Enumeration e = groups.elements(); e.hasMoreElements();) {
GroupArgument ga = (GroupArgument) e.nextElement();
for (Enumeration<GroupArgument> e = groups.elements(); e.hasMoreElements();) {
GroupArgument ga = e.nextElement();
String title = ga.getTitle();
String packages = ga.getPackages();
if (title == null || packages == null) {
@@ -2083,7 +2084,7 @@ public class Javadoc extends Task {

// Do java1.4 arguments
private void doJava14(Commandline toExecute) {
for (Enumeration e = tags.elements(); e.hasMoreElements();) {
for (Enumeration<Object> e = tags.elements(); e.hasMoreElements();) {
Object element = e.nextElement();
if (element instanceof TagArgument) {
TagArgument ta = (TagArgument) element;
@@ -2170,15 +2171,13 @@ public class Javadoc extends Task {

private void doSourceAndPackageNames(
Commandline toExecute,
Vector packagesToDoc,
Vector sourceFilesToDoc,
Vector<String> packagesToDoc,
Vector<SourceFile> sourceFilesToDoc,
boolean useExternalFile,
File tmpList,
BufferedWriter srcListWriter)
throws IOException {
Enumeration e = packagesToDoc.elements();
while (e.hasMoreElements()) {
String packageName = (String) e.nextElement();
for (String packageName : packagesToDoc) {
if (useExternalFile) {
srcListWriter.write(packageName);
srcListWriter.newLine();
@@ -2187,9 +2186,7 @@ public class Javadoc extends Task {
}
}

e = sourceFilesToDoc.elements();
while (e.hasMoreElements()) {
SourceFile sf = (SourceFile) e.nextElement();
for (SourceFile sf : sourceFilesToDoc) {
String sourceFileName = sf.getFile().getAbsolutePath();
if (useExternalFile) {
// XXX what is the following doing?
@@ -2288,10 +2285,10 @@ public class Javadoc extends Task {
*
* @since 1.7
*/
private void addSourceFiles(Vector sf) {
Iterator e = nestedSourceFiles.iterator();
private void addSourceFiles(Vector<SourceFile> sf) {
Iterator<ResourceCollection> e = nestedSourceFiles.iterator();
while (e.hasNext()) {
ResourceCollection rc = (ResourceCollection) e.next();
ResourceCollection rc = e.next();
if (!rc.isFilesystemOnly()) {
throw new BuildException("only file system based resources are"
+ " supported by javadoc");
@@ -2321,9 +2318,10 @@ public class Javadoc extends Task {
*
* @since 1.5
*/
private void parsePackages(Vector pn, Path sp) {
HashSet addedPackages = new HashSet();
Vector dirSets = (Vector) packageSets.clone();
private void parsePackages(Vector<String> pn, Path sp) {
HashSet<String> addedPackages = new HashSet<String>();
@SuppressWarnings("unchecked")
Vector<DirSet> dirSets = (Vector<DirSet>) packageSets.clone();

// for each sourcePath entry, add a directoryset with includes
// taken from packagenames attribute and nested package
@@ -2333,9 +2331,9 @@ public class Javadoc extends Task {
PatternSet ps = new PatternSet();
ps.setProject(getProject());
if (packageNames.size() > 0) {
Enumeration e = packageNames.elements();
Enumeration<PackageName> e = packageNames.elements();
while (e.hasMoreElements()) {
PackageName p = (PackageName) e.nextElement();
PackageName p = e.nextElement();
String pkg = p.getName().replace('.', '/');
if (pkg.endsWith("*")) {
pkg += "*";
@@ -2346,9 +2344,9 @@ public class Javadoc extends Task {
ps.createInclude().setName("**");
}

Enumeration e = excludePackageNames.elements();
Enumeration<PackageName> e = excludePackageNames.elements();
while (e.hasMoreElements()) {
PackageName p = (PackageName) e.nextElement();
PackageName p = e.nextElement();
String pkg = p.getName().replace('.', '/');
if (pkg.endsWith("*")) {
pkg += "*";
@@ -2374,9 +2372,9 @@ public class Javadoc extends Task {
}
}

Enumeration e = dirSets.elements();
Enumeration<DirSet> e = dirSets.elements();
while (e.hasMoreElements()) {
DirSet ds = (DirSet) e.nextElement();
DirSet ds = e.nextElement();
File baseDir = ds.getDir(getProject());
log("scanning " + baseDir + " for packages.", Project.MSG_DEBUG);
DirectoryScanner dsc = ds.getDirectoryScanner(getProject());


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

@@ -44,7 +44,7 @@ public class KeySubst extends Task {
private File source = null;
private File dest = null;
private String sep = "*";
private Hashtable replacements = new Hashtable();
private Hashtable<String, String> replacements = new Hashtable<String, String>();

/**
* Do the execution.
@@ -146,7 +146,7 @@ public class KeySubst extends Task {
*/
public static void main(String[] args) {
try {
Hashtable hash = new Hashtable();
Hashtable<String, String> hash = new Hashtable<String, String>();
hash.put("VERSION", "1.0.3");
hash.put("b", "ffff");
System.out.println(KeySubst.replace("$f ${VERSION} f ${b} jj $",
@@ -163,7 +163,7 @@ public class KeySubst extends Task {
* @return the string with the replacements in it.
* @throws BuildException on error
*/
public static String replace(String origString, Hashtable keys)
public static String replace(String origString, Hashtable<String, String> keys)
throws BuildException {
StringBuffer finalString = new StringBuffer();
int index = 0;


+ 0
- 1
src/main/org/apache/tools/ant/taskdefs/Length.java View File

@@ -21,7 +21,6 @@ package org.apache.tools.ant.taskdefs;
import java.io.File;
import java.io.PrintStream;
import java.io.OutputStream;
import java.util.Iterator;

import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;


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

@@ -55,13 +55,13 @@ public class LoadProperties extends Task {
/**
* Holds filterchains
*/
private final Vector filterChains = new Vector();
private final Vector<FilterChain> filterChains = new Vector<FilterChain>();

/**
* Encoding to use for input; defaults to the platform's default encoding.
*/
private String encoding = null;
/**
* Prefix for loaded properties.
*/


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/LoadResource.java View File

@@ -69,7 +69,7 @@ public class LoadResource extends Task {
/**
* Holds FilterChains
*/
private final Vector filterChains = new Vector();
private final Vector<FilterChain> filterChains = new Vector<FilterChain>();

/**
* Encoding to use for input, defaults to the platform's default


+ 35
- 37
src/main/org/apache/tools/ant/taskdefs/MacroInstance.java View File

@@ -23,6 +23,7 @@ import java.util.List;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.HashSet;
import java.util.HashMap;
@@ -38,6 +39,7 @@ import org.apache.tools.ant.Task;
import org.apache.tools.ant.TaskContainer;
import org.apache.tools.ant.UnknownElement;
import org.apache.tools.ant.property.LocalProperties;
import org.apache.tools.ant.taskdefs.MacroDef.Attribute;

/**
* The class to be placed in the ant type definition.
@@ -48,13 +50,13 @@ import org.apache.tools.ant.property.LocalProperties;
*/
public class MacroInstance extends Task implements DynamicAttribute, TaskContainer {
private MacroDef macroDef;
private Map map = new HashMap();
private Map nsElements = null;
private Map presentElements;
private Hashtable localAttributes;
private Map<String, String> map = new HashMap<String, String>();
private Map<String, MacroDef.TemplateElement> nsElements = null;
private Map<String, UnknownElement> presentElements;
private Hashtable<String, String> localAttributes;
private String text = null;
private String implicitTag = null;
private List unknownElements = new ArrayList();
private List<Task> unknownElements = new ArrayList<Task>();

/**
* Called from MacroDef.MyAntTypeDefinition#create()
@@ -93,20 +95,18 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
throw new BuildException("Not implemented any more");
}

private Map getNsElements() {
private Map<String, MacroDef.TemplateElement> getNsElements() {
if (nsElements == null) {
nsElements = new HashMap();
for (Iterator i = macroDef.getElements().entrySet().iterator();
i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
nsElements.put((String) entry.getKey(),
entry.getValue());
MacroDef.TemplateElement te = (MacroDef.TemplateElement)
entry.getValue();
if (te.isImplicit()) {
implicitTag = te.getName();
}
nsElements = new HashMap<String, MacroDef.TemplateElement>();
for (Entry<String, MacroDef.TemplateElement> entry : macroDef.getElements().entrySet()) {
nsElements.put((String) entry.getKey(),
entry.getValue());
MacroDef.TemplateElement te = (MacroDef.TemplateElement)
entry.getValue();
if (te.isImplicit()) {
implicitTag = te.getName();
}
}
}
return nsElements;
}
@@ -124,7 +124,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
if (implicitTag != null) {
return;
}
for (Iterator i = unknownElements.iterator(); i.hasNext();) {
for (Iterator<Task> i = unknownElements.iterator(); i.hasNext();) {
UnknownElement ue = (UnknownElement) i.next();
String name = ProjectHelper.extractNameFromComponentName(
ue.getTag()).toLowerCase(Locale.ENGLISH);
@@ -142,7 +142,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
* Embedded element in macro instance
*/
public static class Element implements TaskContainer {
private List unknownElements = new ArrayList();
private List<Task> unknownElements = new ArrayList<Task>();

/**
* Add an unknown element (to be snipped into the macroDef instance)
@@ -156,7 +156,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
/**
* @return the list of unknown elements
*/
public List getUnknownElements() {
public List<Task> getUnknownElements() {
return unknownElements;
}
}
@@ -165,7 +165,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
private static final int STATE_EXPECT_BRACKET = 1;
private static final int STATE_EXPECT_NAME = 2;

private String macroSubs(String s, Map macroMapping) {
private String macroSubs(String s, Map<String, String> macroMapping) {
if (s == null) {
return null;
}
@@ -262,26 +262,25 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
RuntimeConfigurable rc = new RuntimeConfigurable(
ret, ue.getTaskName());
rc.setPolyType(ue.getWrapper().getPolyType());
Map m = ue.getWrapper().getAttributeMap();
for (Iterator i = m.entrySet().iterator(); i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
Map<String, Object> m = ue.getWrapper().getAttributeMap();
for (Map.Entry<String, Object> entry : m.entrySet()) {
rc.setAttribute(
(String) entry.getKey(),
entry.getKey(),
macroSubs((String) entry.getValue(), localAttributes));
}
rc.addText(macroSubs(ue.getWrapper().getText().toString(),
localAttributes));

Enumeration e = ue.getWrapper().getChildren();
Enumeration<RuntimeConfigurable> e = ue.getWrapper().getChildren();
while (e.hasMoreElements()) {
RuntimeConfigurable r = (RuntimeConfigurable) e.nextElement();
RuntimeConfigurable r = e.nextElement();
UnknownElement unknownElement = (UnknownElement) r.getProxy();
String tag = unknownElement.getTaskType();
if (tag != null) {
tag = tag.toLowerCase(Locale.ENGLISH);
}
MacroDef.TemplateElement templateElement =
(MacroDef.TemplateElement) getNsElements().get(tag);
getNsElements().get(tag);
if (templateElement == null || nested) {
UnknownElement child = copy(unknownElement, nested);
rc.addChild(child.getWrapper());
@@ -292,7 +291,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
"Missing nested elements for implicit element "
+ templateElement.getName());
}
for (Iterator i = unknownElements.iterator();
for (Iterator<Task> i = unknownElements.iterator();
i.hasNext();) {
UnknownElement child
= copy((UnknownElement) i.next(), true);
@@ -315,12 +314,12 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
if (!"".equals(presentText)) {
rc.addText(macroSubs(presentText, localAttributes));
}
List list = presentElement.getChildren();
List<UnknownElement> list = presentElement.getChildren();
if (list != null) {
for (Iterator i = list.iterator();
for (Iterator<UnknownElement> i = list.iterator();
i.hasNext();) {
UnknownElement child
= copy((UnknownElement) i.next(), true);
= copy(i.next(), true);
rc.addChild(child.getWrapper());
ret.addChild(child);
}
@@ -337,13 +336,12 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
*
*/
public void execute() {
presentElements = new HashMap();
presentElements = new HashMap<String, UnknownElement>();
getNsElements();
processTasks();
localAttributes = new Hashtable();
Set copyKeys = new HashSet(map.keySet());
for (Iterator i = macroDef.getAttributes().iterator(); i.hasNext();) {
MacroDef.Attribute attribute = (MacroDef.Attribute) i.next();
localAttributes = new Hashtable<String, String>();
Set<String> copyKeys = new HashSet<String>(map.keySet());
for (Attribute attribute : macroDef.getAttributes()) {
String value = (String) map.get(attribute.getName());
if (value == null && "description".equals(attribute.getName())) {
value = getDescription();


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

@@ -61,12 +61,12 @@ public class MakeUrl extends Task {
/**
* filesets of nested files to add to this url
*/
private List filesets = new LinkedList();
private List<FileSet> filesets = new LinkedList<FileSet>();

/**
* paths to add
*/
private List paths = new LinkedList();
private List<Path> paths = new LinkedList<Path>();

/**
* validation flag
@@ -148,8 +148,8 @@ public class MakeUrl extends Task {
return "";
}
int count = 0;
StringBuffer urls = new StringBuffer();
ListIterator list = filesets.listIterator();
StringBuilder urls = new StringBuilder();
ListIterator<FileSet> list = filesets.listIterator();
while (list.hasNext()) {
FileSet set = (FileSet) list.next();
DirectoryScanner scanner = set.getDirectoryScanner(getProject());
@@ -176,7 +176,7 @@ public class MakeUrl extends Task {
* @param count number of URL entries
* @return trimmed string, or empty string
*/
private String stripTrailingSeparator(StringBuffer urls,
private String stripTrailingSeparator(StringBuilder urls,
int count) {
if (count > 0) {
urls.delete(urls.length() - separator.length(), urls.length());
@@ -197,8 +197,8 @@ public class MakeUrl extends Task {
return "";
}
int count = 0;
StringBuffer urls = new StringBuffer();
ListIterator list = paths.listIterator();
StringBuilder urls = new StringBuilder();
ListIterator<Path> list = paths.listIterator();
while (list.hasNext()) {
Path path = (Path) list.next();
String[] elements = path.list();


+ 35
- 40
src/main/org/apache/tools/ant/taskdefs/Manifest.java View File

@@ -27,7 +27,6 @@ import java.io.Reader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
@@ -127,7 +126,7 @@ public class Manifest {
private String name = null;

/** The attribute's value */
private Vector values = new Vector();
private Vector<String> values = new Vector<String>();

/**
* For multivalued attributes, this is the index of the attribute
@@ -276,8 +275,8 @@ public class Manifest {
}

String fullValue = "";
for (Enumeration e = getValues(); e.hasMoreElements();) {
String value = (String) e.nextElement();
for (Enumeration<String> e = getValues(); e.hasMoreElements();) {
String value = e.nextElement();
fullValue += value + " ";
}
return fullValue.trim();
@@ -298,7 +297,7 @@ public class Manifest {
*
* @return an enumeration of the attributes values
*/
public Enumeration getValues() {
public Enumeration<String> getValues() {
return values.elements();
}

@@ -342,8 +341,8 @@ public class Manifest {
public void write(PrintWriter writer, boolean flatten)
throws IOException {
if (!flatten) {
for (Enumeration e = getValues(); e.hasMoreElements();) {
writeValue(writer, (String) e.nextElement());
for (Enumeration<String> e = getValues(); e.hasMoreElements();) {
writeValue(writer, e.nextElement());
}
} else {
writeValue(writer, getValue());
@@ -402,7 +401,7 @@ public class Manifest {
*/
public static class Section {
/** Warnings for this section */
private Vector warnings = new Vector();
private Vector<String> warnings = new Vector<String>();

/**
* The section's name if any. The main section in a
@@ -411,7 +410,7 @@ public class Manifest {
private String name = null;

/** The section's attributes.*/
private Map attributes = new LinkedHashMap();
private Map<String, Attribute> attributes = new LinkedHashMap<String, Attribute>();

/**
* The name of the section; optional -default is the main section.
@@ -509,19 +508,19 @@ public class Manifest {
+ "with different names");
}

Enumeration e = section.getAttributeKeys();
Enumeration<String> e = section.getAttributeKeys();
Attribute classpathAttribute = null;
while (e.hasMoreElements()) {
String attributeName = (String) e.nextElement();
String attributeName = e.nextElement();
Attribute attribute = section.getAttribute(attributeName);
if (attributeName.equalsIgnoreCase(ATTRIBUTE_CLASSPATH)) {
if (classpathAttribute == null) {
classpathAttribute = new Attribute();
classpathAttribute.setName(ATTRIBUTE_CLASSPATH);
}
Enumeration cpe = attribute.getValues();
Enumeration<String> cpe = attribute.getValues();
while (cpe.hasMoreElements()) {
String value = (String) cpe.nextElement();
String value = cpe.nextElement();
classpathAttribute.addValue(value);
}
} else {
@@ -534,9 +533,9 @@ public class Manifest {
if (mergeClassPaths) {
Attribute currentCp = getAttribute(ATTRIBUTE_CLASSPATH);
if (currentCp != null) {
for (Enumeration attribEnum = currentCp.getValues();
for (Enumeration<String> attribEnum = currentCp.getValues();
attribEnum.hasMoreElements(); ) {
String value = (String) attribEnum.nextElement();
String value = attribEnum.nextElement();
classpathAttribute.addValue(value);
}
}
@@ -545,7 +544,7 @@ public class Manifest {
}

// add in the warnings
Enumeration warnEnum = section.warnings.elements();
Enumeration<String> warnEnum = section.warnings.elements();
while (warnEnum.hasMoreElements()) {
warnings.addElement(warnEnum.nextElement());
}
@@ -580,9 +579,9 @@ public class Manifest {
Attribute nameAttr = new Attribute(ATTRIBUTE_NAME, name);
nameAttr.write(writer);
}
Enumeration e = getAttributeKeys();
Enumeration<String> e = getAttributeKeys();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
String key = e.nextElement();
Attribute attribute = getAttribute(key);
attribute.write(writer, flatten);
}
@@ -607,7 +606,7 @@ public class Manifest {
* @return an Enumeration of Strings, each string being the lower case
* key of an attribute of the section.
*/
public Enumeration getAttributeKeys() {
public Enumeration<String> getAttributeKeys() {
return CollectionUtils.asEnumeration(attributes.keySet().iterator());
}

@@ -695,9 +694,9 @@ public class Manifest {
+ "are supported but violate the Jar "
+ "specification and may not be correctly "
+ "processed in all environments");
Enumeration e = attribute.getValues();
Enumeration<String> e = attribute.getValues();
while (e.hasMoreElements()) {
String value = (String) e.nextElement();
String value = e.nextElement();
classpathAttribute.addValue(value);
}
}
@@ -721,9 +720,9 @@ public class Manifest {
public Object clone() {
Section cloned = new Section();
cloned.setName(name);
Enumeration e = getAttributeKeys();
Enumeration<String> e = getAttributeKeys();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
String key = e.nextElement();
Attribute attribute = getAttribute(key);
cloned.storeAttribute(new Attribute(attribute.getName(),
attribute.getValue()));
@@ -749,7 +748,7 @@ public class Manifest {
*
* @return an Enumeration of warning strings.
*/
public Enumeration getWarnings() {
public Enumeration<String> getWarnings() {
return warnings.elements();
}

@@ -789,7 +788,7 @@ public class Manifest {
private Section mainSection = new Section();

/** The named sections of this manifest */
private Map sections = new LinkedHashMap();
private Map<String, Section> sections = new LinkedHashMap<String, Section>();

/**
* Construct a manifest from Ant's default manifest file.
@@ -981,12 +980,12 @@ public class Manifest {
manifestVersion = other.manifestVersion;
}

Enumeration e = other.getSectionNames();
Enumeration<String> e = other.getSectionNames();
while (e.hasMoreElements()) {
String sectionName = (String) e.nextElement();
Section ourSection = (Section) sections.get(sectionName);
String sectionName = e.nextElement();
Section ourSection = sections.get(sectionName);
Section otherSection
= (Section) other.sections.get(sectionName);
= other.sections.get(sectionName);
if (ourSection == null) {
if (otherSection != null) {
addConfiguredSection((Section) otherSection.clone());
@@ -1043,9 +1042,7 @@ public class Manifest {
}
}

Iterator e = sections.keySet().iterator();
while (e.hasNext()) {
String sectionName = (String) e.next();
for (String sectionName : sections.keySet()) {
Section section = getSection(sectionName);
section.write(writer, flatten);
}
@@ -1072,19 +1069,17 @@ public class Manifest {
*
* @return an enumeration of warning strings
*/
public Enumeration getWarnings() {
Vector warnings = new Vector();
public Enumeration<String> getWarnings() {
Vector<String> warnings = new Vector<String>();

Enumeration warnEnum = mainSection.getWarnings();
Enumeration<String> warnEnum = mainSection.getWarnings();
while (warnEnum.hasMoreElements()) {
warnings.addElement(warnEnum.nextElement());
}

// create a vector and add in the warnings for all the sections
Iterator e = sections.values().iterator();
while (e.hasNext()) {
Section section = (Section) e.next();
Enumeration e2 = section.getWarnings();
for (Section section : sections.values()) {
Enumeration<String> e2 = section.getWarnings();
while (e2.hasMoreElements()) {
warnings.addElement(e2.nextElement());
}
@@ -1173,7 +1168,7 @@ public class Manifest {
*
* @return an Enumeration of section names
*/
public Enumeration getSectionNames() {
public Enumeration<String> getSectionNames() {
return CollectionUtils.asEnumeration(sections.keySet().iterator());
}
}

+ 35
- 42
src/main/org/apache/tools/ant/taskdefs/Zip.java View File

@@ -32,7 +32,6 @@ import java.util.Comparator;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Stack;
import java.util.Vector;
@@ -67,6 +66,7 @@ import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipExtraField;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
import org.apache.tools.zip.ZipOutputStream.UnicodeExtraFieldPolicy;

/**
* Create a Zip file.
@@ -84,9 +84,9 @@ public class Zip extends MatchingTask {
// use to scan own archive
private ZipScanner zs;
private File baseDir;
protected Hashtable entries = new Hashtable();
private Vector groupfilesets = new Vector();
private Vector filesetsFromGroupfilesets = new Vector();
protected Hashtable<String, String> entries = new Hashtable<String, String>();
private Vector<FileSet> groupfilesets = new Vector<FileSet>();
private Vector<ZipFileSet> filesetsFromGroupfilesets = new Vector<ZipFileSet>();
protected String duplicate = "add";
private boolean doCompress = true;
private boolean doUpdate = false;
@@ -98,9 +98,9 @@ public class Zip extends MatchingTask {
// For directories:
private static final long EMPTY_CRC = new CRC32 ().getValue ();
protected String emptyBehavior = "skip";
private Vector resources = new Vector();
protected Hashtable addedDirs = new Hashtable();
private Vector addedFiles = new Vector();
private Vector<ResourceCollection> resources = new Vector<ResourceCollection>();
protected Hashtable<String, String> addedDirs = new Hashtable<String, String>();
private Vector<String> addedFiles = new Vector<String>();

private static final ResourceSelector MISSING_SELECTOR =
new ResourceSelector() {
@@ -596,7 +596,7 @@ public class Zip extends MatchingTask {
processGroupFilesets();

// collect filesets to pass them to getResourcesToAdd
Vector vfss = new Vector();
Vector<ResourceCollection> vfss = new Vector<ResourceCollection>();
if (baseDir != null) {
FileSet fs = (FileSet) getImplicitFileSet().clone();
fs.setDir(baseDir);
@@ -1204,8 +1204,8 @@ public class Zip extends MatchingTask {
File zipFile,
boolean needsUpdate)
throws BuildException {
ArrayList filesets = new ArrayList();
ArrayList rest = new ArrayList();
ArrayList<ResourceCollection> filesets = new ArrayList<ResourceCollection>();
ArrayList<ResourceCollection> rest = new ArrayList<ResourceCollection>();
for (int i = 0; i < rcs.length; i++) {
if (rcs[i] instanceof FileSet) {
filesets.add(rcs[i]);
@@ -1213,7 +1213,7 @@ public class Zip extends MatchingTask {
rest.add(rcs[i]);
}
}
ResourceCollection[] rc = (ResourceCollection[])
ResourceCollection[] rc =
rest.toArray(new ResourceCollection[rest.size()]);
ArchiveState as = getNonFileSetResourcesToAdd(rc, zipFile,
needsUpdate);
@@ -1253,8 +1253,8 @@ public class Zip extends MatchingTask {
* to move the withEmpty behavior checks (since either would break
* subclasses in several ways).
*/
private static ThreadLocal haveNonFileSetResourcesToAdd = new ThreadLocal() {
protected Object initialValue() {
private static final ThreadLocal<Boolean> HAVE_NON_FILE_SET_RESOURCES_TO_ADD = new ThreadLocal<Boolean>() {
protected Boolean initialValue() {
return Boolean.FALSE;
}
};
@@ -1288,7 +1288,7 @@ public class Zip extends MatchingTask {

Resource[][] initialResources = grabResources(filesets);
if (isEmpty(initialResources)) {
if (Boolean.FALSE.equals(haveNonFileSetResourcesToAdd.get())) {
if (Boolean.FALSE.equals(HAVE_NON_FILE_SET_RESOURCES_TO_ADD.get())) {
if (needsUpdate && doUpdate) {
/*
* This is a rather hairy case.
@@ -1453,7 +1453,7 @@ public class Zip extends MatchingTask {

Resource[][] initialResources = grabNonFileSetResources(rcs);
boolean empty = isEmpty(initialResources);
haveNonFileSetResourcesToAdd.set(Boolean.valueOf(!empty));
HAVE_NON_FILE_SET_RESOURCES_TO_ADD.set(Boolean.valueOf(!empty));
if (empty) {
// no emptyBehavior handling since the FileSet version
// will take care of it.
@@ -1521,10 +1521,10 @@ public class Zip extends MatchingTask {
getZipScanner(),
MISSING_DIR_PROVIDER);
if (rc.size() > 0) {
ArrayList newer = new ArrayList();
ArrayList<Resource> newer = new ArrayList<Resource>();
newer.addAll(Arrays.asList(((Union) rc).listResources()));
newer.addAll(Arrays.asList(result));
result = (Resource[]) newer.toArray(result);
result = newer.toArray(result);
}
}
return result;
@@ -1552,7 +1552,7 @@ public class Zip extends MatchingTask {
if (rs instanceof ZipScanner) {
((ZipScanner) rs).setEncoding(encoding);
}
Vector resources = new Vector();
Vector<Resource> resources = new Vector<Resource>();
if (!doFilesonly) {
String[] directories = rs.getIncludedDirectories();
for (int j = 0; j < directories.length; j++) {
@@ -1585,8 +1585,8 @@ public class Zip extends MatchingTask {
protected Resource[][] grabNonFileSetResources(ResourceCollection[] rcs) {
Resource[][] result = new Resource[rcs.length][];
for (int i = 0; i < rcs.length; i++) {
ArrayList dirs = new ArrayList();
ArrayList files = new ArrayList();
ArrayList<Resource> dirs = new ArrayList<Resource>();
ArrayList<Resource> files = new ArrayList<Resource>();
for (Resource r : rcs[i]) {
if (r.isExists()) {
if (r.isDirectory()) {
@@ -1598,16 +1598,14 @@ public class Zip extends MatchingTask {
}
// make sure directories are in alpha-order - this also
// ensures parents come before their children
Collections.sort(dirs, new Comparator() {
public int compare(Object o1, Object o2) {
Resource r1 = (Resource) o1;
Resource r2 = (Resource) o2;
Collections.sort(dirs, new Comparator<Resource>() {
public int compare(Resource r1, Resource r2) {
return r1.getName().compareTo(r2.getName());
}
});
ArrayList rs = new ArrayList(dirs);
ArrayList<Resource> rs = new ArrayList<Resource>(dirs);
rs.addAll(files);
result[i] = (Resource[]) rs.toArray(new Resource[rs.size()]);
result[i] = rs.toArray(new Resource[rs.size()]);
}
return result;
}
@@ -1702,11 +1700,7 @@ public class Zip extends MatchingTask {
* support a new parameter (extra fields to preserve) without
* breaking subclasses that override the old method signature.
*/
private static ThreadLocal currentZipExtra = new ThreadLocal() {
protected Object initialValue() {
return null;
}
};
private static final ThreadLocal<ZipExtraField[]> CURRENT_ZIP_EXTRA = new ThreadLocal<ZipExtraField[]>();

/**
* Provides the extra fields for the zip entry currently being
@@ -1714,7 +1708,7 @@ public class Zip extends MatchingTask {
* @since Ant 1.8.0
*/
protected final ZipExtraField[] getCurrentExtraFields() {
return (ZipExtraField[]) currentZipExtra.get();
return (ZipExtraField[]) CURRENT_ZIP_EXTRA.get();
}

/**
@@ -1723,7 +1717,7 @@ public class Zip extends MatchingTask {
* @since Ant 1.8.0
*/
protected final void setCurrentExtraFields(ZipExtraField[] extra) {
currentZipExtra.set(extra);
CURRENT_ZIP_EXTRA.set(extra);
}

/**
@@ -1907,7 +1901,7 @@ public class Zip extends MatchingTask {
int dirMode)
throws IOException {
if (!doFilesonly) {
Stack directories = new Stack();
Stack<String> directories = new Stack<String>();
int slashPos = entry.length();

while ((slashPos = entry.lastIndexOf('/', slashPos - 1)) != -1) {
@@ -1919,7 +1913,7 @@ public class Zip extends MatchingTask {
}

while (!directories.isEmpty()) {
String dir = (String) directories.pop();
String dir = directories.pop();
File f = null;
if (baseDir != null) {
f = new File(baseDir, dir);
@@ -1951,13 +1945,13 @@ public class Zip extends MatchingTask {
entries.clear();
addingNewFiles = false;
doUpdate = savedDoUpdate;
Enumeration e = filesetsFromGroupfilesets.elements();
Enumeration<ZipFileSet> e = filesetsFromGroupfilesets.elements();
while (e.hasMoreElements()) {
ZipFileSet zf = (ZipFileSet) e.nextElement();
ZipFileSet zf = e.nextElement();
resources.removeElement(zf);
}
filesetsFromGroupfilesets.removeAllElements();
haveNonFileSetResourcesToAdd.set(Boolean.FALSE);
HAVE_NON_FILE_SET_RESOURCES_TO_ADD.set(Boolean.FALSE);
}

/**
@@ -2049,7 +2043,7 @@ public class Zip extends MatchingTask {
return orig;
}

ArrayList v = new ArrayList(orig.length);
ArrayList<Resource> v = new ArrayList<Resource>(orig.length);
for (int i = 0; i < orig.length; i++) {
if (selector.isSelected(orig[i])) {
v.add(orig[i]);
@@ -2057,8 +2051,7 @@ public class Zip extends MatchingTask {
}

if (v.size() != orig.length) {
Resource[] r = new Resource[v.size()];
return (Resource[]) v.toArray(r);
return v.toArray(new Resource[v.size()]);
}
return orig;
}
@@ -2146,7 +2139,7 @@ public class Zip extends MatchingTask {
* @since Ant 1.8.0
*/
public static final class UnicodeExtraField extends EnumeratedAttribute {
private static final Map POLICIES = new HashMap();
private static final Map<String, UnicodeExtraFieldPolicy> POLICIES = new HashMap<String, UnicodeExtraFieldPolicy>();
private static final String NEVER_KEY = "never";
private static final String ALWAYS_KEY = "always";
private static final String N_E_KEY = "not-encodeable";


+ 2
- 2
src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java View File

@@ -446,7 +446,7 @@ public class EmailTask extends Task {
if (encoding.equals(MIME)
|| (encoding.equals(AUTO) && !autoFound)) {
try {
//check to make sure that activation.jar
//check to make sure that activation.jar
//and mail.jar are available - see bug 31969
Class.forName("javax.activation.DataHandler");
Class.forName("javax.mail.internet.MimeMessage");
@@ -529,7 +529,7 @@ public class EmailTask extends Task {
}

// identify which files should be attached
Vector files = new Vector();
Vector<File> files = new Vector<File>();
if (attachments != null) {
for (Resource r : attachments) {
files.addElement(r.as(FileProvider.class)


+ 15
- 14
src/main/org/apache/tools/ant/taskdefs/email/Mailer.java View File

@@ -17,6 +17,7 @@
*/
package org.apache.tools.ant.taskdefs.email;

import java.io.File;
import java.util.Vector;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
@@ -38,15 +39,15 @@ public abstract class Mailer {
// CheckStyle:MemberNameCheck ON
protected Message message;
protected EmailAddress from;
protected Vector replyToList = null;
protected Vector toList = null;
protected Vector ccList = null;
protected Vector bccList = null;
protected Vector files = null;
protected Vector<EmailAddress> replyToList = null;
protected Vector<EmailAddress> toList = null;
protected Vector<EmailAddress> ccList = null;
protected Vector<EmailAddress> bccList = null;
protected Vector<File> files = null;
protected String subject = null;
protected Task task;
protected boolean includeFileNames = false;
protected Vector headers = null;
protected Vector<Header> headers = null;
// CheckStyle:VisibilityModifier ON
private boolean ignoreInvalidRecipients = false;
private boolean starttls = false;
@@ -71,7 +72,7 @@ public abstract class Mailer {
}

/**
* Whether the port has been explicitly specified by the user.
* Whether the port has been explicitly specified by the user.
* @since Ant 1.8.2
*/
public void setPortExplicitlySpecified(boolean explicit) {
@@ -79,7 +80,7 @@ public abstract class Mailer {
}

/**
* Whether the port has been explicitly specified by the user.
* Whether the port has been explicitly specified by the user.
* @since Ant 1.8.2
*/
protected boolean isPortExplicitlySpecified() {
@@ -154,7 +155,7 @@ public abstract class Mailer {
* @param list a vector of reployTo addresses.
* @since Ant 1.6
*/
public void setReplyToList(Vector list) {
public void setReplyToList(Vector<EmailAddress> list) {
this.replyToList = list;
}

@@ -163,7 +164,7 @@ public abstract class Mailer {
*
* @param list a vector of recipient addresses.
*/
public void setToList(Vector list) {
public void setToList(Vector<EmailAddress> list) {
this.toList = list;
}

@@ -172,7 +173,7 @@ public abstract class Mailer {
*
* @param list a vector of cc addresses.
*/
public void setCcList(Vector list) {
public void setCcList(Vector<EmailAddress> list) {
this.ccList = list;
}

@@ -181,7 +182,7 @@ public abstract class Mailer {
*
* @param list a vector of the bcc addresses.
*/
public void setBccList(Vector list) {
public void setBccList(Vector<EmailAddress> list) {
this.bccList = list;
}

@@ -190,7 +191,7 @@ public abstract class Mailer {
*
* @param files list of files to attach to the email.
*/
public void setFiles(Vector files) {
public void setFiles(Vector<File> files) {
this.files = files;
}

@@ -226,7 +227,7 @@ public abstract class Mailer {
* @param v a Vector presumed to contain Header objects.
* @since Ant 1.7
*/
public void setHeaders(Vector v) {
public void setHeaders(Vector<Header> v) {
this.headers = v;
}



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

@@ -31,7 +31,7 @@ public final class AntFilterReader

private String className;

private final Vector parameters = new Vector();
private final Vector<Parameter> parameters = new Vector<Parameter>();

private Path classpath;

@@ -160,7 +160,7 @@ public final class AntFilterReader
super.setRefid(r);
}

protected synchronized void dieOnCircularReference(Stack stk, Project p)
protected synchronized void dieOnCircularReference(Stack<Object> stk, Project p)
throws BuildException {
if (isChecked()) {
return;


+ 10
- 8
src/main/org/apache/tools/ant/types/DataType.java View File

@@ -112,7 +112,7 @@ public abstract class DataType extends ProjectComponent implements Cloneable {
if (checked || !isReference()) {
return;
}
dieOnCircularReference(new IdentityStack(this), p);
dieOnCircularReference(new IdentityStack<Object>(this), p);
}

/**
@@ -134,7 +134,7 @@ public abstract class DataType extends ProjectComponent implements Cloneable {
* @param project the project to use to dereference the references.
* @throws BuildException on error.
*/
protected void dieOnCircularReference(final Stack stack,
protected void dieOnCircularReference(final Stack<Object> stack,
final Project project)
throws BuildException {

@@ -144,7 +144,7 @@ public abstract class DataType extends ProjectComponent implements Cloneable {
Object o = ref.getReferencedObject(project);

if (o instanceof DataType) {
IdentityStack id = IdentityStack.getInstance(stack);
IdentityStack<Object> id = IdentityStack.getInstance(stack);

if (id.contains(o)) {
throw circularReference();
@@ -166,7 +166,7 @@ public abstract class DataType extends ProjectComponent implements Cloneable {
* @throws BuildException on error.
* @since Ant 1.7
*/
public static void invokeCircularReferenceCheck(DataType dt, Stack stk,
public static void invokeCircularReferenceCheck(DataType dt, Stack<Object> stk,
Project p) {
dt.dieOnCircularReference(stk, p);
}
@@ -184,7 +184,7 @@ public abstract class DataType extends ProjectComponent implements Cloneable {
* @since Ant 1.8.0
*/
public static void pushAndInvokeCircularReferenceCheck(DataType dt,
Stack stk,
Stack<Object> stk,
Project p) {
stk.push(dt);
dt.dieOnCircularReference(stk, p);
@@ -223,7 +223,7 @@ public abstract class DataType extends ProjectComponent implements Cloneable {
* @return the dereferenced object.
* @throws BuildException if the reference is invalid (circular ref, wrong class, etc).
*/
protected Object getCheckedRef(final Class requiredClass,
protected <T> T getCheckedRef(final Class<T> requiredClass,
final String dataTypeName) {
return getCheckedRef(requiredClass, dataTypeName, getProject());
}
@@ -240,7 +240,7 @@ public abstract class DataType extends ProjectComponent implements Cloneable {
* or if <code>project</code> is <code>null</code>.
* @since Ant 1.7
*/
protected Object getCheckedRef(final Class requiredClass,
protected <T> T getCheckedRef(final Class<T> requiredClass,
final String dataTypeName, final Project project) {
if (project == null) {
throw new BuildException("No Project specified");
@@ -253,7 +253,9 @@ public abstract class DataType extends ProjectComponent implements Cloneable {
String msg = ref.getRefId() + " doesn\'t denote a " + dataTypeName;
throw new BuildException(msg);
}
return o;
@SuppressWarnings("unchecked")
final T result = (T) o;
return result;
}

/**


+ 3
- 3
src/main/org/apache/tools/ant/types/Environment.java View File

@@ -32,7 +32,7 @@ public class Environment {
* a vector of type Environment.Variable
* @see Variable
*/
protected Vector variables;
protected Vector<Variable> variables;

// CheckStyle:VisibilityModifier ON

@@ -135,7 +135,7 @@ public class Environment {
* constructor
*/
public Environment() {
variables = new Vector();
variables = new Vector<Variable>();
}

/**
@@ -170,7 +170,7 @@ public class Environment {
* Variable
* @since Ant 1.7
*/
public Vector getVariablesVector() {
public Vector<Variable> getVariablesVector() {
return variables;
}
}

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

@@ -48,7 +48,7 @@ import org.apache.tools.ant.filters.TokenFilter;
public class FilterChain extends DataType
implements Cloneable {

private Vector filterReaders = new Vector();
private Vector<Object> filterReaders = new Vector<Object>();

/**
* Add an AntFilterReader filter.
@@ -68,7 +68,7 @@ public class FilterChain extends DataType
*
* @return a <code>Vector</code> value containing the filters
*/
public Vector getFilterReaders() {
public Vector<Object> getFilterReaders() {
if (isReference()) {
return ((FilterChain) getCheckedRef()).getFilterReaders();
}
@@ -396,7 +396,7 @@ public class FilterChain extends DataType
filterReaders.addElement(filter);
}

protected synchronized void dieOnCircularReference(Stack stk, Project p)
protected synchronized void dieOnCircularReference(Stack<Object> stk, Project p)
throws BuildException {
if (isChecked()) {
return;
@@ -404,7 +404,7 @@ public class FilterChain extends DataType
if (isReference()) {
super.dieOnCircularReference(stk, p);
} else {
for (Iterator i = filterReaders.iterator(); i.hasNext(); ) {
for (Iterator<Object> i = filterReaders.iterator(); i.hasNext(); ) {
Object o = i.next();
if (o instanceof DataType) {
pushAndInvokeCircularReferenceCheck((DataType) o, stk, p);


+ 5
- 10
src/main/org/apache/tools/ant/types/Path.java View File

@@ -79,9 +79,6 @@ public class Path extends DataType implements Cloneable, ResourceCollection {
public static final Path systemBootClasspath =
new Path(null, System.getProperty("sun.boot.class.path"));

private static final Iterator EMPTY_ITERATOR
= Collections.EMPTY_SET.iterator();

// CheckStyle:VisibilityModifier OFF - bc

/**
@@ -397,7 +394,7 @@ public class Path extends DataType implements Cloneable, ResourceCollection {
* @return an array of strings, one for each path element
*/
public static String[] translatePath(Project project, String source) {
final Vector result = new Vector();
final Vector<String> result = new Vector<String>();
if (source == null) {
return new String[0];
}
@@ -418,9 +415,7 @@ public class Path extends DataType implements Cloneable, ResourceCollection {
result.addElement(element.toString());
element = new StringBuffer();
}
String[] res = new String[result.size()];
result.copyInto(res);
return res;
return result.toArray(new String[result.size()]);
}

/**
@@ -489,7 +484,7 @@ public class Path extends DataType implements Cloneable, ResourceCollection {
* @param p the project to use to dereference the references.
* @throws BuildException on error.
*/
protected synchronized void dieOnCircularReference(Stack stk, Project p)
protected synchronized void dieOnCircularReference(Stack<Object> stk, Project p)
throws BuildException {
if (isChecked()) {
return;
@@ -553,7 +548,7 @@ public class Path extends DataType implements Cloneable, ResourceCollection {
Path result = new Path(getProject());

String order = defValue;
String o = getProject() != null
String o = getProject() != null
? getProject().getProperty(MagicNames.BUILD_SYSCLASSPATH)
: System.getProperty(MagicNames.BUILD_SYSCLASSPATH);
if (o != null) {
@@ -709,7 +704,7 @@ public class Path extends DataType implements Cloneable, ResourceCollection {
if (getPreserveBC()) {
return new FileResourceIterator(getProject(), null, list());
}
return union == null ? EMPTY_ITERATOR
return union == null ? Collections.<Resource> emptySet().iterator()
: assertFilesystemOnly(union).iterator();
}



+ 11
- 12
src/main/org/apache/tools/ant/types/resources/Resources.java View File

@@ -89,7 +89,7 @@ public class Resources extends DataType implements ResourceCollection {
return coll;
}
private class MyIterator implements Iterator<Resource> {
private Iterator rci = getNested().iterator();
private Iterator<ResourceCollection> rci = getNested().iterator();
private Iterator<Resource> ri = null;

public boolean hasNext() {
@@ -112,7 +112,7 @@ public class Resources extends DataType implements ResourceCollection {
}
}

private Vector rc;
private Vector<ResourceCollection> rc;
private Collection<Resource> coll;
private boolean cache = false;

@@ -151,7 +151,7 @@ public class Resources extends DataType implements ResourceCollection {
return;
}
if (rc == null) {
rc = new Vector();
rc = new Vector<ResourceCollection>();
}
rc.add(c);
invalidateExistingIterators();
@@ -193,8 +193,8 @@ public class Resources extends DataType implements ResourceCollection {
}
validate();

for (Iterator i = getNested().iterator(); i.hasNext();) {
if ((!((ResourceCollection) i.next()).isFilesystemOnly())) {
for (Iterator<ResourceCollection> i = getNested().iterator(); i.hasNext();) {
if (!i.next().isFilesystemOnly()) {
return false;
}
}
@@ -230,7 +230,7 @@ public class Resources extends DataType implements ResourceCollection {
* @param p the project to use to dereference the references.
* @throws BuildException on error.
*/
protected void dieOnCircularReference(Stack stk, Project p)
protected void dieOnCircularReference(Stack<Object> stk, Project p)
throws BuildException {
if (isChecked()) {
return;
@@ -238,10 +238,9 @@ public class Resources extends DataType implements ResourceCollection {
if (isReference()) {
super.dieOnCircularReference(stk, p);
} else {
for (Iterator i = getNested().iterator(); i.hasNext();) {
Object o = i.next();
if (o instanceof DataType) {
pushAndInvokeCircularReferenceCheck((DataType) o, stk, p);
for (ResourceCollection resourceCollection : getNested()) {
if (resourceCollection instanceof DataType) {
pushAndInvokeCircularReferenceCheck((DataType) resourceCollection, stk, p);
}
}
setChecked(true);
@@ -269,7 +268,7 @@ public class Resources extends DataType implements ResourceCollection {
coll = (coll == null) ? new MyCollection() : coll;
}

private synchronized List getNested() {
return rc == null ? Collections.EMPTY_LIST : rc;
private synchronized List<ResourceCollection> getNested() {
return rc == null ? Collections.<ResourceCollection> emptyList() : rc;
}
}

+ 4
- 12
src/main/org/apache/tools/ant/types/spi/Service.java View File

@@ -24,7 +24,6 @@ import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.tools.ant.ProjectComponent;
@@ -37,7 +36,7 @@ import org.apache.tools.ant.BuildException;
* http://issues.apache.org/bugzilla/show_bug.cgi?id=31520</a>
*/
public class Service extends ProjectComponent {
private List providerList = new ArrayList();
private List<Provider> providerList = new ArrayList<Provider>();
private String type;

/**
@@ -84,16 +83,9 @@ public class Service extends ProjectComponent {
* @throws IOException if there is an error.
*/
public InputStream getAsStream() throws IOException {
ByteArrayOutputStream arrayOut;
Writer writer;
Iterator providerIterator;
Provider provider;

arrayOut = new ByteArrayOutputStream();
writer = new OutputStreamWriter(arrayOut, "UTF-8");
providerIterator = providerList.iterator();
while (providerIterator.hasNext()) {
provider = (Provider) providerIterator.next();
ByteArrayOutputStream arrayOut = new ByteArrayOutputStream();
Writer writer = new OutputStreamWriter(arrayOut, "UTF-8");
for (Provider provider : providerList) {
writer.write(provider.getClassName());
writer.write("\n");
}


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

@@ -23,7 +23,7 @@ import java.util.Stack;
* Identity Stack.
* @since Ant 1.7
*/
public class IdentityStack extends Stack {
public class IdentityStack<E> extends Stack<E> {

private static final long serialVersionUID = -5555522620060077046L;

@@ -32,11 +32,11 @@ public class IdentityStack extends Stack {
* @param s the Stack to copy; ignored if null.
* @return an IdentityStack instance.
*/
public static IdentityStack getInstance(Stack s) {
public static <E> IdentityStack<E> getInstance(Stack<E> s) {
if (s instanceof IdentityStack) {
return (IdentityStack) s;
return (IdentityStack<E>) s;
}
IdentityStack result = new IdentityStack();
IdentityStack<E> result = new IdentityStack<E>();
if (s != null) {
result.addAll(s);
}
@@ -54,7 +54,7 @@ public class IdentityStack extends Stack {
* as the bottom element.
* @param o the bottom element.
*/
public IdentityStack(Object o) {
public IdentityStack(E o) {
super();
push(o);
}


+ 18
- 16
src/main/org/apache/tools/ant/util/LinkedHashtable.java View File

@@ -37,23 +37,25 @@ import java.util.Set;
*
* @since Ant 1.8.2
*/
public class LinkedHashtable extends Hashtable {
private final LinkedHashMap map;
public class LinkedHashtable<K, V> extends Hashtable<K, V> {
private static final long serialVersionUID = 1L;

private final LinkedHashMap<K, V> map;

public LinkedHashtable() {
map = new LinkedHashMap();
map = new LinkedHashMap<K, V>();
}

public LinkedHashtable(int initialCapacity) {
map = new LinkedHashMap(initialCapacity);
map = new LinkedHashMap<K, V>(initialCapacity);
}

public LinkedHashtable(int initialCapacity, float loadFactor) {
map = new LinkedHashMap(initialCapacity, loadFactor);
map = new LinkedHashMap<K, V>(initialCapacity, loadFactor);
}

public LinkedHashtable(Map m) {
map = new LinkedHashMap(m);
public LinkedHashtable(Map<K, V> m) {
map = new LinkedHashMap<K, V>(m);
}

public synchronized void clear() {
@@ -72,11 +74,11 @@ public class LinkedHashtable extends Hashtable {
return map.containsValue(value);
}

public Enumeration elements() {
public Enumeration<V> elements() {
return CollectionUtils.asEnumeration(values().iterator());
}

public synchronized Set entrySet() {
public synchronized Set<Map.Entry<K, V>> entrySet() {
return map.entrySet();
}

@@ -84,7 +86,7 @@ public class LinkedHashtable extends Hashtable {
return map.equals(o);
}

public synchronized Object get(Object k) {
public synchronized V get(Object k) {
return map.get(k);
}

@@ -96,23 +98,23 @@ public class LinkedHashtable extends Hashtable {
return map.isEmpty();
}

public Enumeration keys() {
public Enumeration<K> keys() {
return CollectionUtils.asEnumeration(keySet().iterator());
}

public synchronized Set keySet() {
public synchronized Set<K> keySet() {
return map.keySet();
}

public synchronized Object put(Object k, Object v) {
public synchronized V put(K k, V v) {
return map.put(k, v);
}

public synchronized void putAll(Map m) {
public synchronized void putAll(Map<? extends K, ? extends V> m) {
map.putAll(m);
}

public synchronized Object remove(Object k) {
public synchronized V remove(Object k) {
return map.remove(k);
}

@@ -124,7 +126,7 @@ public class LinkedHashtable extends Hashtable {
return map.toString();
}

public synchronized Collection values() {
public synchronized Collection<V> values() {
return map.values();
}
}

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

@@ -41,11 +41,11 @@ public class ReflectUtil {
* the given arguments.
* @since Ant 1.8.0
*/
public static Object newInstance(Class ofClass,
Class[] argTypes,
public static <T> T newInstance(Class<T> ofClass,
Class<?>[] argTypes,
Object[] args) {
try {
Constructor con = ofClass.getConstructor(argTypes);
Constructor<T> con = ofClass.getConstructor(argTypes);
return con.newInstance(args);
} catch (Exception t) {
throwBuildException(t);
@@ -82,7 +82,7 @@ public class ReflectUtil {
public static Object invokeStatic(Object obj, String methodName) {
try {
Method method;
method = ((Class) obj).getMethod(
method = ((Class<?>) obj).getMethod(
methodName, (Class[]) null);
return method.invoke(obj, (Object[]) null);
} catch (Exception t) {
@@ -100,7 +100,7 @@ public class ReflectUtil {
* @return the object returned by the method
*/
public static Object invoke(
Object obj, String methodName, Class argType, Object arg) {
Object obj, String methodName, Class<?> argType, Object arg) {
try {
Method method;
method = obj.getClass().getMethod(
@@ -123,8 +123,8 @@ public class ReflectUtil {
* @return the object returned by the method
*/
public static Object invoke(
Object obj, String methodName, Class argType1, Object arg1,
Class argType2, Object arg2) {
Object obj, String methodName, Class<?> argType1, Object arg1,
Class<?> argType2, Object arg2) {
try {
Method method;
method = obj.getClass().getMethod(


+ 3
- 3
src/main/org/apache/tools/ant/util/StringUtils.java View File

@@ -49,7 +49,7 @@ public final class StringUtils {
* @param data the string to split up into lines.
* @return the list of lines available in the string.
*/
public static Vector lineSplit(String data) {
public static Vector<String> lineSplit(String data) {
return split(data, '\n');
}

@@ -60,8 +60,8 @@ public final class StringUtils {
* @param ch the separator character.
* @return the list of elements.
*/
public static Vector split(String data, int ch) {
Vector elems = new Vector();
public static Vector<String> split(String data, int ch) {
Vector<String> elems = new Vector<String>();
int pos = -1;
int i = 0;
while ((pos = data.indexOf(ch, i)) != -1) {


Loading…
Cancel
Save