Browse Source

StreamResource methods equals() and hashCode() are corrected (#14027).

Change-Id: I68a629a29cc0d6efd2dd7788875a1dc4182ee6bf
tags/7.3.1
Denis Anisimov 9 years ago
parent
commit
7b1cd46d2e

+ 7
- 8
server/src/com/vaadin/server/StreamResource.java View File

@@ -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() });
}

}

+ 55
- 0
server/tests/src/com/vaadin/tests/server/TestStreamResource.java View File

@@ -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();
}

}

Loading…
Cancel
Save