Author: jdonnerstag
Date: Sat Jan 30 12:45:32 2010
New Revision: 904771
URL: http://svn.apache.org/viewvc?rev=904771&view=rev
Log:
fixed: Page Parameters needs to implement equals
Issue: WICKET-2698
Modified:
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/PageParameters.java
Modified:
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/PageParameters.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/PageParameters.java?rev=904771&r1=904770&r2=904771&view=diff
==============================================================================
---
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/PageParameters.java
(original)
+++
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/PageParameters.java
Sat Jan 30 12:45:32 2010
@@ -16,6 +16,7 @@
*/
package org.apache.wicket;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@@ -200,4 +201,73 @@
}
return params;
}
+
+ /**
+ *
+ * @see java.util.AbstractMap#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(Object o)
+ {
+ if (o == null)
+ {
+ return false;
+ }
+
+ if (o.getClass() != this.getClass())
+ {
+ return false;
+ }
+
+ PageParameters other = (PageParameters)o;
+ if (size() != other.size())
+ {
+ return false;
+ }
+
+ for (String key : keySet())
+ {
+ Object first = get(key);
+ Object second = other.get(key);
+
+ if (first != second)
+ {
+ if (first != null && second != null)
+ {
+ Class<?> firstClazz = first.getClass();
+ Class<?> secondClazz =
second.getClass();
+ Object[] firstArray;
+ Object[] secondArray;
+
+ // If both of the objects are arrays or
atleast one of the them is an array, we
+ // can use the Arrays.equals method
+ if ((firstClazz.isArray() &&
secondClazz.isArray()) ||
+ (firstClazz.isArray() ||
secondClazz.isArray()))
+ {
+ firstArray =
!first.getClass().isArray() ? new Object[] { first }
+ : (Object[])first;
+ secondArray =
!second.getClass().isArray() ? new Object[] { second }
+ : (Object[])second;
+ if (!Arrays.equals(firstArray,
secondArray))
+ {
+ return false;
+ }
+ }
+ else
+ {
+ if (!first.equals(second))
+ {
+ return false;
+ }
+ }
+ }
+ else
+ // one of first or second is null
+ {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
}