Author: sisbell
Date: Thu Apr 30 18:55:26 2009
New Revision: 770395

URL: http://svn.apache.org/viewvc?rev=770395&view=rev
Log:
Fixes for merging in plugin config. Needed to do copy of plugins and config.

Modified:
    
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
    
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
    
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java

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=770395&r1=770394&r2=770395&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
 Thu Apr 30 18:55:26 2009
@@ -42,10 +42,12 @@
 import org.apache.maven.model.Model;
 import org.apache.maven.model.ModelEventListener;
 import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginExecution;
 import org.apache.maven.model.ProcessorContext;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.interpolator.Interpolator;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.model.processors.PluginProcessor;
 import org.apache.maven.profiles.DefaultProfileManager;
 import org.apache.maven.profiles.ProfileActivationException;
 import org.apache.maven.profiles.ProfileManager;
@@ -61,6 +63,7 @@
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 /**
  * @version $Id$
@@ -117,6 +120,7 @@
                try 
                {
                        domainModel = build( "unknown", pomFile, configuration 
);
+
                } 
                catch (IOException e) 
                {
@@ -155,27 +159,72 @@
                }
                                
             domainModel = ProcessorContext.mergeProfilesIntoModel( 
externalProfiles, domainModel );
+    
             
         }
         catch ( IOException e )
         {
             throw new ProjectBuildingException("", "");
         }
-        
+   
         //Interpolation & Management
         MavenProject project;
                try 
                {               
                        Model model = interpolateDomainModel( domainModel, 
configuration, pomFile );
+                               
+                       List<Plugin> plns = new ArrayList<Plugin>();
+                       
                        Set<Plugin> plugins = 
lifecycle.getPluginsBoundByDefaultToAllLifecycles(model.getPackaging());
-                       ProcessorContext.addPluginsToModel(model, plugins);     
                
+
+                       addPluginsToModel(model, plugins);                      
+                                                       
                        ProcessorContext.processManagementNodes(model);
+                       
                        project = this.fromDomainModelToMavenProject(model, 
domainModel.getParentFile(), configuration, pomFile);
-                               
-                       plugins = 
lifecycle.populateDefaultConfigurationForPlugins(new 
HashSet<Plugin>(model.getBuild().getPlugins()), 
+               
+                       ArrayList<Plugin> pln = new ArrayList<Plugin>();
+                       for(Plugin p : 
project.getModel().getBuild().getPlugins())
+                       {
+                               Plugin copy = new Plugin();
+                               PluginProcessor.copy2(p, copy, true);   
+                               pln.add(copy);
+                       }
+                       
+                       Set<Plugin> pl = 
lifecycle.populateDefaultConfigurationForPlugins(new HashSet<Plugin>(pln), 
                                project, configuration.getLocalRepository());
+                       /*
+               if(model.getArtifactId() != null &&
+                               model.getArtifactId().equals("maven-model"))
+                       {
+                       System.out.println(new 
DomainModel(project.getModel()).asString());
+                       }                       
+                       */
+               
+                       for (Plugin buildPlugin : pl) {
+                               Xpp3Dom dom = (Xpp3Dom) 
buildPlugin.getConfiguration();
+                               Plugin x = containsPlugin(buildPlugin, 
project.getModel()
+                                               .getBuild().getPlugins());
+
+                               for (PluginExecution e : 
buildPlugin.getExecutions()) {
+                                       for (String g : e.getGoals()) {
+                                               if (x != null) {
+                                                       PluginExecution pe = 
contains(g, x.getExecutions());
+                                                       if (pe != null) {
+                                                               Xpp3Dom dom1 = 
Xpp3Dom.mergeXpp3Dom(
+                                                                               
(Xpp3Dom) pe.getConfiguration(),
+                                                                               
(Xpp3Dom) e.getConfiguration());
+                                                               
e.setConfiguration(dom1);
+                                                       }
+                                               }
+                                               Xpp3Dom dom1 = 
Xpp3Dom.mergeXpp3Dom((Xpp3Dom) e
+                                                               
.getConfiguration(), dom);
+                                               e.setConfiguration(dom1);
+                                       }
+                               }
 
-                       project.getModel().getBuild().setPlugins(new 
ArrayList<Plugin>(plugins));
+                       }               
+                       project.getModel().getBuild().setPlugins(new 
ArrayList<Plugin>(pl));    
                } 
                catch (IOException e) 
                {
@@ -186,7 +235,6 @@
                        e.printStackTrace();
                        throw new ProjectBuildingException("",e.getMessage());
                }
-               
         project.setActiveProfiles( projectProfiles );
          
         Build build = project.getBuild();
@@ -203,6 +251,56 @@
         
         return project;
     }
+
+    
+    
+    private static PluginExecution contains(String goal, List<PluginExecution> 
plugins)
+    {
+       for(PluginExecution pe : plugins)
+       {
+               if(pe.getGoals().contains(goal))
+               {
+                       return pe;
+               }
+       }
+       return null;
+    }
+    
+    public static void addPluginsToModel(Model target, Set<Plugin> plugins)
+    {
+       List<Plugin> mPlugins = new 
ArrayList<Plugin>(target.getBuild().getPlugins());
+       
+       List<Plugin> lifecyclePlugins = new ArrayList<Plugin>();
+       
+       for( Plugin p : plugins )
+       {
+               Plugin mPlugin = containsPlugin( p, mPlugins);
+               if( mPlugin == null)
+               {
+                       lifecyclePlugins.add(p);
+               }
+               else if(p.getConfiguration() != null)
+               {
+                       System.out.println(Xpp3Dom.mergeXpp3Dom((Xpp3Dom) 
p.getConfiguration(), (Xpp3Dom) mPlugin.getConfiguration()));
+               }
+       }
+       mPlugins.addAll(lifecyclePlugins);
+       target.getBuild().setPlugins(mPlugins);
+
+    }
+    
+    private static Plugin containsPlugin(Plugin plugin, List<Plugin> plugins)
+    {
+       for(Plugin p : plugins)
+       {
+               if( p.getGroupId().equals(plugin.getGroupId()) && 
p.getArtifactId().equals(plugin.getArtifactId()))
+               {
+                       return p;
+               }
+       }
+       
+       return null;
+    }    
         
     public MavenProject buildFromRepository(Artifact artifact, 
ProjectBuilderConfiguration configuration )
        throws ProjectBuildingException
