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/08/04 03:23:33 UTC

svn commit: r682237 - in /maven/shared/trunk/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: Sun Aug  3 18:23:33 2008
New Revision: 682237

URL: http://svn.apache.org/viewvc?rev=682237&view=rev
Log:
Introduce concept of sets. This is needed to handle unique attributes in plugin configurations.

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

Modified: maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelMarshaller.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelMarshaller.java?rev=682237&r1=682236&r2=682237&view=diff
==============================================================================
--- maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelMarshaller.java (original)
+++ maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelMarshaller.java Sun Aug  3 18:23:33 2008
@@ -125,6 +125,11 @@
                             tagName = tagName + "#collection";
                             uri.addTag( xmlStreamReader.getName().getLocalPart() + "#collection" );
                         }
+                        else if(collections.contains( tagName + "#set" ))
+                        {
+                            tagName = tagName + "#set";
+                            uri.addTag( xmlStreamReader.getName().getLocalPart() + "#set" );
+                        }
                         else
                         {
                             uri.addTag( xmlStreamReader.getName().getLocalPart() );
@@ -288,7 +293,8 @@
      */
     private static List<String> getTagNamesFromUri( int basePosition, String uri )
     {
-        return Arrays.asList( uri.substring( basePosition ).replaceAll( "#collection", "" ).split( "/" ) );
+        return Arrays.asList( uri.substring( basePosition ).replaceAll( "#collection", "" )
+                .replaceAll("#set", "").split( "/" ) );
     }
 
     /**

Modified: maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java?rev=682237&r1=682236&r2=682237&view=diff
==============================================================================
--- maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java (original)
+++ maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java Sun Aug  3 18:23:33 2008
@@ -177,7 +177,7 @@
      */
     public InterpolatorProperty asInterpolatorProperty( String baseUri )
     {
-        if ( uri.contains( "#collection" ) || value == null )
+        if ( uri.contains( "#collection" ) || uri.contains("#set") || value == null )
         {
             return null;
         }

Modified: maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java?rev=682237&r1=682236&r2=682237&view=diff
==============================================================================
--- maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java (original)
+++ maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java Sun Aug  3 18:23:33 2008
@@ -259,7 +259,7 @@
                 processedProperties.add( p );
                 position.add( 0, uri );
             }
-            else if ( !position.contains( uri ) || parentUri.contains( "#collection" ) )
+            else if ( !position.contains( uri ) || parentUri.contains( "#collection" ) || parentUri.contains( "#set" ) )
             {
                 int pst = position.indexOf( parentUri ) + 1;
                 processedProperties.add( pst, p );

Modified: maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java?rev=682237&r1=682236&r2=682237&view=diff
==============================================================================
--- maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java (original)
+++ maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java Sun Aug  3 18:23:33 2008
@@ -362,12 +362,14 @@
             String subUri = p.getUri().substring( baseUri.length(), modelPropertyLength );
 
             if ( !uris.contains( p.getUri() ) || ( subUri.contains( "#collection" ) &&
-                !subUri.endsWith( "#collection" ) ) &&
-                ( !combineChildrenUris.contains( p.getUri() ) || p.getUri().endsWith( "#property/combine.children" ) ) )
+                (!subUri.endsWith( "#collection" ) && !subUri.endsWith("#set")) &&
+                ( !combineChildrenUris.contains( p.getUri() ) || p.getUri().endsWith( "#property/combine.children" ) ) ) )
             {
+
                 processedProperties.add( findLastIndexOfParent( p, processedProperties ) + 1, p );
                 uris.add( p.getUri() );
             }
+            //if parentUri ends in set and uri is contained don't include it
         }
         return processedProperties;
     }

Modified: maven/shared/trunk/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java?rev=682237&r1=682236&r2=682237&view=diff
==============================================================================
--- maven/shared/trunk/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java (original)
+++ maven/shared/trunk/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java Sun Aug  3 18:23:33 2008
@@ -45,6 +45,88 @@
     }
 
     @Test
