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/08 22:37:14 UTC
svn commit: r1056807 - in /mina/vysper/trunk/nbxml/src:
main/java/org/apache/vysper/xml/fragment/XMLElement.java
test/java/org/apache/vysper/xml/fragment/XMLElementTestCase.java
Author: ngn
Date: Sat Jan 8 21:37:13 2011
New Revision: 1056807
URL: http://svn.apache.org/viewvc?rev=1056807&view=rev
Log:
Fixed bug in XMLElement.equals which failed on different attribute order
Modified:
mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/XMLElement.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/XMLElement.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/XMLElement.java?rev=1056807&r1=1056806&r2=1056807&view=diff
==============================================================================
--- mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/XMLElement.java (original)
+++ mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/XMLElement.java Sat Jan 8 21:37:13 2011
@@ -297,8 +297,26 @@ public class XMLElement implements XMLFr
final XMLElement that = (XMLElement) o;
- if (attributes != null ? !attributes.equals(that.attributes) : that.attributes != null)
+ // attributes are allowed to be in any order
+ if(attributes != null && that.attributes != null) {
+ if(attributes.size() != that.attributes.size()) return false;
+ for(Attribute attribute : attributes) {
+ boolean found = false;
+ for(Attribute thatAttribute : that.attributes) {
+ if(thatAttribute.equals(attribute)) {
+ found = true;
+ break;
+ }
+ }
+ if(!found) return false;
+ }
+
+ } else if(attributes == null && that.attributes == null) {
+ // ok
+ } else {
return false;
+ }
+
if (innerFragments != null ? !innerFragments.equals(that.innerFragments) : that.innerFragments != null) {
return false;
}
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=1056807&r1=1056806&r2=1056807&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 Sat Jan 8 21:37:13 2011
@@ -25,6 +25,8 @@ import java.util.Map;
import junit.framework.TestCase;
+import org.junit.Assert;
+
/**
*/
public class XMLElementTestCase extends TestCase {
@@ -208,7 +210,59 @@ public class XMLElementTestCase extends
assertNull(xmlElement.getAttributeValue("http://example.com", "foo"));
assertNull(xmlElement.getAttributeValue("lang"));
assertEquals("cn", xmlElement.getAttributeValue(Namespaces.XML, "lang"));
-
+ }
+
+ public void testEqualsAttributeOrder() {
+ XMLElement elm1 = new XMLElementBuilder("test")
+ .addAttribute("attr1", "foo")
+ .addAttribute("attr2", "foo")
+ .build();
+
+ XMLElement elm2 = new XMLElementBuilder("test")
+ .addAttribute("attr2", "foo")
+ .addAttribute("attr1", "foo")
+ .build();
+
+ Assert.assertTrue("Equals must be true", elm1.equals(elm2));
+ }
+
+ public void testEqualsAttributeValue() {
+ XMLElement elm1 = new XMLElementBuilder("test")
+ .addAttribute("attr1", "foo")
+ .addAttribute("attr2", "bar")
+ .build();
+
+ XMLElement elm2 = new XMLElementBuilder("test")
+ .addAttribute("attr1", "foo")
+ .addAttribute("attr2", "foo")
+ .build();
+
+ Assert.assertFalse("Equals must be false", elm1.equals(elm2));
+ }
+
+ public void testEqualsAttributeMissing() {
+ XMLElement elm1 = new XMLElementBuilder("test")
+ .addAttribute("attr1", "foo")
+ .addAttribute("attr2", "bar")
+ .build();
+
+ XMLElement elm2 = new XMLElementBuilder("test")
+ .addAttribute("attr1", "foo")
+ .build();
+
+ Assert.assertFalse("Equals must be false", elm1.equals(elm2));
+ }
+
+ public void testEqualsNoAttributes() {
+ XMLElement elm1 = new XMLElementBuilder("test")
+ .addAttribute("attr1", "foo")
+ .addAttribute("attr2", "bar")
+ .build();
+
+ XMLElement elm2 = new XMLElementBuilder("test")
+ .build();
+
+ Assert.assertFalse("Equals must be false", elm1.equals(elm2));
}
}