Change-Id: I68a629a29cc0d6efd2dd7788875a1dc4182ee6bftags/7.3.1
@@ -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() }); | |||
} | |||
} |
@@ -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(); | |||
} | |||
} |