You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2010/01/30 13:45:32 UTC
svn commit: r904771 -
/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/PageParameters.java
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;
+ }
}