Author: jlboudart
Date: Thu Aug 22 20:12:38 2013
New Revision: 1516587

URL: http://svn.apache.org/r1516587
Log:
Refactor buildExecutionTimer, print execution result should be done by listener 
itself

Removed:
    
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/listerners/SubBuildExecutionTimer.java
Modified:
    
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/MetaBuildExecutor.java
    
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/listerners/BuildExecutionTimer.java
    ant/easyant/core/trunk/src/main/java/org/apache/easyant/tasks/SubModule.java

Modified: 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/MetaBuildExecutor.java
URL: 
http://svn.apache.org/viewvc/ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/MetaBuildExecutor.java?rev=1516587&r1=1516586&r2=1516587&view=diff
==============================================================================
--- 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/MetaBuildExecutor.java
 (original)
+++ 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/MetaBuildExecutor.java
 Thu Aug 22 20:12:38 2013
@@ -23,9 +23,6 @@ import java.util.List;
 
 import org.apache.easyant.core.EasyAntConstants;
 import org.apache.easyant.core.EasyAntMagicNames;
-import org.apache.easyant.core.ant.listerners.BuildExecutionTimer;
-import 
org.apache.easyant.core.ant.listerners.BuildExecutionTimer.ExecutionResult;
-import org.apache.easyant.core.ant.listerners.SubBuildExecutionTimer;
 import org.apache.easyant.tasks.SubModule;
 import org.apache.easyant.tasks.SubModule.TargetList;
 import org.apache.tools.ant.BuildException;
@@ -77,27 +74,23 @@ public class MetaBuildExecutor extends D
         super.executeTargets(project, preTargetsToRun.toArray(new String[] 
{}));
 
         printSubBuildsInOrder(project);
-        try {
-            // delegate to the ea:submodule task to execute the list of 
targets on
-            // all modules in the build list
-            SubModule subModule = new SubModule();
-            subModule.setTaskName("meta:submodule");
-            subModule.setProject(project);
-
-            Boolean useBuildRepository = 
project.getProperty(EasyAntMagicNames.USE_BUILD_REPOSITORY) != null ? Boolean
-                    
.parseBoolean(project.getProperty(EasyAntMagicNames.USE_BUILD_REPOSITORY)) : 
true;
-            subModule.setUseBuildRepository(useBuildRepository);
-
-            subModule.setBuildpathRef(new Reference(project, "build-path"));
-            subModule.setTargets(new TargetList(targets));
-            subModule.execute();
-
-            // now call the default executor to include any extra targets 
defined in
-            // the root module.ant
-            super.executeTargets(project, postTargetsToRun.toArray(new 
String[] {}));
-        } finally {
-            printExecutionSubBuildsExecutionTimes(project);
-        }
+        // delegate to the ea:submodule task to execute the list of targets on
+        // all modules in the build list
+        SubModule subModule = new SubModule();
+        subModule.setTaskName("meta:submodule");
+        subModule.setProject(project);
+
+        Boolean useBuildRepository = 
project.getProperty(EasyAntMagicNames.USE_BUILD_REPOSITORY) != null ? Boolean
+                
.parseBoolean(project.getProperty(EasyAntMagicNames.USE_BUILD_REPOSITORY)) : 
true;
+        subModule.setUseBuildRepository(useBuildRepository);
+
+        subModule.setBuildpathRef(new Reference(project, "build-path"));
+        subModule.setTargets(new TargetList(targets));
+        subModule.execute();
+
+        // now call the default executor to include any extra targets defined 
in
+        // the root module.ant
+        super.executeTargets(project, postTargetsToRun.toArray(new String[] 
{}));
     }
 
     /*
@@ -121,16 +114,4 @@ public class MetaBuildExecutor extends D
         }
     }
 
-    private void printExecutionSubBuildsExecutionTimes(Project project) {
-        List<ExecutionResult> allSubBuildResults = project
-                
.getReference(SubBuildExecutionTimer.EXECUTION_TIMER_SUBBUILD_RESULTS);
-        if (allSubBuildResults != null && allSubBuildResults.size() > 0) {
-            StringBuilder sb = new StringBuilder();
-            
sb.append(StringUtils.LINE_SEP).append(DEMARKER).append(StringUtils.LINE_SEP);
-            sb.append("Project Sub-modules Summary: 
").append(StringUtils.LINE_SEP).append(DEMARKER);
-            
sb.append(StringUtils.LINE_SEP).append(BuildExecutionTimer.formatExecutionResults(allSubBuildResults));
-            sb.append(StringUtils.LINE_SEP).append(DEMARKER);
-            project.log(sb.toString());
-        }
-    }
 }

Modified: 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/listerners/BuildExecutionTimer.java
URL: 
http://svn.apache.org/viewvc/ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/listerners/BuildExecutionTimer.java?rev=1516587&r1=1516586&r2=1516587&view=diff
==============================================================================
--- 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/listerners/BuildExecutionTimer.java
 (original)
+++ 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/listerners/BuildExecutionTimer.java
 Thu Aug 22 20:12:38 2013
@@ -25,6 +25,8 @@ import org.apache.easyant.core.ant.Execu
 import org.apache.ivy.util.StringUtils;
 import org.apache.tools.ant.BuildEvent;
 import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.SubBuildListener;
 import org.apache.tools.ant.util.DateUtils;
 
 /*
@@ -35,7 +37,20 @@ import org.apache.tools.ant.util.DateUti
 /**
  * Build listener to time execution of builds.
  */
