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;
+	}
 }