From c10d4b6af0acc472a18e7c9f8b40f89a584e4ccd Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Thu, 24 Jun 2021 13:22:38 +0200 Subject: [PATCH] Favor ObjectUtils over Objects for equals/hashCode. Original Pull Request: #3684 --- .../core/mapping/UnwrapEntityContext.java | 26 +++++++-------- .../UnwrappedMongoPersistentProperty.java | 32 +++++++++++-------- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrapEntityContext.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrapEntityContext.java index 81e292605..5240aef5c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrapEntityContext.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrapEntityContext.java @@ -15,7 +15,7 @@ */ package org.springframework.data.mongodb.core.mapping; -import java.util.Objects; +import org.springframework.util.ObjectUtils; /** * @author Christoph Strobl @@ -36,21 +36,11 @@ class UnwrapEntityContext { /* * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - return Objects.hash(property); - } - - /* - * (non-Javadoc) - * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { + if (this == obj) { return true; } @@ -59,8 +49,16 @@ class UnwrapEntityContext { return false; } - UnwrapEntityContext other = (UnwrapEntityContext) obj; + UnwrapEntityContext that = (UnwrapEntityContext) obj; + return ObjectUtils.nullSafeEquals(property, that.property); + } - return Objects.equals(property, other.property); + /* + * (non-Javadoc) + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + return ObjectUtils.nullSafeHashCode(property); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentProperty.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentProperty.java index c247d7cec..5ec71f10b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentProperty.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentProperty.java @@ -18,13 +18,13 @@ package org.springframework.data.mongodb.core.mapping; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.util.Objects; import org.springframework.data.mapping.Association; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.PersistentPropertyAccessor; import org.springframework.data.util.TypeInformation; import org.springframework.lang.Nullable; +import org.springframework.util.ObjectUtils; /** * Unwrapped variant of {@link MongoPersistentProperty}. @@ -309,21 +309,11 @@ class UnwrappedMongoPersistentProperty implements MongoPersistentProperty { /* * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - return Objects.hash(delegate, context); - } - - /* - * (non-Javadoc) - * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { + if (this == obj) { return true; } @@ -332,8 +322,22 @@ class UnwrappedMongoPersistentProperty implements MongoPersistentProperty { return false; } - UnwrappedMongoPersistentProperty other = (UnwrappedMongoPersistentProperty) obj; + UnwrappedMongoPersistentProperty that = (UnwrappedMongoPersistentProperty) obj; + if (!ObjectUtils.nullSafeEquals(delegate, that.delegate)) { + return false; + } + return ObjectUtils.nullSafeEquals(context, that.context); + } - return Objects.equals(delegate, other.delegate) && Objects.equals(context, other.context); + /* + * (non-Javadoc) + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + + int result = ObjectUtils.nullSafeHashCode(delegate); + result = 31 * result + ObjectUtils.nullSafeHashCode(context); + return result; } }