You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/11/29 02:41:35 UTC

svn commit: r721608 - in /maven/components/trunk: maven-project-builder/src/main/java/org/apache/maven/project/builder/ maven-project/src/main/java/org/apache/maven/project/builder/

Author: sisbell
Date: Fri Nov 28 17:41:35 2008
New Revision: 721608

URL: http://svn.apache.org/viewvc?rev=721608&view=rev
Log:
Fix for problems with modello plugin. Builder was not properly inheriting the goals.

Modified:
    maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PluginExecutionIdModelContainerFactory.java
    maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java

Modified: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PluginExecutionIdModelContainerFactory.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PluginExecutionIdModelContainerFactory.java?rev=721608&r1=721607&r2=721608&view=diff
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PluginExecutionIdModelContainerFactory.java (original)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PluginExecutionIdModelContainerFactory.java Fri Nov 28 17:41:35 2008
@@ -10,7 +10,8 @@
 public class PluginExecutionIdModelContainerFactory implements ModelContainerFactory {
 
     private static final Collection<String> uris = Collections.unmodifiableList(Arrays.asList(
-            ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri));
+            ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri,
+            ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.Execution.xUri));
 
     public Collection<String> getUris() {
         return uris;

Modified: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java?rev=721608&r1=721607&r2=721608&view=diff
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java (original)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java Fri Nov 28 17:41:35 2008
@@ -44,6 +44,7 @@
     public static final Set<String> URIS = Collections.unmodifiableSet(new HashSet<String>( Arrays.asList(  ProjectUri.Build.Extensions.xUri,
                                                                           ProjectUri.Build.PluginManagement.Plugins.xUri,
                                                                           ProjectUri.Build.PluginManagement.Plugins.Plugin.configuration,
+            //ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.xUri,
                                                                           ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.xUri,
                                                                           ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.Dependency.Exclusions.xUri,
 
@@ -149,6 +150,7 @@
                     transformPluginManagement( managementContainer.getProperties() ) );
 
                 //Remove duplicate executions tags
+
                 boolean hasExecutionsTag = false;
                 for ( ModelProperty mp : dependencyContainer.getProperties() )
                 {
@@ -176,9 +178,71 @@
                 managementContainer = new ArtifactModelContainerFactory().create( pList );
 
                 ModelContainerAction action = dependencyContainer.containerAction( managementContainer );
+               // System.out.println(action);
                 if ( action.equals( ModelContainerAction.JOIN ) || action.equals( ModelContainerAction.DELETE ) )
-                {
-                    source.join( dependencyContainer, managementContainer );
+                {    //System.out.println("A:");
+                    ModelDataSource dependencyDatasource = new DefaultModelDataSource();
+                    dependencyDatasource.init( dependencyContainer.getProperties(), Arrays.asList( new ArtifactModelContainerFactory(),
+                            new IdModelContainerFactory() ) );
+
+                    ModelDataSource managementDatasource = new DefaultModelDataSource();
+                    managementDatasource.init( managementContainer.getProperties(), Arrays.asList( new ArtifactModelContainerFactory(),
+                            new IdModelContainerFactory() ) );
+
+                    List<ModelContainer> managementExecutionContainers = managementDatasource.queryFor(ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri);
+                    List<ModelProperty> managementPropertiesWithoutExecutions = new ArrayList<ModelProperty>(managementContainer.getProperties());
+                    for(ModelContainer a : managementExecutionContainers)
+                    {
+                        managementPropertiesWithoutExecutions.removeAll(a.getProperties());
+                    }
+
+                    source.join( dependencyContainer, new ArtifactModelContainerFactory().create(managementPropertiesWithoutExecutions) );
+
+                    List<ModelContainer> dependencyExecutionContainers = dependencyDatasource.queryFor(ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri);
+                    List<ModelContainer> joinedExecutionContainers = new ArrayList<ModelContainer>();
+                    //System.out.println(managementExecutionContainers.size());
+                    for(ModelContainer a : managementExecutionContainers)
+                    {
+                        for(ModelContainer b : dependencyExecutionContainers)
+                        {
+                            if(b.containerAction(a).equals(ModelContainerAction.JOIN))
+                            {
+                                source.join(b, a);
+                                joinedExecutionContainers.add(a);
+                            }
+                        }
+                    }
+
+                    ModelProperty executionsProperty = null;
+                    for(ModelProperty a : dependencyContainer.getProperties())
+                    {
+                        if(a.getUri().equals(ProjectUri.Build.Plugins.Plugin.Executions.xUri)) {
+                            executionsProperty = a;
+                            break;
+                        }
+                    }
+
+                    if(executionsProperty == null)
+                    {
+                        for(ModelProperty a : managementPropertiesWithoutExecutions)
+                        {
+                            if(a.getUri().equals(ProjectUri.Build.Plugins.Plugin.Executions.xUri)) {
+                                executionsProperty = a;
+                                break;
+                            }
+                        }
+                    }
+
+                    if(executionsProperty != null)
+                    {
+                        managementExecutionContainers.removeAll(joinedExecutionContainers);
+                        Collections.reverse(managementExecutionContainers);
+                        for(ModelContainer a : managementExecutionContainers)
+                        {
+                            source.insertModelPropertiesAfter(executionsProperty,
+                                    ModelTransformerContext.sort(a.getProperties(), ProjectUri.Build.Plugins.Plugin.Executions.xUri));
+                        }
+                    }
                 }
             }
         }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java?rev=721608&r1=721607&r2=721608&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java Fri Nov 28 17:41:35 2008
@@ -40,6 +40,8 @@
 import java.io.Writer;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Set;
+import java.util.HashSet;
 
 /**
  * Provides a wrapper for the maven model.
@@ -283,8 +285,13 @@
     {
         if(modelProperties == null)
         {
+            Set<String> s = new HashSet<String>();
+            //TODO: Should add all collections from ProjectUri
+            s.addAll(PomTransformer.URIS);
+            s.add(ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.xUri);
+            s.add(ProjectUri.Build.Plugins.Plugin.Executions.xUri);
             modelProperties = ModelMarshaller.marshallXmlToModelProperties(
-                getInputStream(), ProjectUri.baseUri, PomTransformer.URIS );
+                getInputStream(), ProjectUri.baseUri, s );
         }
         return new ArrayList<ModelProperty>(modelProperties);
     }