import java.io.InputStream;
import java.io.Serializable;
+import java.util.Arrays;
+import com.vaadin.shared.util.SharedUtil;
import com.vaadin.util.FileTypeResolver;
/**
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 {
@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() });
}
}
--- /dev/null
+/*
+ * 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();
+ }
+
+}