bodewig 2005/03/17 07:13:09 Modified: src/main/org/apache/tools/ant/taskdefs Recorder.java Log: Clean up recorder map when subbuild finishes, PR 20053 Revision Changes Path 1.26 +99 -2 ant/src/main/org/apache/tools/ant/taskdefs/Recorder.java Index: Recorder.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Recorder.java,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- Recorder.java 6 Jan 2005 17:22:44 -0000 1.25 +++ Recorder.java 17 Mar 2005 15:13:09 -0000 1.26 @@ -17,8 +17,10 @@ package org.apache.tools.ant.taskdefs; import java.util.Hashtable; +import org.apache.tools.ant.BuildEvent; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; +import org.apache.tools.ant.SubBuildListener; import org.apache.tools.ant.Task; import org.apache.tools.ant.types.EnumeratedAttribute; @@ -40,7 +42,7 @@ * @since Ant 1.4 * @ant.task name="record" category="utility" */ -public class Recorder extends Task { +public class Recorder extends Task implements SubBuildListener { ////////////////////////////////////////////////////////////////////// // ATTRIBUTES @@ -66,6 +68,15 @@ ////////////////////////////////////////////////////////////////////// // CONSTRUCTORS / INITIALIZERS + /** + * Overridden so we can add the task as build listener. + * + * @since Ant 1.7 + */ + public void init() { + getProject().addBuildListener(this); + } + ////////////////////////////////////////////////////////////////////// // ACCESSOR METHODS @@ -153,6 +164,7 @@ RecorderEntry recorder = getRecorder(filename, getProject()); // set the values on the recorder recorder.setMessageOutputLevel(loglevel); + recorder.setEmacsMode(emacsMode); if (start != null) { if (start.booleanValue()) { recorder.reopenFile(); @@ -162,7 +174,6 @@ recorder.closeFile(); } } - recorder.setEmacsMode(emacsMode); } ////////////////////////////////////////////////////////////////////// @@ -231,5 +242,91 @@ return entry; } + /** + * Empty implementation required by SubBuildListener interface. + * + * @since Ant 1.7 + */ + public void buildStarted(BuildEvent event) { + } + + /** + * Empty implementation required by SubBuildListener interface. + * + * @since Ant 1.7 + */ + public void subBuildStarted(BuildEvent event) { + } + + /** + * Empty implementation required by SubBuildListener interface. + * + * @since Ant 1.7 + */ + public void targetStarted(BuildEvent event) { + } + + /** + * Empty implementation required by SubBuildListener interface. + * + * @since Ant 1.7 + */ + public void targetFinished(BuildEvent event) { + } + + /** + * Empty implementation required by SubBuildListener interface. + * + * @since Ant 1.7 + */ + public void taskStarted(BuildEvent event) { + } + + /** + * Empty implementation required by SubBuildListener interface. + * + * @since Ant 1.7 + */ + public void taskFinished(BuildEvent event) { + } + + /** + * Empty implementation required by SubBuildListener interface. + * + * @since Ant 1.7 + */ + public void messageLogged(BuildEvent event) { + } + + /** + * Cleans recorder registry. + * + * @since Ant 1.7 + */ + public void buildFinished(BuildEvent event) { + cleanup(); + } + + /** + * Cleans recorder registry, if this is the subbuild the task has + * been created in. + * + * @since Ant 1.7 + */ + public void subBuildFinished(BuildEvent event) { + if (event.getProject() == getProject()) { + cleanup(); + } + } + + /** + * cleans recorder registry and removes itself from BuildListener list. + * + * @since Ant 1.7 + */ + private void cleanup() { + recorderEntries.clear(); + getProject().removeBuildListener(this); + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]