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);
}