From 1f1f4f0a49ca017a48bc9983914566034edb0262 Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Tue, 20 May 2014 21:12:15 -0700 Subject: [PATCH] Override hashCode when equals overridden Java 8 added a warning for this: https://bugs.openjdk.java.net/browse/JDK-6563143 --- .../compute/predicates/ImagePredicates.java | 4 ++++ .../org/jclouds/json/GsonExperimentsTest.java | 6 ++++++ ...ructorAndReflectiveTypeAdapterFactoryTest.java | 15 +++++++++++++++ .../internal/OptionalTypeAdapterFactoryTest.java | 5 +++++ 4 files changed, 30 insertions(+) diff --git a/compute/src/main/java/org/jclouds/compute/predicates/ImagePredicates.java b/compute/src/main/java/org/jclouds/compute/predicates/ImagePredicates.java index fea299c8f8..e73c7b4f0e 100644 --- a/compute/src/main/java/org/jclouds/compute/predicates/ImagePredicates.java +++ b/compute/src/main/java/org/jclouds/compute/predicates/ImagePredicates.java @@ -52,6 +52,10 @@ public class ImagePredicates { return obj instanceof Is64BitPredicate; } + @Override + public int hashCode() { + return 0; + } } /** diff --git a/core/src/test/java/org/jclouds/json/GsonExperimentsTest.java b/core/src/test/java/org/jclouds/json/GsonExperimentsTest.java index 21b50d908d..a3a5b92346 100644 --- a/core/src/test/java/org/jclouds/json/GsonExperimentsTest.java +++ b/core/src/test/java/org/jclouds/json/GsonExperimentsTest.java @@ -30,6 +30,7 @@ import java.util.concurrent.atomic.AtomicReference; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; +import com.google.common.base.Objects; import com.google.common.base.Optional; import com.google.common.collect.Lists; import com.google.common.util.concurrent.Atomics; @@ -132,6 +133,11 @@ public class GsonExperimentsTest { return false; } } + + @Override + public int hashCode() { + return Objects.hashCode(present, notPresent); + } } public void testPersistOptional() { diff --git a/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java b/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java index 8a3e62cf18..2899fd6582 100644 --- a/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java +++ b/core/src/test/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactoryTest.java @@ -138,6 +138,11 @@ public final class DeserializationConstructorAndReflectiveTypeAdapterFactoryTest ValidatedConstructor other = ValidatedConstructor.class.cast(obj); return other != null && Objects.equal(foo, other.foo) && Objects.equal(bar, other.bar); } + + @Override + public int hashCode() { + return Objects.hashCode(foo, bar); + } } @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "absent!") @@ -193,6 +198,11 @@ public final class DeserializationConstructorAndReflectiveTypeAdapterFactoryTest RenamedFields other = RenamedFields.class.cast(obj); return other != null && Objects.equal(foo, other.foo) && Objects.equal(bar, other.bar); } + + @Override + public int hashCode() { + return Objects.hashCode(foo, bar); + } } public void testCanOverrideDefault() throws IOException { @@ -222,6 +232,11 @@ public final class DeserializationConstructorAndReflectiveTypeAdapterFactoryTest ComposedObjects other = ComposedObjects.class.cast(obj); return other != null && Objects.equal(x, other.x) && Objects.equal(y, other.y); } + + @Override + public int hashCode() { + return Objects.hashCode(x, y); + } } public void checkSimpleComposedObject() throws IOException { diff --git a/core/src/test/java/org/jclouds/json/internal/OptionalTypeAdapterFactoryTest.java b/core/src/test/java/org/jclouds/json/internal/OptionalTypeAdapterFactoryTest.java index 5bc7f96a08..bd96cb669f 100644 --- a/core/src/test/java/org/jclouds/json/internal/OptionalTypeAdapterFactoryTest.java +++ b/core/src/test/java/org/jclouds/json/internal/OptionalTypeAdapterFactoryTest.java @@ -67,6 +67,11 @@ public class OptionalTypeAdapterFactoryTest { SimpleBean that = SimpleBean.class.cast(other); return Objects.equal(value, that.value) && Objects.equal(someOtherValue, that.someOtherValue); } + + @Override + public int hashCode() { + return Objects.hashCode(value, someOtherValue); + } } // register the type adapter so that gson can serialize/deserialize to it