git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@910832 13f79535-47bb-0310-9956-ffa450edef68master
@@ -41,6 +41,7 @@ import org.apache.tools.ant.MagicNames; | |||||
import org.apache.tools.ant.Main; | import org.apache.tools.ant.Main; | ||||
import org.apache.tools.ant.types.PropertySet; | import org.apache.tools.ant.types.PropertySet; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.apache.tools.ant.util.VectorSet; | |||||
/** | /** | ||||
* Build a sub-project. | * Build a sub-project. | ||||
@@ -333,7 +334,7 @@ public class Ant extends Task { | |||||
public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
File savedDir = dir; | File savedDir = dir; | ||||
String savedAntFile = antFile; | String savedAntFile = antFile; | ||||
Vector locals = new Vector(targets); | |||||
Vector locals = new VectorSet(targets); | |||||
try { | try { | ||||
getNewProject(); | getNewProject(); | ||||
@@ -20,7 +20,7 @@ package org.apache.tools.ant.taskdefs; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.util.Hashtable; | |||||
import java.util.HashSet; | |||||
import java.util.Iterator; | import java.util.Iterator; | ||||
import java.util.Vector; | import java.util.Vector; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
@@ -527,7 +527,7 @@ public class ExecuteOn extends ExecTask { | |||||
final char fileSeparator = File.separatorChar; | final char fileSeparator = File.separatorChar; | ||||
Vector targets = new Vector(); | Vector targets = new Vector(); | ||||
if (targetFilePos != null) { | if (targetFilePos != null) { | ||||
Hashtable addedFiles = new Hashtable(); | |||||
HashSet addedFiles = new HashSet(); | |||||
for (int i = 0; i < srcFiles.length; i++) { | for (int i = 0; i < srcFiles.length; i++) { | ||||
String[] subTargets = mapper.mapFileName(srcFiles[i]); | String[] subTargets = mapper.mapFileName(srcFiles[i]); | ||||
if (subTargets != null) { | if (subTargets != null) { | ||||
@@ -543,7 +543,7 @@ public class ExecuteOn extends ExecTask { | |||||
} | } | ||||
if (!addedFiles.contains(name)) { | if (!addedFiles.contains(name)) { | ||||
targets.addElement(name); | targets.addElement(name); | ||||
addedFiles.put(name, name); | |||||
addedFiles.add(name); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -28,6 +28,7 @@ import java.net.MalformedURLException; | |||||
import java.net.URL; | import java.net.URL; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
import java.util.HashSet; | |||||
import java.util.Iterator; | import java.util.Iterator; | ||||
import java.util.Locale; | import java.util.Locale; | ||||
import java.util.StringTokenizer; | import java.util.StringTokenizer; | ||||
@@ -2320,7 +2321,7 @@ public class Javadoc extends Task { | |||||
* @since 1.5 | * @since 1.5 | ||||
*/ | */ | ||||
private void parsePackages(Vector pn, Path sp) { | private void parsePackages(Vector pn, Path sp) { | ||||
Vector addedPackages = new Vector(); | |||||
HashSet addedPackages = new HashSet(); | |||||
Vector dirSets = (Vector) packageSets.clone(); | Vector dirSets = (Vector) packageSets.clone(); | ||||
// for each sourcePath entry, add a directoryset with includes | // for each sourcePath entry, add a directoryset with includes | ||||
@@ -2403,7 +2404,7 @@ public class Javadoc extends Task { | |||||
String packageName = | String packageName = | ||||
dirs[i].replace(File.separatorChar, '.'); | dirs[i].replace(File.separatorChar, '.'); | ||||
if (!addedPackages.contains(packageName)) { | if (!addedPackages.contains(packageName)) { | ||||
addedPackages.addElement(packageName); | |||||
addedPackages.add(packageName); | |||||
pn.addElement(packageName); | pn.addElement(packageName); | ||||
} | } | ||||
} | } | ||||
@@ -31,6 +31,7 @@ import java.util.Hashtable; | |||||
import java.util.Vector; | import java.util.Vector; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.apache.tools.ant.util.VectorSet; | |||||
/** | /** | ||||
* Holds the data of a jar manifest. | * Holds the data of a jar manifest. | ||||
@@ -401,7 +402,7 @@ public class Manifest { | |||||
private Hashtable attributes = new Hashtable(); | private Hashtable attributes = new Hashtable(); | ||||
/** Index used to retain the attribute ordering */ | /** Index used to retain the attribute ordering */ | ||||
private Vector attributeIndex = new Vector(); | |||||
private Vector attributeIndex = new VectorSet(); | |||||
/** | /** | ||||
* The name of the section; optional -default is the main section. | * The name of the section; optional -default is the main section. | ||||
@@ -784,7 +785,7 @@ public class Manifest { | |||||
private Hashtable sections = new Hashtable(); | private Hashtable sections = new Hashtable(); | ||||
/** Index of sections - used to retain order of sections in manifest */ | /** Index of sections - used to retain order of sections in manifest */ | ||||
private Vector sectionIndex = new Vector(); | |||||
private Vector sectionIndex = new VectorSet(); | |||||
/** | /** | ||||
* Construct a manifest from Ant's default manifest file. | * Construct a manifest from Ant's default manifest file. | ||||
@@ -20,8 +20,8 @@ package org.apache.tools.ant.taskdefs; | |||||
import java.lang.reflect.InvocationTargetException; | import java.lang.reflect.InvocationTargetException; | ||||
import java.lang.reflect.Method; | import java.lang.reflect.Method; | ||||
import java.util.Enumeration; | |||||
import java.util.Vector; | |||||
import java.util.HashSet; | |||||
import java.util.Iterator; | |||||
/** | /** | ||||
* Destroys all registered <code>Process</code>es when the VM exits. | * Destroys all registered <code>Process</code>es when the VM exits. | ||||
@@ -30,7 +30,7 @@ import java.util.Vector; | |||||
*/ | */ | ||||
class ProcessDestroyer implements Runnable { | class ProcessDestroyer implements Runnable { | ||||
private static final int THREAD_DIE_TIMEOUT = 20000; | private static final int THREAD_DIE_TIMEOUT = 20000; | ||||
private Vector processes = new Vector(); | |||||
private HashSet processes = new HashSet(); | |||||
// methods to register and unregister shutdown hooks | // methods to register and unregister shutdown hooks | ||||
private Method addShutdownHookMethod; | private Method addShutdownHookMethod; | ||||
private Method removeShutdownHookMethod; | private Method removeShutdownHookMethod; | ||||
@@ -183,8 +183,7 @@ class ProcessDestroyer implements Runnable { | |||||
if (processes.size() == 0) { | if (processes.size() == 0) { | ||||
addShutdownHook(); | addShutdownHook(); | ||||
} | } | ||||
processes.addElement(process); | |||||
return processes.contains(process); | |||||
return processes.add(process); | |||||
} | } | ||||
} | } | ||||
@@ -198,7 +197,7 @@ class ProcessDestroyer implements Runnable { | |||||
*/ | */ | ||||
public boolean remove(Process process) { | public boolean remove(Process process) { | ||||
synchronized (processes) { | synchronized (processes) { | ||||
boolean processRemoved = processes.removeElement(process); | |||||
boolean processRemoved = processes.remove(process); | |||||
if (processRemoved && processes.size() == 0) { | if (processRemoved && processes.size() == 0) { | ||||
removeShutdownHook(); | removeShutdownHook(); | ||||
} | } | ||||
@@ -212,9 +211,9 @@ class ProcessDestroyer implements Runnable { | |||||
public void run() { | public void run() { | ||||
synchronized (processes) { | synchronized (processes) { | ||||
running = true; | running = true; | ||||
Enumeration e = processes.elements(); | |||||
while (e.hasMoreElements()) { | |||||
((Process) e.nextElement()).destroy(); | |||||
Iterator e = processes.iterator(); | |||||
while (e.hasNext()) { | |||||
((Process) e.next()).destroy(); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -37,9 +37,25 @@ import java.util.Vector; | |||||
* | * | ||||
* @since Ant 1.8.0 | * @since Ant 1.8.0 | ||||
*/ | */ | ||||
public class VectorSet extends Vector { | |||||
public final class VectorSet extends Vector { | |||||
private final HashSet set = new HashSet(); | private final HashSet set = new HashSet(); | ||||
public VectorSet() { super(); } | |||||
public VectorSet(int initialCapacity) { super(initialCapacity); } | |||||
public VectorSet(int initialCapacity, int capacityIncrement) { | |||||
super(initialCapacity, capacityIncrement); | |||||
} | |||||
public VectorSet(Collection c) { | |||||
if (c != null) { | |||||
for (Iterator i = c.iterator(); i.hasNext(); ) { | |||||
add(i.next()); | |||||
} | |||||
} | |||||
} | |||||
public synchronized boolean add(Object o) { | public synchronized boolean add(Object o) { | ||||
if (!set.contains(o)) { | if (!set.contains(o)) { | ||||
doAdd(size(), o); | doAdd(size(), o); | ||||