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/09/01 08:19:14 UTC

svn commit: r690856 - /maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java

Author: sisbell
Date: Sun Aug 31 23:19:13 2008
New Revision: 690856

URL: http://svn.apache.org/viewvc?rev=690856&view=rev
Log:
Rule: Do not join plugin executions without ids

Modified:
    maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java

Modified: maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java?rev=690856&r1=690855&r2=690856&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java (original)
+++ maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java Sun Aug 31 23:19:13 2008
@@ -453,7 +453,48 @@
             }
                        */
         }
-       return modelProperties;
+
+       //Rule: Do not join plugin executions without ids
+       List<ModelProperty> removeProperties = new ArrayList<ModelProperty>();
+       ModelDataSource source = new DefaultModelDataSource();
+       source.init( modelProperties, Arrays.asList( new ArtifactModelContainerFactory(), new IdModelContainerFactory() ) );
+       List<ModelContainer> containers =  source.queryFor( ProjectUri.Build.Plugins.Plugin.xUri );
+        for (ModelContainer pluginContainer : containers) {
+            ModelDataSource executionSource = new DefaultModelDataSource();
+            executionSource.init( pluginContainer.getProperties(), Arrays.asList( new ArtifactModelContainerFactory(),
+                    new IdModelContainerFactory() ) );
+            List<ModelContainer> executionContainers =
+                    source.queryFor( ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri  );
+            if(executionContainers.size() < 2)
+            {
+                break;
+            }
+            boolean hasAtLeastOneWithoutId = true;
+            for (ModelContainer executionContainer : executionContainers) {
+                if(hasAtLeastOneWithoutId)
+                {
+                    hasAtLeastOneWithoutId = hasExecutionId(executionContainer);
+                }
+                if(!hasAtLeastOneWithoutId && !hasExecutionId(executionContainer) && executionContainers.indexOf(executionContainer) > 0)
+                {
+                    removeProperties.addAll(executionContainer.getProperties());
+                }
+            }           
+        }
+        modelProperties.removeAll(removeProperties);
+        return modelProperties;
+    }
+
+    private static boolean hasExecutionId(ModelContainer executionContainer)
+    {
+        for(ModelProperty mp : executionContainer.getProperties() )
+        {
+            if(mp.getUri().equals(ProjectUri.Build.Plugins.Plugin.Executions.Execution.id))
+            {
+                return true;
+            }
+        }
+        return false;
     }
 
     /**