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/06 00:42:33 UTC

svn commit: r711743 - in /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder: IdModelContainerFactory.java PluginExecutionIdModelContainerFactory.java PomClassicTransformer.java

Author: sisbell
Date: Wed Nov  5 15:42:32 2008
New Revision: 711743

URL: http://svn.apache.org/viewvc?rev=711743&view=rev
Log:
Fix for IT 2695. Two plugins with different executions that had same id were merging. Created a different container for execution ids, so that they can be queried per plugin, rather than globally.

Added:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PluginExecutionIdModelContainerFactory.java
Modified:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/IdModelContainerFactory.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/IdModelContainerFactory.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/IdModelContainerFactory.java?rev=711743&r1=711742&r2=711743&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/IdModelContainerFactory.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/IdModelContainerFactory.java Wed Nov  5 15:42:32 2008
@@ -36,8 +36,7 @@
 
     private static final Collection<String> uris = Collections.unmodifiableList( Arrays.asList(
         ProjectUri.PluginRepositories.PluginRepository.xUri, ProjectUri.Repositories.Repository.xUri,
-        ProjectUri.Reporting.Plugins.Plugin.ReportSets.ReportSet.xUri, ProjectUri.Profiles.Profile.xUri,
-        ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri ) );
+        ProjectUri.Reporting.Plugins.Plugin.ReportSets.ReportSet.xUri, ProjectUri.Profiles.Profile.xUri) );
 
     public Collection<String> getUris()
     {

Added: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PluginExecutionIdModelContainerFactory.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PluginExecutionIdModelContainerFactory.java?rev=711743&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PluginExecutionIdModelContainerFactory.java (added)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PluginExecutionIdModelContainerFactory.java Wed Nov  5 15:42:32 2008
@@ -0,0 +1,84 @@
+package org.apache.maven.project.builder;
+
+import org.apache.maven.shared.model.ModelContainerFactory;
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.ModelProperty;
+import org.apache.maven.shared.model.ModelContainerAction;
+
+import java.util.*;
+
+public class PluginExecutionIdModelContainerFactory implements ModelContainerFactory {
+
+    private static final Collection<String> uris = Collections.unmodifiableList(Arrays.asList(
+            ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri));
+
+    public Collection<String> getUris() {
+        return uris;
+    }
+
+    public ModelContainer create(List<ModelProperty> modelProperties) {
+        if ( modelProperties == null || modelProperties.size() == 0 )
+        {
+            throw new IllegalArgumentException( "modelProperties: null or empty" );
+        }
+        return new PluginExecutionIdModelContainer( modelProperties );
+    }
+
+    private static class PluginExecutionIdModelContainer
+        implements ModelContainer
+    {
+
+        private String id;
+
+        private List<ModelProperty> properties;
+
+        private PluginExecutionIdModelContainer( List<ModelProperty> properties )
+        {
+            this.properties = new ArrayList<ModelProperty>( properties );
+            this.properties = Collections.unmodifiableList( this.properties );
+
+            for ( ModelProperty mp : properties )
+            {
+                if ( mp.getUri().endsWith( "/id" ) )
+                {
+                    this.id = mp.getResolvedValue();
+                }
+            }
+        }
+
+        public ModelContainerAction containerAction( ModelContainer modelContainer )
+        {
+            if ( modelContainer == null )
+            {
+                throw new IllegalArgumentException( "modelContainer: null" );
+            }
+
+            if ( !( modelContainer instanceof PluginExecutionIdModelContainer ) )
+            {
+                throw new IllegalArgumentException( "modelContainer: wrong type" );
+            }
+
+            PluginExecutionIdModelContainer c = (PluginExecutionIdModelContainer) modelContainer;
+            if ( c.id == null || id == null )
+            {
+                return ModelContainerAction.NOP;
+            }
+            return ( c.id.equals( id ) ) ? ModelContainerAction.JOIN : ModelContainerAction.NOP;
+        }
+
+        public ModelContainer createNewInstance( List<ModelProperty> modelProperties )
+        {
+            return new PluginExecutionIdModelContainer( modelProperties );
+        }
+
+        public List<ModelProperty> getProperties()
+        {
+            return properties;
+        }
+
+        public String toString()
+        {
+            return "ID = " + id;
+        }
+    }
+}

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java?rev=711743&r1=711742&r2=711743&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java Wed Nov  5 15:42:32 2008
@@ -46,14 +46,12 @@
                                                                           ProjectUri.Build.PluginManagement.Plugins.Plugin.configuration,
                                                                           ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.xUri,
                                                                           ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.Dependency.Exclusions.xUri,
-                                                                          ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.xUri,
 
                                                                           ProjectUri.Build.Plugins.xUri,
                                                                           ProjectUri.Build.Plugins.Plugin.configuration,
                                                                           ProjectUri.Reporting.Plugins.xUri,
                                                                           ProjectUri.Reporting.Plugins.Plugin.configuration,
                                                                           ProjectUri.Build.Plugins.Plugin.Dependencies.xUri,
-                                                                          ProjectUri.Build.Plugins.Plugin.Executions.xUri,
                                                                           ProjectUri.Build.Resources.xUri,
                                                                           ProjectUri.Build.Resources.Resource.includes,
                                                                           ProjectUri.Build.Resources.Resource.excludes,
@@ -202,7 +200,7 @@
         {
             ModelDataSource executionSource = new DefaultModelDataSource();
             executionSource.init( pluginContainer.getProperties(),
-                                  Arrays.asList( new ArtifactModelContainerFactory(), new IdModelContainerFactory() ) );
+                                  Arrays.asList( new ArtifactModelContainerFactory(), new PluginExecutionIdModelContainerFactory() ) );
             List<ModelContainer> executionContainers =
                 executionSource.queryFor( ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri );
             if ( executionContainers.size() < 2 )
@@ -318,7 +316,7 @@
             {
                 List<ModelProperty> removeProperties = new ArrayList<ModelProperty>();
                 ModelDataSource source = new DefaultModelDataSource();
-                source.init( tmp, Arrays.asList( new ArtifactModelContainerFactory(), new IdModelContainerFactory() ) );
+                source.init( tmp, Arrays.asList( new ArtifactModelContainerFactory(), new PluginExecutionIdModelContainerFactory() ) );
                 List<ModelContainer> containers =
                     source.queryFor( ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri );
                 for ( ModelContainer container : containers )