You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2011/02/11 18:10:27 UTC

svn commit: r1069893 - /wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/resource/ResourceStreamRequestHandler.java

Author: mgrigorov
Date: Fri Feb 11 17:10:27 2011
New Revision: 1069893

URL: http://svn.apache.org/viewvc?rev=1069893&view=rev
Log:
WICKET-3423 org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler equals not Symmetric

Improve ResourceStreamRequestHandler's #equals() and #hashCode() methods.
Now they take into account the content disposition as well.


Modified:
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/resource/ResourceStreamRequestHandler.java

Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/resource/ResourceStreamRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/resource/ResourceStreamRequestHandler.java?rev=1069893&r1=1069892&r2=1069893&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/resource/ResourceStreamRequestHandler.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/resource/ResourceStreamRequestHandler.java Fri Feb 11 17:10:27 2011
@@ -19,8 +19,9 @@ package org.apache.wicket.request.handle
 import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.resource.ContentDisposition;
-import org.apache.wicket.request.resource.ResourceStreamResource;
 import org.apache.wicket.request.resource.IResource.Attributes;
+import org.apache.wicket.request.resource.ResourceStreamResource;
+import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -53,7 +54,7 @@ public class ResourceStreamRequestHandle
 	 */
 	public ResourceStreamRequestHandler(IResourceStream resourceStream)
 	{
-		this.resourceStream = resourceStream;
+		this(resourceStream, null);
 	}
 
 	/**
@@ -65,6 +66,8 @@ public class ResourceStreamRequestHandle
 	 */
 	public ResourceStreamRequestHandler(IResourceStream resourceStream, String fileName)
 	{
+		Args.notNull(resourceStream, "resourceStream");
+
 		this.resourceStream = resourceStream;
 		this.fileName = fileName;
 	}
@@ -75,21 +78,6 @@ public class ResourceStreamRequestHandle
 	}
 
 	/**
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	@Override
-	public boolean equals(Object obj)
-	{
-		if (obj instanceof ResourceStreamRequestHandler)
-		{
-			ResourceStreamRequestHandler that = (ResourceStreamRequestHandler)obj;
-			return resourceStream.equals(that.resourceStream) &&
-				((fileName == null) || fileName.equals(that.fileName));
-		}
-		return false;
-	}
-
-	/**
 	 * @return Optional filename, used to set the content disposition header. Only meaningful when
 	 *         using with web requests.
 	 */
@@ -109,18 +97,6 @@ public class ResourceStreamRequestHandle
 	}
 
 	/**
-	 * @see java.lang.Object#hashCode()
-	 */
-	@Override
-	public int hashCode()
-	{
-		int result = "ResourceStreamRequestTarget".hashCode();
-		result += resourceStream.hashCode();
-		result += (fileName != null) ? fileName.hashCode() : 0;
-		return 17 * result;
-	}
-
-	/**
 	 * Responds by sending the contents of the resource stream.
 	 * 
 	 * @see org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.IRequestCycle)
@@ -136,6 +112,42 @@ public class ResourceStreamRequestHandle
 		resource.respond(attributes);
 	}
 
+	@Override
+	public int hashCode()
+	{
+		final int prime = 31;
+		int result = 1;
+		result = prime * result +
+			((contentDisposition == null) ? 0 : contentDisposition.hashCode());
+		result = prime * result + ((fileName == null) ? 0 : fileName.hashCode());
+		result = prime * result + resourceStream.hashCode();
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj)
+	{
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		ResourceStreamRequestHandler other = (ResourceStreamRequestHandler)obj;
+		if (contentDisposition != other.contentDisposition)
+			return false;
+		if (fileName == null)
+		{
+			if (other.fileName != null)
+				return false;
+		}
+		else if (!fileName.equals(other.fileName))
+			return false;
+		if (!resourceStream.equals(other.resourceStream))
+			return false;
+		return true;
+	}
+
 	/**
 	 * @param fileName
 	 *            Optional filename, used to set the content disposition header. Only meaningful