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/27 07:54:15 UTC

svn commit: r689361 - /maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelMarshaller.java

Author: sisbell
Date: Tue Aug 26 22:54:14 2008
New Revision: 689361

URL: http://svn.apache.org/viewvc?rev=689361&view=rev
Log:
Support for multiple element attributes.

Modified:
    maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelMarshaller.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=689361&r1=689360&r2=689361&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 Tue Aug 26 22:54:14 2008
@@ -256,33 +256,47 @@
             }
             String tag = tagNames.get( tagNames.size() - 1 );
 
-            ModelProperty attribute = null;
-            int peekIndex = modelProperties.indexOf( mp ) + 1;
-            if ( peekIndex <= modelProperties.size() - 1 )
+            List<ModelProperty> attributes = new ArrayList<ModelProperty>();
+            for(int peekIndex = modelProperties.indexOf( mp ) + 1; peekIndex < modelProperties.size(); peekIndex++)
             {
-                ModelProperty peekProperty = modelProperties.get( peekIndex );
-                if ( peekProperty.getUri().contains( "#property" ) )
+                //int peekIndex = modelProperties.indexOf( mp ) + i;
+                if ( peekIndex <= modelProperties.size() - 1 )
                 {
-                    attribute = peekProperty;
+                    ModelProperty peekProperty = modelProperties.get( peekIndex );
+                    if ( peekProperty.getUri().contains( "#property" ) )
+                    {
+                        attributes.add(peekProperty);
+                    }
+                    else
+                    {
+                        break;
+                    }
+                }
+                else
+                {
+                    break;
                 }
             }
 
-            sb.append( toStartTag( tag, attribute ) );
+            sb.append( toStartTag( tag, attributes ) );
             if ( mp.getResolvedValue() != null )
             {
                 sb.append( mp.getResolvedValue() );
                 sb.append( toEndTag( tag ) );
                 n = 2;
             }
-            else if(attribute != null)
+            else if(!attributes.isEmpty())
             {
-                int pi = modelProperties.indexOf( mp ) + 2;
+                int pi = modelProperties.indexOf( mp ) + attributes.size() + 1;
                 if ( pi <= modelProperties.size() - 1 )
                 {
                     ModelProperty peekProperty = modelProperties.get( pi );
                     if ( !peekProperty.getUri().startsWith(mp.getUri()) )
                     {
-                        sb.append( mp.getResolvedValue() );
+                        if( mp.getResolvedValue() != null )
+                        {
+                            sb.append( mp.getResolvedValue() );
+                        }
                         sb.append( toEndTag( tag ) );
                         n = 2;
                     }
@@ -319,18 +333,21 @@
      * Returns the XML formatted start tag for the specified value and the specified attribute.
      *
      * @param value     the value to use for the start tag
-     * @param attribute the attribute to use in constructing of start tag
+     * @param attributes the attribute to use in constructing of start tag
      * @return the XML formatted start tag for the specified value and the specified attribute
      */
-    private static String toStartTag( String value, ModelProperty attribute )
+    private static String toStartTag( String value, List<ModelProperty> attributes )
     {
         StringBuffer sb = new StringBuffer(); //TODO: Support more than one attribute
         sb.append( "\r\n<" ).append( value );
-        if ( attribute != null )
+        if ( attributes != null )
         {
-            sb.append( " " ).append(
-                attribute.getUri().substring( attribute.getUri().indexOf( "#property/" ) + 10 ) ).append( "=\"" )
-                .append( attribute.getValue() ).append( "\" " );
+            for(ModelProperty attribute : attributes)
+            {
+                sb.append( " " ).append(
+                    attribute.getUri().substring( attribute.getUri().indexOf( "#property/" ) + 10 ) ).append( "=\"" )
+                    .append( attribute.getValue() ).append( "\" " );
+            }
         }
         sb.append( ">" );
         return sb.toString();