aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorDenis Anisimov <denis@vaadin.com>2014-08-16 16:22:12 +0300
committerVaadin Code Review <review@vaadin.com>2014-08-20 11:06:46 +0000
commitce92dece273720d9e43d489d72b91be596c9833a (patch)
tree0e1f7a5082c32cc15111f45bf789a880a21d618a /server
parent1dc8c5c28c5d8990f15a69ea466cdf5178305a78 (diff)
downloadvaadin-framework-ce92dece273720d9e43d489d72b91be596c9833a.tar.gz
vaadin-framework-ce92dece273720d9e43d489d72b91be596c9833a.zip
StreamResource methods equals() and hashCode() are corrected (#14027).
Change-Id: I68a629a29cc0d6efd2dd7788875a1dc4182ee6bf
Diffstat (limited to 'server')
-rw-r--r--server/src/com/vaadin/server/StreamResource.java15
-rw-r--r--server/tests/src/com/vaadin/tests/server/TestStreamResource.java55
2 files changed, 62 insertions, 8 deletions
diff --git a/server/src/com/vaadin/server/StreamResource.java b/server/src/com/vaadin/server/StreamResource.java
index 248d62338b..070cfb5138 100644
--- a/server/src/com/vaadin/server/StreamResource.java
+++ b/server/src/com/vaadin/server/StreamResource.java
@@ -18,7 +18,9 @@ package com.vaadin.server;
import java.io.InputStream;
import java.io.Serializable;
+import java.util.Arrays;
+import com.vaadin.shared.util.SharedUtil;
import com.vaadin.util.FileTypeResolver;
/**
@@ -219,10 +221,9 @@ public class StreamResource implements ConnectorResource {
return true;
} else if (obj instanceof StreamResource) {
StreamResource that = (StreamResource) obj;
- return getStreamSource().equals(that.getStreamSource())
- && getMIMEType().equals(that.getMIMEType())
- && String.valueOf(getFilename()).equals(
- String.valueOf(that.getFilename()))
+ return SharedUtil.equals(getStreamSource(), that.getStreamSource())
+ && SharedUtil.equals(MIMEType, that.MIMEType)
+ && SharedUtil.equals(getFilename(), that.getFilename())
&& getBufferSize() == that.getBufferSize()
&& getCacheTime() == that.getCacheTime();
} else {
@@ -232,10 +233,8 @@ public class StreamResource implements ConnectorResource {
@Override
public int hashCode() {
- return (int) (getStreamSource().hashCode() + 37
- * getMIMEType().hashCode() + 37 ^ 2
- * String.valueOf(getFilename()).hashCode() + 37 ^ 3
- * getBufferSize() + 37 ^ 4 * getCacheTime());
+ return Arrays.hashCode(new Object[] { getStreamSource(), MIMEType,
+ getFilename(), getBufferSize(), getCacheTime() });
}
}
diff --git a/server/tests/src/com/vaadin/tests/server/TestStreamResource.java b/server/tests/src/com/vaadin/tests/server/TestStreamResource.java
new file mode 100644
index 0000000000..0fdcc9e39c
--- /dev/null
+++ b/server/tests/src/com/vaadin/tests/server/TestStreamResource.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.server;
+
+import org.easymock.EasyMock;
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.vaadin.server.StreamResource;
+import com.vaadin.server.StreamResource.StreamSource;
+
+/**
+ *
+ * @author Vaadin Ltd
+ */
+public class TestStreamResource {
+
+ @Test
+ public void testEqualsWithNullFields() {
+ StreamResource resource1 = new StreamResource(null, null);
+ StreamResource resource2 = new StreamResource(null, null);
+
+ Assert.assertEquals(resource1, resource2);
+ }
+
+ @Test
+ public void testNotEqualsWithNullFields() {
+ StreamResource resource1 = new StreamResource(null, null);
+ StreamResource resource2 = new StreamResource(
+ EasyMock.createMock(StreamSource.class), "");
+
+ Assert.assertNotEquals(resource1, resource2);
+ }
+
+ @Test
+ public void testHashCodeForNullFields() {
+ StreamResource resource = new StreamResource(null, null);
+ // No NPE
+ resource.hashCode();
+ }
+
+}