@@ -618,7 +716,17 @@
         Artifact artifactParent = repositorySystem.createProjectArtifact( 
domainModel.getParentGroupId(), domainModel.getParentArtifactId(), 
domainModel.getParentVersion() );
 
         ArtifactResolutionRequest request = new ArtifactResolutionRequest( 
artifactParent, localRepository, remoteRepositories );
-        ArtifactResolutionResult result = repositorySystem.resolve( request );
+        ArtifactResolutionResult result;
+               try 
+               {
+                       result = repositorySystem.resolve( request );
+               } 
+               catch (Exception e) 
+               {
+            throw (IOException) new IOException( "The parent POM " + 
artifactParent
+                    + " could not be retrieved from any repository" 
).initCause( e );
+               }
+               
         try
         {
             resolutionErrorHandler.throwErrors( request, result );

Modified: 
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=770395&r1=770394&r2=770395&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
 Thu Apr 30 18:55:26 2009
@@ -1434,7 +1434,13 @@
        {
            PomTestWrapper pom = buildPom( 
"dependency-management-with-interpolation/sub" );
        }   
-    
+
+    public void testMaven()
+           throws Exception
+       {
+           PomTestWrapper pom = buildPom( "maven/sub" );
+           System.out.println(pom.getDomainModel().asString());
+       }       
     
     private void assertPathSuffixEquals( String expected, Object actual )
     {

Modified: 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java?rev=770395&r1=770394&r2=770395&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
 Thu Apr 30 18:55:26 2009
@@ -256,37 +256,6 @@
        build.addPlugin(p1);    
     }
     
-    public static void addPluginsToModel(Model target, Set<Plugin> plugins)
-    {
-       List<Plugin> mPlugins = target.getBuild().getPlugins();
-       
-       List<Plugin> lifecyclePlugins = new ArrayList<Plugin>();
-       
-       for( Plugin p : plugins )
-       {
-               if( !containsPlugin( p, mPlugins) )
-               {
-                       lifecyclePlugins.add(p);
-               }
-       }
-       
-       target.getBuild().getPlugins().addAll(lifecyclePlugins);
-
-    }
-    
-    private static boolean containsPlugin(Plugin plugin, List<Plugin> plugins)
-    {
-       for(Plugin p : plugins)
-       {
-               if( p.getGroupId().equals(plugin.getGroupId()) && 
p.getArtifactId().equals(plugin.getArtifactId()))
-               {
-                       return true;
-               }
-       }
-       
-       return false;
-    }
-    
     public static Model processManagementNodes(Model target) 
        throws IOException
     {

Modified: 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java?rev=770395&r1=770394&r2=770395&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java
 Thu Apr 30 18:55:26 2009
@@ -26,6 +26,7 @@
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.PluginExecution;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.codehaus.plexus.util.xml.Xpp3DomUtils;
 
 public class PluginProcessor
     extends BaseProcessor
@@ -175,7 +176,7 @@
      * @param target
      * @param isChild
      */
-    private static void copy2(Plugin source, Plugin target, boolean isChild)
+    public static void copy2(Plugin source, Plugin target, boolean isChild)
     {
         if(!isChild && source.getInherited() != null && 
!source.getInherited().equalsIgnoreCase( "true" ))
         {
@@ -223,11 +224,11 @@
             //TODO: Not copying
             if(target.getConfiguration() != null)
             {
-                target.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) 
source.getConfiguration(), (Xpp3Dom) target.getConfiguration() )); 
+                target.setConfiguration( new Xpp3Dom(Xpp3Dom.mergeXpp3Dom( 
(Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() ))); 
             }
             else
             {
-                target.setConfiguration( source.getConfiguration() );
+                target.setConfiguration( new Xpp3Dom((Xpp3Dom) 
source.getConfiguration() ) );
             }
                 
         }
@@ -283,11 +284,11 @@
             //TODO: Not copying
             if(target.getConfiguration() != null)
             {
-                target.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) 
source.getConfiguration(), (Xpp3Dom) target.getConfiguration() )); 
+                target.setConfiguration( new Xpp3Dom(Xpp3Dom.mergeXpp3Dom( 
(Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() ) )); 
             }
             else
             {
-                target.setConfiguration( source.getConfiguration() );
+                target.setConfiguration( new Xpp3Dom((Xpp3Dom) 
source.getConfiguration() ) );
             }
                 
         }
@@ -347,11 +348,11 @@
         {
             if(target.getConfiguration() != null)
             {
-                target.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) 
source.getConfiguration(), (Xpp3Dom) target.getConfiguration() ));     
+                target.setConfiguration( new Xpp3Dom(Xpp3Dom.mergeXpp3Dom( 
(Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() )));   
  
             }
             else
             {
-                target.setConfiguration( source.getConfiguration() );
+                target.setConfiguration( new Xpp3Dom( (Xpp3Dom) 
source.getConfiguration()) );
             }            
         }
       


Reply via email to