Author: bentmann
Date: Mon May  4 01:08:40 2009
New Revision: 771154

URL: http://svn.apache.org/viewvc?rev=771154&view=rev
Log:
o Fixed merging of lifecycle plugins that contribute more than one execution
o Fixed conversion of default value for plugin configuration

Modified:
    
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java

Modified: 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=771154&r1=771153&r2=771154&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 Mon May  4 01:08:40 2009
@@ -18,10 +18,10 @@
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -508,7 +508,7 @@
     //
     public Set<Plugin> getPluginsBoundByDefaultToAllLifecycles( String 
packaging )
     {
-        Set<Plugin> plugins = new LinkedHashSet<Plugin>();
+        Map<Plugin, Plugin> plugins = new LinkedHashMap<Plugin, Plugin>();
         
         for ( Lifecycle lifecycle : lifecycles )
         {
@@ -524,23 +524,35 @@
                 //
                 // org.apache.maven.plugins:maven-compiler-plugin:compile
                 //
-                for ( String s : lifecyclePhasesForPackaging.values() )
-                {
-                    plugins.add( 
populatePluginWithInformationSpecifiedInLifecyclePhaseDefinition( s ) );
-                }
+                parseLifecyclePhaseDefinitions( plugins, 
lifecyclePhasesForPackaging.values() );
             }
             else if ( lifecycle.getDefaultPhases() != null )
             {
-                for ( String s : lifecycle.getDefaultPhases() )
-                {
-                    plugins.add( 
populatePluginWithInformationSpecifiedInLifecyclePhaseDefinition( s ) );
-                }                
+                parseLifecyclePhaseDefinitions( plugins, 
lifecycle.getDefaultPhases() );
             }        
         }
 
-        return plugins;
+        return plugins.keySet();
     }        
-    
+
+    private void parseLifecyclePhaseDefinitions( Map<Plugin, Plugin> plugins,
+                                                 Collection<String> 
lifecyclePhaseDefinitions )
+    {
+        for ( String lifecyclePhaseDefinition : lifecyclePhaseDefinitions )
+        {
+            Plugin plugin = 
populatePluginWithInformationSpecifiedInLifecyclePhaseDefinition( 
lifecyclePhaseDefinition );
+            Plugin existing = plugins.get( plugin );
+            if ( existing != null )
+            {
+                existing.getExecutions().addAll( plugin.getExecutions() );
+            }
+            else
+            {
+                plugins.put( plugin, plugin );
+            }
+        }
+    }
+
     private Plugin 
populatePluginWithInformationSpecifiedInLifecyclePhaseDefinition( String 
lifecyclePhaseDefinition )
     {
         String[] p = StringUtils.split( lifecyclePhaseDefinition, ":" );
@@ -548,8 +560,10 @@
         plugin.setGroupId( p[0] );
         plugin.setArtifactId( p[1] );
         PluginExecution execution = new PluginExecution();
-        execution.setGoals( Arrays.asList( new String[]{ p[2] } ) );
-        plugin.setExecutions( Arrays.asList( new PluginExecution[]{ execution 
} ) );
+        // FIXME: Find a better execution id
+        execution.setId( "default-" + p[2] );
+        execution.setGoals( new ArrayList<String>( Arrays.asList( new String[] 
{ p[2] } ) ) );
+        plugin.setExecutions( new ArrayList<PluginExecution>( Arrays.asList( 
new PluginExecution[] { execution } ) ) );
         return plugin;
     }
     
@@ -563,7 +577,7 @@
                 for( String g : e.getGoals() )
                 {
                     Xpp3Dom dom = getDefaultPluginConfiguration( 
p.getGroupId(), p.getArtifactId(), p.getVersion(), g, project, localRepository 
);
-                    e.setConfiguration( dom );
+                    e.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) 
e.getConfiguration(), dom, Boolean.TRUE ) );
                 }
             }
         }
@@ -594,11 +608,11 @@
         
         for( PlexusConfiguration ce : ces )
         {            
-            if ( ce.getValue( null ) != null )
+            String defaultValue = ce.getAttribute( "default-value", null );
+            if ( ce.getValue( null ) != null || defaultValue != null )
             {
                 Xpp3Dom e = new Xpp3Dom( ce.getName() );
                 e.setValue( ce.getValue( null ) );
-                String defaultValue = ce.getAttribute( "default-value", null );
                 if ( defaultValue != null )
                 {
                     e.setAttribute( "default-value", defaultValue );

Modified: 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=771154&r1=771153&r2=771154&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Mon May  4 01:08:40 2009
@@ -191,7 +191,7 @@
                                pln.add(copy);
                        }
                
-                       // Merge the various sources for mojo configuration:
+            // Merge the various sources for mojo configuration:
             // 1. default values from mojo descriptor
             // 2. POM values from per-plugin configuration
             // 3. POM values from per-execution configuration
@@ -280,7 +280,7 @@
        return null;
     }
     
-    public static void addPluginsToModel(Model target, Set<Plugin> plugins)
+    public static void addPluginsToModel( Model target, Set<Plugin> plugins )
     {
        List<Plugin> mngPlugins = (target.getBuild().getPluginManagement() != 
null)
                ? target.getBuild().getPluginManagement().getPlugins() : new 
ArrayList<Plugin>();
@@ -300,14 +300,19 @@
                }
                
                Plugin pomPlugin = containsPlugin( p, pomPlugins);
-               if( pomPlugin == null)
-               {
-                       lifecyclePlugins.add(p);
-               }
-               else if(p.getConfiguration() != null)
-               {
-                       System.out.println(Xpp3Dom.mergeXpp3Dom((Xpp3Dom) 
p.getConfiguration(), (Xpp3Dom) pomPlugin.getConfiguration()));
-               }
+               if ( pomPlugin == null )
+            {
+                lifecyclePlugins.add( p );
+            }
+            else
+            {
+                PluginProcessor.copy2( p, pomPlugin, true );
+                if ( p.getConfiguration() != null )
+                {
+                    System.out.println( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) 
p.getConfiguration(),
+                                                              (Xpp3Dom) 
pomPlugin.getConfiguration() ) );
+                }
+            }
        }
        pomPlugins.addAll(lifecyclePlugins);
        target.getBuild().setPlugins(pomPlugins);


Reply via email to