Author: jlboudart
Date: Thu Oct  3 18:33:17 2013
New Revision: 1528959

URL: http://svn.apache.org/r1528959
Log:
Move MultiModuleLogger logic to MetaBuildExecutor, make it configurable through 
properties

Modified:
    
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntMagicNames.java
    
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/ProjectUtils.java
    ant/easyant/core/trunk/src/main/java/org/apache/easyant/tasks/SubModule.java
    
ant/easyant/core/trunk/src/test/java/org/apache/easyant/tasks/SubModuleTest.java

Modified: 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntMagicNames.java
URL: 
http://svn.apache.org/viewvc/ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntMagicNames.java?rev=1528959&r1=1528958&r2=1528959&view=diff
==============================================================================
--- 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntMagicNames.java
 (original)
+++ 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntMagicNames.java
 Thu Oct  3 18:33:17 2013
@@ -204,4 +204,9 @@ public interface EasyAntMagicNames {
      */
     static final String IMPORTED_MODULES_RESOLVE_REPORT_REF = 
"importedModules.report.ref";
 
+    /**
+     * Name of the property containing multimodule logger implementation
+     */
+    static final String MULTIMODULE_LOGGER = "multimodule.logger";
+
 }

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=1528959&r1=1528958&r2=1528959&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 Oct  3 18:33:17 2013
@@ -40,6 +40,9 @@ public class MetaBuildExecutor extends D
 
     @Override
     public void executeTargets(Project project, String[] targets) throws 
BuildException {
+
+        ProjectUtils.installMultiModuleLogger(project);
+
         if (project.getReference("build-path") == null) {
             throw new BuildException("build-path is required to use 
MetaBuildExecutor");
         }

Modified: 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java
URL: 
http://svn.apache.org/viewvc/ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java?rev=1528959&r1=1528958&r2=1528959&view=diff
==============================================================================
--- 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java
 (original)
+++ 
ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java
 Thu Oct  3 18:33:17 2013
@@ -24,6 +24,9 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
+import org.apache.easyant.core.EasyAntEngine;
+import org.apache.easyant.core.EasyAntMagicNames;
+import org.apache.easyant.core.ant.listerners.MultiModuleLogger;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.BuildListener;
 import org.apache.tools.ant.BuildLogger;
@@ -32,6 +35,7 @@ import org.apache.tools.ant.Location;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.ProjectHelper;
 import org.apache.tools.ant.Target;
+import org.apache.tools.ant.util.ClasspathUtils;
 
 /**
  * Utilitary class to manipulate ant's project (such as creating toplevel 
target)
@@ -114,6 +118,16 @@ public class ProjectUtils {
 
     }
 
+    public static void installMultiModuleLogger(Project project) {
+        String multiModuleLoggerName = 
project.getProperty(EasyAntMagicNames.MULTIMODULE_LOGGER);
+        if (multiModuleLoggerName == null) {
+            multiModuleLoggerName = MultiModuleLogger.class.getCanonicalName();
+        }
+        BuildLogger buildLogger = (BuildLogger) 
ClasspathUtils.newInstance(multiModuleLoggerName,
+                EasyAntEngine.class.getClassLoader(), BuildLogger.class);
+        replaceMainLogger(project, buildLogger);
+    }
+
     /**
      * Print memory details
      * 

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=1528959&r1=1528958&r2=1528959&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 Oct  3 18:33:17 2013
@@ -34,7 +34,6 @@ import org.apache.easyant.core.EasyAntMa
 import org.apache.easyant.core.ant.ProjectUtils;
 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;
@@ -83,8 +82,6 @@ public class SubModule extends AbstractE
             return;
         }
 
-        ProjectUtils.replaceMainLogger(getProject(), new MultiModuleLogger());
-
         BuildException buildException = null;
         for (int i = 0; i < count; ++i) {
             File file = null;

Modified: 
ant/easyant/core/trunk/src/test/java/org/apache/easyant/tasks/SubModuleTest.java
URL: 
http://svn.apache.org/viewvc/ant/easyant/core/trunk/src/test/java/org/apache/easyant/tasks/SubModuleTest.java?rev=1528959&r1=1528958&r2=1528959&view=diff
==============================================================================
--- 
ant/easyant/core/trunk/src/test/java/org/apache/easyant/tasks/SubModuleTest.java
 (original)
+++ 
ant/easyant/core/trunk/src/test/java/org/apache/easyant/tasks/SubModuleTest.java
 Thu Oct  3 18:33:17 2013
@@ -1,7 +1,5 @@
 package org.apache.easyant.tasks;
 
-import static org.hamcrest.CoreMatchers.hasItem;
-import static org.hamcrest.CoreMatchers.isA;
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.junit.Assert.assertThat;
 
@@ -11,7 +9,6 @@ import java.net.URISyntaxException;
 
 import org.apache.easyant.core.EasyAntMagicNames;
 import org.apache.easyant.core.ant.listerners.BuildExecutionTimer;
-import org.apache.easyant.core.ant.listerners.MultiModuleLogger;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.taskdefs.Delete;
@@ -115,8 +112,6 @@ public class SubModuleTest extends AntTa
         assertLogContaining("Executing [] on module2");
         assertLogContaining("Skipping sub-project build because no matching 
targets were found");
 
-        verifyBuildListener();
-
     }
 
     @Test
@@ -139,7 +134,6 @@ public class SubModuleTest extends AntTa
         assertLogContaining("Executing [a-missing-target] on module2");
         assertLogContaining("Skipping undefined target 'a-missing-target' on 
module2");
         assertLogContaining("Skipping sub-project build because no matching 
targets were found");
-        verifyBuildListener();
 
     }
 
@@ -161,12 +155,7 @@ public class SubModuleTest extends AntTa
         assertLogContaining("Executing [modulewithtarget:mytarget] on 
module1");
         assertLogContaining("Executing [modulewithtarget:mytarget] on 
module2");
 
-        verifyBuildListener();
         
assertThat(submodule.getProject().getReference(BuildExecutionTimer.EXECUTION_TIMER_SUBBUILD_RESULTS),
                 notNullValue());
     }
-
-    private void verifyBuildListener() {
-        assertThat(submodule.getProject().getBuildListeners(), 
hasItem(isA(MultiModuleLogger.class)));
-    }
 }


Reply via email to