Author: bodewig
Date: Tue Jul 14 04:51:55 2009
New Revision: 793792

URL: http://svn.apache.org/viewvc?rev=793792&view=rev
Log:
record task doesn't work properly with subbuilds.  PR 41368.  Submitted by Greg 
Schueler

Added:
    ant/core/trunk/src/etc/testcases/taskdefs/recorder/rectest5.result
    ant/core/trunk/src/etc/testcases/taskdefs/recorder/rectest6.result
    ant/core/trunk/src/etc/testcases/taskdefs/recorder2.xml   (with props)
Modified:
    ant/core/trunk/CONTRIBUTORS
    ant/core/trunk/WHATSNEW
    ant/core/trunk/contributors.xml
    ant/core/trunk/src/etc/testcases/taskdefs/recorder.xml
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Recorder.java
    
ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/RecorderTest.java

Modified: ant/core/trunk/CONTRIBUTORS
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/CONTRIBUTORS?rev=793792&r1=793791&r2=793792&view=diff
==============================================================================
Binary files - no diff available.

Modified: ant/core/trunk/WHATSNEW
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=793792&r1=793791&r2=793792&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Tue Jul 14 04:51:55 2009
@@ -399,7 +399,10 @@
 
  * filesetmanifest="mergewithoutmain" in <jar> didn't treat inline
    manifests as expected.
-   Bugzilla Report 29731. 
+   Bugzilla Report 29731.
+
+ * <record> didn't work properly with nested builds.
+   Bugzilla Report 41368. 
 
 Other changes:
 --------------

Modified: ant/core/trunk/contributors.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/contributors.xml?rev=793792&r1=793791&r2=793792&view=diff
==============================================================================
--- ant/core/trunk/contributors.xml (original)
+++ ant/core/trunk/contributors.xml Tue Jul 14 04:51:55 2009
@@ -454,6 +454,10 @@
     <last>Nelson</last>
   </name>
   <name>
+    <first>Greg</first>
+    <last>Schueler</last>
+  </name>
+  <name>
     <first>Günther</first>
     <last>Kögel</last>
   </name>

Modified: ant/core/trunk/src/etc/testcases/taskdefs/recorder.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/recorder.xml?rev=793792&r1=793791&r2=793792&view=diff
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/recorder.xml (original)
+++ ant/core/trunk/src/etc/testcases/taskdefs/recorder.xml Tue Jul 14 04:51:55 
2009
@@ -61,6 +61,13 @@
         <record name="${recdir}/rectest4.log" action="stop"/>
     </target>
 
+    <target name="subbuild">
+        <record name="${recdir}/rectest5.log" action="start"/>
+        <echo message="some message5"/>
+        <ant antfile="recorder2.xml"/>
+        <record name="${recdir}/rectest5.log" action="stop"/>
+    </target>
+
 
     <target name="cleanup">
        <delete dir="${recdir}"/>

Added: ant/core/trunk/src/etc/testcases/taskdefs/recorder/rectest5.result
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/recorder/rectest5.result?rev=793792&view=auto
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/recorder/rectest5.result (added)
+++ ant/core/trunk/src/etc/testcases/taskdefs/recorder/rectest5.result Tue Jul 
14 04:51:55 2009
@@ -0,0 +1,4 @@
+     [echo] some message5
+
+test6:
+     [echo] some message6

Added: ant/core/trunk/src/etc/testcases/taskdefs/recorder/rectest6.result
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/recorder/rectest6.result?rev=793792&view=auto
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/recorder/rectest6.result (added)
+++ ant/core/trunk/src/etc/testcases/taskdefs/recorder/rectest6.result Tue Jul 
14 04:51:55 2009
@@ -0,0 +1 @@
+     [echo] some message6

Added: ant/core/trunk/src/etc/testcases/taskdefs/recorder2.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/recorder2.xml?rev=793792&view=auto
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/recorder2.xml (added)
+++ ant/core/trunk/src/etc/testcases/taskdefs/recorder2.xml Tue Jul 14 04:51:55 
2009
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<project name="recorder-test" default="test6" basedir=".">
+
+    <property name="recin" location="recorder"/>
+    <property name="recdir" location="recorder-out"/>
+
+    <target name="test6">
+        <record name="${recdir}/rectest6.log" action="start" />
+        <echo message="some message6"/>
+        <record name="${recdir}/rectest6.log" action="stop" />
+    </target>
+</project>

Propchange: ant/core/trunk/src/etc/testcases/taskdefs/recorder2.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Recorder.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Recorder.java?rev=793792&r1=793791&r2=793792&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Recorder.java 
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Recorder.java Tue Jul 
14 04:51:55 2009
@@ -64,7 +64,7 @@
     private int loglevel = -1;
     /** Strip task banners if true.  */
     private boolean emacsMode = false;
-    /** The list of recorder entries. */
+    /** The recorder entries keyed by Project. Each value is another Hashtable 
of filename to RecorderEntry. */
     private static Hashtable recorderEntries = new Hashtable();
 
     //////////////////////////////////////////////////////////////////////
@@ -203,7 +203,12 @@
      */
     protected RecorderEntry getRecorder(String name, Project proj)
          throws BuildException {
-        Object o = recorderEntries.get(name);
+        Hashtable entries = (Hashtable) recorderEntries.get(proj);
+        if (null == entries) {
+            entries = new Hashtable();
+            recorderEntries.put(proj, entries);
+        }
+        Object o = entries.get(name);
         RecorderEntry entry;
 
         if (o == null) {
@@ -216,7 +221,7 @@
                 entry.openFile(append.booleanValue());
             }
             entry.setProject(proj);
-            recorderEntries.put(name, entry);
+            entries.put(name, entry);
         } else {
             entry = (RecorderEntry) o;
         }
@@ -306,7 +311,11 @@
      * @since Ant 1.7
      */
     private void cleanup() {
-        recorderEntries.clear();
+        Hashtable entries = (Hashtable) recorderEntries.get(getProject());
+        if (null != entries) {
+            entries.clear();
+            recorderEntries.remove(entries);
+        }
         getProject().removeBuildListener(this);
     }
 }

Modified: 
ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/RecorderTest.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/RecorderTest.java?rev=793792&r1=793791&r2=793792&view=diff
==============================================================================
--- 
ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/RecorderTest.java 
(original)
+++ 
ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/RecorderTest.java 
Tue Jul 14 04:51:55 2009
@@ -82,4 +82,19 @@
                                                       + "rectest4.log"), 
true));
     }
 
+    public void testSubBuild() throws IOException {
+        executeTarget("subbuild");
+        assertTrue(FILE_UTILS
+                   .contentEquals(project.resolveFile(REC_IN
+                                                      + "rectest5.result"),
+                                  project.resolveFile(REC_DIR
+                                                      + "rectest5.log"), 
true));
+        assertTrue(FILE_UTILS
+                   .contentEquals(project.resolveFile(REC_IN
+                                                      + "rectest6.result"),
+                                  project.resolveFile(REC_DIR
+                                                      + "rectest6.log"), 
true));
+                                                      
+    }
+
 }


Reply via email to