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")