bodewig 2004/06/23 07:08:26
Modified: src/main/org/apache/tools/ant/taskdefs Ant.java
RecorderEntry.java
Log:
Preliminary fix for 8689
Revision Changes Path
1.101 +26 -4 ant/src/main/org/apache/tools/ant/taskdefs/Ant.java
Index: Ant.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Ant.java,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -r1.100 -r1.101
--- Ant.java 8 Apr 2004 14:58:19 -0000 1.100
+++ Ant.java 23 Jun 2004 14:08:26 -0000 1.101
@@ -24,9 +24,11 @@
import java.lang.reflect.Method;
import java.util.Enumeration;
import java.util.Hashtable;
+import java.util.Iterator;
import java.util.Vector;
import java.util.Set;
import java.util.HashSet;
+import org.apache.tools.ant.AntClassLoader;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.BuildListener;
import org.apache.tools.ant.DefaultLogger;
@@ -147,10 +149,9 @@
private void initializeProject() {
newProject.setInputHandler(getProject().getInputHandler());
- Vector listeners = getProject().getBuildListeners();
- final int count = listeners.size();
- for (int i = 0; i < count; i++) {
- newProject.addBuildListener((BuildListener)
listeners.elementAt(i));
+ Iterator iter = getBuildListeners();
+ while (iter.hasNext()) {
+ newProject.addBuildListener((BuildListener) iter.next());
}
if (output != null) {
@@ -390,6 +391,20 @@
}
} finally {
// help the gc
+ Iterator iter = getBuildListeners();
+ while (iter.hasNext()) {
+ newProject.removeBuildListener((BuildListener) iter.next());
+ }
+ iter = newProject.getBuildListeners().iterator();
+ while (iter.hasNext()) {
+ Object o = iter.next();
+ if (o instanceof RecorderEntry) {
+ ((RecorderEntry) o).close();
+ } else if (o instanceof AntClassLoader) {
+ ((AntClassLoader) o).cleanup();
+ }
+ }
+
newProject = null;
Enumeration e = properties.elements();
while (e.hasMoreElements()) {
@@ -644,6 +659,13 @@
*/
public void addPropertyset(PropertySet ps) {
propertySets.addElement(ps);
+ }
+
+ /**
+ * @since Ant 1.6.2
+ */
+ private Iterator getBuildListeners() {
+ return getProject().getBuildListeners().iterator();
}
/**
1.17 +9 -2
ant/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java
Index: RecorderEntry.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- RecorderEntry.java 9 Mar 2004 16:48:06 -0000 1.16
+++ RecorderEntry.java 23 Jun 2004 14:08:26 -0000 1.17
@@ -99,8 +99,7 @@
+ StringUtils.LINE_SEP);
error.printStackTrace(out);
}
- out.flush();
- out.close();
+ close();
}
@@ -207,6 +206,14 @@
+ (seconds % 60 == 1 ? "" : "s");
}
+ }
+
+ /**
+ * @since 1.6.2
+ */
+ public void close() {
+ out.flush();
+ out.close();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]