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/07/15 00:09:46 UTC

svn commit: r676752 - in /maven/sandbox/trunk/shared/maven-shared-model/src: main/java/org/apache/maven/shared/model/ main/java/org/apache/maven/shared/model/impl/ test/java/org/apache/maven/shared/model/impl/

Author: sisbell
Date: Mon Jul 14 15:09:45 2008
New Revision: 676752

URL: http://svn.apache.org/viewvc?rev=676752&view=rev
Log:
Fix for mergeing collections of collections.

Modified:
    maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
    maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java
    maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java

Modified: maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java?rev=676752&r1=676751&r2=676752&view=diff
==============================================================================
--- maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java (original)
+++ maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java Mon Jul 14 15:09:45 2008
@@ -28,15 +28,6 @@
         }
     }
 
-    private static boolean aContainsAnyOfB(List<ModelProperty> a, List<ModelProperty> b) {
-        for (ModelProperty mp : b) {
-            if (a.contains(mp)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
     /**
      * Default constructor
      *

Modified: maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java?rev=676752&r1=676751&r2=676752&view=diff
==============================================================================
--- maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java (original)
+++ maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java Mon Jul 14 15:09:45 2008
@@ -233,7 +233,15 @@
 
     private static int findLastIndexOfParent(ModelProperty modelProperty, List<ModelProperty> modelProperties) {
         for (int i = modelProperties.size() - 1; i >= 0; i--) {
-            if (modelProperties.get(i).isParentOf(modelProperty)) {
+            if(modelProperties.get(i).getUri().equals(modelProperty.getUri())) {               
+                for(int j = i; i <= modelProperties.size(); j++)    {
+                    if(!modelProperties.get(j).getUri().startsWith(modelProperty.getUri())) {
+                        return j -1;
+                    }
+                }
+                return modelProperties.size() - 1;    
+            }
+            else if (modelProperties.get(i).isParentOf(modelProperty)) {
                 return i;
             }
         }
@@ -248,19 +256,27 @@
      * @return list of merged properties
      */
     protected static List<ModelProperty> mergeModelContainers(ModelContainer a, ModelContainer b) {
+        System.out.println("Merge");
         List<ModelProperty> m = new ArrayList<ModelProperty>();
         m.addAll(a.getProperties());
         m.addAll(b.getProperties());
 
         LinkedList<ModelProperty> processedProperties = new LinkedList<ModelProperty>();
         List<String> uris = new ArrayList<String>();
-
+        String baseUri = a.getProperties().get(0).getUri();
         for (ModelProperty p : m) {
-            if (!uris.contains(p.getUri())) {
+           // System.out.println("A:" + p.getUri());
+          //  System.out.println("B:" + baseUri);
+            String subUri = p.getUri().substring(baseUri.length(), p.getUri().length());
+            if (!uris.contains(p.getUri())
+            || (subUri.contains("#collection") && !subUri.endsWith("#collection"))) {
                 processedProperties.add(findLastIndexOfParent(p, processedProperties) + 1, p);
                 uris.add(p.getUri());
             }
         }
+        for(ModelProperty mp : processedProperties) {
+            System.out.println(mp);
+        }
         return processedProperties;
     }
 

Modified: maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java?rev=676752&r1=676751&r2=676752&view=diff
==============================================================================
--- maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java (original)
+++ maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java Mon Jul 14 15:09:45 2008
@@ -19,7 +19,7 @@
     }
 
     @Test
-    public void mergeModelContainers() throws IOException {
+    public void mergeModelContainersCollectionsOfCollections() throws IOException {
         List<ModelProperty> modelProperties = Arrays.asList(
                 new ModelProperty("http://apache.org/maven/project", null),
                 new ModelProperty("http://apache.org/maven/project/build", null),
@@ -31,11 +31,53 @@
                 new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/artifactId", "maven-compiler-plugin"),
                 new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/groupId", "org.apache.maven.plugins"),
 
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/dependencies#collection", null),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/dependencies#collection/dependency", null),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/dependencies#collection/dependency/groupId", "gid1"),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/dependencies#collection/dependency/artifactId", "art1"),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/dependencies#collection/dependency/version", "2.0"),
+
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin", null),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/version", "2.0.2"),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/artifactId", "maven-compiler-plugin"),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/groupId", "org.apache.maven.plugins"),
+
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/dependencies#collection", null),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/dependencies#collection/dependency", null),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/dependencies#collection/dependency/groupId", "gid1"),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/dependencies#collection/dependency/artifactId", "art1"),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/dependencies#collection/dependency/version", "1.0")
+        );
+
+
+        DummyModelContainerFactory factory = new DummyModelContainerFactory();
+
+        DefaultModelDataSource datasource = new DefaultModelDataSource();
+        datasource.init(modelProperties, factories);
+
+        List<ModelProperty> mps = datasource.mergeModelContainers(
+                factory.create(new ArrayList<ModelProperty>(modelProperties.subList(4, 13))),
+                factory.create(new ArrayList<ModelProperty>(modelProperties.subList(13, 21))));
+        assertTrue(mps.containsAll(new ArrayList<ModelProperty>(modelProperties.subList(4, 8))));
+    }
+
+    @Test
+    public void mergeModelContainers() throws IOException {
+        List<ModelProperty> modelProperties = Arrays.asList(
+                new ModelProperty("http://apache.org/maven/project", null),
+                new ModelProperty("http://apache.org/maven/project/build", null),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement", null),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection", null),
+
                 new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin", null),
                 new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/version", "2.0.2"),
                 new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/artifactId", "maven-compiler-plugin"),
                 new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/groupId", "org.apache.maven.plugins"),
-                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/a", "a")
+
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin", null),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/version", "2.0.2"),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/artifactId", "maven-compiler-plugin"),
+                new ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/groupId", "org.apache.maven.plugins")
         );
 
 
@@ -46,7 +88,7 @@
 
         List<ModelProperty> mps = datasource.mergeModelContainers(
                 factory.create(new ArrayList<ModelProperty>(modelProperties.subList(4, 8))),
-                factory.create(new ArrayList<ModelProperty>(modelProperties.subList(8, 13))));
+                factory.create(new ArrayList<ModelProperty>(modelProperties.subList(8, 12))));
         assertTrue(mps.containsAll(new ArrayList<ModelProperty>(modelProperties.subList(4, 8))));
     }