+    public void mergeModelContainersSetWithAppendChild() {
+        ModelProperty dup0 = new ModelProperty( "http://apache.org/maven/project", null );
+        ModelProperty dup1 = new ModelProperty( "http://apache.org/maven/project/build", null );
+        ModelProperty dup2 = new ModelProperty( "http://apache.org/maven/project/build/pluginManagement", null );
+        ModelProperty dup3 =
+            new ModelProperty( "http://apache.org/maven/project/build/pluginManagement/plugins#collection", null );
+        ModelProperty dup4 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin", null );
+        ModelProperty dup5 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/configuration#set", null );
+        ModelProperty dup6 = new ModelProperty( "http://apache.org/maven/project/build/plugins#collection/plugin/configuration#set/myList#property/combine.children", "append" );
+        ModelProperty dup6a = new ModelProperty( "http://apache.org/maven/project/build/plugins#collection/plugin/configuration#set/myList#property/combine.children/a", "x" );
+        ModelProperty dup7 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/version", "1.1" );
+        ModelProperty dup8 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin", null );
+        ModelProperty dup9 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/configuration#set", null );
+        ModelProperty dup10 = new ModelProperty( "http://apache.org/maven/project/build/plugins#collection/plugin/configuration#set/myList#property/combine.children", "append" );
+        ModelProperty dup10a = new ModelProperty( "http://apache.org/maven/project/build/plugins#collection/plugin/configuration#set/myList#property/combine.children/b", "y" );
+        ModelProperty dup11 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/version", "1.1" );
+
+        List<ModelProperty> modelProperties = Arrays.asList( dup0, dup1, dup2, dup3, dup4, dup5, dup6, dup6a, dup7, dup8,
+                                                             dup9, dup10, dup10a, dup11 );
+        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, 9 ) ) ),
+            factory.create( new ArrayList<ModelProperty>( modelProperties.subList( 9, 13 ) ) ) );
+        for(ModelProperty mp : mps) {
+            System.out.println(mp);
+        }
+    }
+
+
+    @Test
+    public void mergeModelContainersSet() {
+        ModelProperty dup0 = new ModelProperty( "http://apache.org/maven/project", null );
+        ModelProperty dup1 = new ModelProperty( "http://apache.org/maven/project/build", null );
+        ModelProperty dup2 = new ModelProperty( "http://apache.org/maven/project/build/pluginManagement", null );
+        ModelProperty dup3 =
+            new ModelProperty( "http://apache.org/maven/project/build/pluginManagement/plugins#collection", null );
+        ModelProperty dup4 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin", null );
+        ModelProperty dup5 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/configuration#set", null );
+        ModelProperty dup6 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/configuration#set/jdk",
+            "1.5" );
+        ModelProperty dup7 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/version", "1.1" );
+        ModelProperty dup8 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin", null );
+        ModelProperty dup9 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/configuration#set", null );
+        ModelProperty dup10 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/configuration#set/jdk",
+            "1.4" );
+        ModelProperty dup11 = new ModelProperty(
+            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/version", "1.1" );
+
+        List<ModelProperty> modelProperties = Arrays.asList( dup0, dup1, dup2, dup3, dup4, dup5, dup6, dup7, dup8,
+                                                             dup9, dup10, dup11 );
+        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, 8 ) ) ),
+            factory.create( new ArrayList<ModelProperty>( modelProperties.subList( 8, 11 ) ) ) );
+                for(ModelProperty mp : mps) {
+            System.out.println(mp);
+        }
+        assertFalse(mps.contains(dup10));
+    }
+
+    @Test
     public void mergeModelContainersCollectionsOfCollections()
         throws IOException
     {
@@ -53,28 +135,19 @@
             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/plugin/dependencies#collection",
-                                                                          null ), new ModelProperty(
-            "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/dependencies#collection/dependency",
-            null ), new ModelProperty(
+            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",
             "2.0" ),
-
                       new ModelProperty(
                           "http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin", null ),
                       new ModelProperty(