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)))); }