You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2011/01/16 22:49:16 UTC

svn commit: r1059688 - in /mina/vysper/trunk/nbxml/src: main/java/org/apache/vysper/xml/fragment/AbstractXMLElementBuilder.java test/java/org/apache/vysper/xml/fragment/XMLElementTestCase.java

Author: ngn
Date: Sun Jan 16 21:49:15 2011
New Revision: 1059688

URL: http://svn.apache.org/viewvc?rev=1059688&view=rev
Log:
Adding an attribute multiple times must not generate multiple namespaces

Modified:
    mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/AbstractXMLElementBuilder.java
    mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/fragment/XMLElementTestCase.java

Modified: mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/AbstractXMLElementBuilder.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/AbstractXMLElementBuilder.java?rev=1059688&r1=1059687&r2=1059688&view=diff
==============================================================================
--- mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/AbstractXMLElementBuilder.java (original)
+++ mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/AbstractXMLElementBuilder.java Sun Jan 16 21:49:15 2011
@@ -134,6 +134,15 @@ public abstract class AbstractXMLElement
 
     public B addAttribute(Attribute attribute) {
         checkReset();
+        // check if attribute already exists
+        for(Attribute existing : currentElement.attributes) {
+            if(existing.getName().equals(attribute.getName())
+                    && existing.getNamespaceUri().equals(attribute.getNamespaceUri())) {
+                currentElement.attributes.remove(existing);
+                break;
+            }
+        }
+        
         currentElement.attributes.add(attribute);
         return (B) this;
     }

Modified: mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/fragment/XMLElementTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/fragment/XMLElementTestCase.java?rev=1059688&r1=1059687&r2=1059688&view=diff
==============================================================================
--- mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/fragment/XMLElementTestCase.java (original)
+++ mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/fragment/XMLElementTestCase.java Sun Jan 16 21:49:15 2011
@@ -211,6 +211,28 @@ public class XMLElementTestCase extends 
         assertNull(xmlElement.getAttributeValue("lang"));
         assertEquals("cn", xmlElement.getAttributeValue(Namespaces.XML, "lang"));
     }
+
+    public void testAddAttributeMultiple() {
+        XMLElement xmlElement = new XMLElementBuilder("test")
+            .addAttribute("foo", "bar")
+            .addAttribute("foo", "fez")
+            .build();
+
+        assertEquals(1, xmlElement.getAttributes().size());
+        assertEquals("fez", xmlElement.getAttribute("foo").getValue());
+    }
+
+    public void testAddAttributeMultipleDifferentNamespaces() {
+        XMLElement xmlElement = new XMLElementBuilder("test")
+        .addAttribute("foo", "bar")
+        .addAttribute("http://example.com", "foo", "fez")
+        .build();
+        
+        assertEquals(2, xmlElement.getAttributes().size());
+        assertEquals("bar", xmlElement.getAttribute("foo").getValue());
+        assertEquals("fez", xmlElement.getAttribute("http://example.com", "foo").getValue());
+    }
+
     
     public void testEqualsAttributeOrder() {
         XMLElement elm1 = new XMLElementBuilder("test")