-public class BuildExecutionTimer implements BuildListener {
+public class BuildExecutionTimer implements BuildListener, SubBuildListener {
+
+    /**
+     * Reference key against which build execution results will be stored
+     */
+    public static final String EXECUTION_TIMER_BUILD_RESULTS = 
"execution.timer.build.results";
+
+    /**
+     * Reference key against which sub-build execution times will be stored
+     */
+    public static final String EXECUTION_TIMER_SUBBUILD_RESULTS = 
"execution.timer.subbuild.results";
+
+    private static final String DEMARKER = 
"======================================================================";
+
     // build start time
     // to be initialized in buildStarted method
     protected long buildStartTime;
@@ -105,8 +120,22 @@ public class BuildExecutionTimer impleme
 
     }
 
-    public void buildFinished(BuildEvent arg0) {
-        stopTimer(arg0, EXECUTION_TIMER_BUILD_RESULTS, buildStartTime);
+    public void buildFinished(BuildEvent event) {
+        stopTimer(event, EXECUTION_TIMER_BUILD_RESULTS, buildStartTime);
+        printExecutionSubBuildsExecutionTimes(event.getProject());
+    }
+
+    private void printExecutionSubBuildsExecutionTimes(Project project) {
+        String lineSep = org.apache.tools.ant.util.StringUtils.LINE_SEP;
+        List<ExecutionResult> allSubBuildResults = 
project.getReference(EXECUTION_TIMER_SUBBUILD_RESULTS);
+        if (allSubBuildResults != null && allSubBuildResults.size() > 0) {
+            StringBuilder sb = new StringBuilder();
+            sb.append(lineSep).append(DEMARKER).append(lineSep);
+            sb.append("Project Sub-modules Summary: 
").append(lineSep).append(DEMARKER);
+            
sb.append(lineSep).append(formatExecutionResults(allSubBuildResults));
+            sb.append(lineSep).append(DEMARKER);
+            project.log(sb.toString());
+        }
     }
 
     public void buildStarted(BuildEvent arg0) {
@@ -140,7 +169,7 @@ public class BuildExecutionTimer impleme
      * @param results
      * @return
      */
-    public static String formatExecutionResults(List<ExecutionResult> results) 
{
+    public String formatExecutionResults(List<ExecutionResult> results) {
         String formattedResults = "";
         int constantSpaces = 10;
         int maxUnitNameLength = 0;
@@ -171,8 +200,12 @@ public class BuildExecutionTimer impleme
         return formattedResults;
     }
 
-    /**
-     * Reference key against which build execution results will be stored
-     */
-    public static final String EXECUTION_TIMER_BUILD_RESULTS = 
"execution.timer.build.results";
+    public void subBuildFinished(BuildEvent arg0) {
+        stopTimer(arg0, EXECUTION_TIMER_SUBBUILD_RESULTS, buildStartTime);
+    }
+
+    public void subBuildStarted(BuildEvent arg0) {
+        buildStartTime = System.currentTimeMillis();
+    }
+
 }

Modified: 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/tasks/SubModule.java
URL: 
http://svn.apache.org/viewvc/ant/easyant/core/trunk/src/main/java/org/apache/easyant/tasks/SubModule.java?rev=1516587&r1=1516586&r2=1516587&view=diff
==============================================================================
--- 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/tasks/SubModule.java 
(original)
+++ 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/tasks/SubModule.java 
Thu Aug 22 20:12:38 2013
@@ -32,9 +32,9 @@ import java.util.Vector;
 import org.apache.easyant.core.EasyAntConstants;
 import org.apache.easyant.core.EasyAntMagicNames;
 import org.apache.easyant.core.ant.ProjectUtils;
-import org.apache.easyant.core.ant.listerners.MultiModuleLogger;
-import org.apache.easyant.core.ant.listerners.SubBuildExecutionTimer;
+import org.apache.easyant.core.ant.listerners.BuildExecutionTimer;
 import 
org.apache.easyant.core.ant.listerners.BuildExecutionTimer.ExecutionResult;
+import org.apache.easyant.core.ant.listerners.MultiModuleLogger;
 import org.apache.easyant.core.ivy.IvyInstanceHelper;
 import org.apache.ivy.ant.IvyPublish;
 import org.apache.ivy.ant.IvyResolve;
@@ -276,7 +276,7 @@ public class SubModule extends AbstractE
         }
         // explicitly add the execution timer to time
         // sub builds
-        subModule.addBuildListener(new SubBuildExecutionTimer());
+        subModule.addBuildListener(new BuildExecutionTimer());
 
         // copy all User properties
         addAlmostAll(getProject().getUserProperties(), subModule, 
PropertyType.USER);
@@ -314,13 +314,13 @@ public class SubModule extends AbstractE
     @SuppressWarnings("unchecked")
     private void storeExecutionTimes(Project parent, Project child) {
         List<ExecutionResult> allresults = (List<ExecutionResult>) parent
-                
.getReference(SubBuildExecutionTimer.EXECUTION_TIMER_SUBBUILD_RESULTS);
+                
.getReference(BuildExecutionTimer.EXECUTION_TIMER_SUBBUILD_RESULTS);
         if (allresults == null) {
             allresults = new ArrayList<ExecutionResult>();
-            
parent.addReference(SubBuildExecutionTimer.EXECUTION_TIMER_SUBBUILD_RESULTS, 
allresults);
+            
parent.addReference(BuildExecutionTimer.EXECUTION_TIMER_SUBBUILD_RESULTS, 
allresults);
         }
         List<ExecutionResult> childResults = (List<ExecutionResult>) child
-                
.getReference(SubBuildExecutionTimer.EXECUTION_TIMER_SUBBUILD_RESULTS);
+                
.getReference(BuildExecutionTimer.EXECUTION_TIMER_SUBBUILD_RESULTS);
         if (childResults != null) {
             allresults.addAll(childResults);
         }


Reply via email to