Browse Source

Ensure when equals() is implemented so is hashCode()

Update classes that override `equals()` to ensure that they also
implement `hashCode()`.

Issue: SPR-16968
pull/1868/head
Phillip Webb 6 years ago committed by Juergen Hoeller
parent
commit
634f5c2792
  1. 8
      spring-aop/src/main/java/org/springframework/aop/support/MethodMatchers.java
  2. 12
      spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java
  3. 10
      spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java

8
spring-aop/src/main/java/org/springframework/aop/support/MethodMatchers.java

@ -192,6 +192,14 @@ public abstract class MethodMatchers { @@ -192,6 +192,14 @@ public abstract class MethodMatchers {
return (targetClass != null && this.cf2.matches(targetClass));
}
@Override
public int hashCode() {
int hashCode = 17;
hashCode = 37 * hashCode + this.cf1.hashCode();
hashCode = 37 * hashCode + this.cf2.hashCode();
return hashCode;
}
@Override
public boolean equals(Object other) {
if (this == other) {

12
spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java

@ -39,6 +39,7 @@ import org.springframework.core.MethodParameter; @@ -39,6 +39,7 @@ import org.springframework.core.MethodParameter;
import org.springframework.core.ParameterNameDiscoverer;
import org.springframework.core.ResolvableType;
import org.springframework.lang.Nullable;
import org.springframework.util.ObjectUtils;
/**
* Descriptor for a specific dependency that is about to be injected.
@ -374,7 +375,6 @@ public class DependencyDescriptor extends InjectionPoint implements Serializable @@ -374,7 +375,6 @@ public class DependencyDescriptor extends InjectionPoint implements Serializable
}
}
@Override
public boolean equals(Object other) {
if (this == other) {
@ -388,6 +388,16 @@ public class DependencyDescriptor extends InjectionPoint implements Serializable @@ -388,6 +388,16 @@ public class DependencyDescriptor extends InjectionPoint implements Serializable
this.nestingLevel == otherDesc.nestingLevel && this.containingClass == otherDesc.containingClass);
}
@Override
public int hashCode() {
final int prime = 31;
int result = ObjectUtils.nullSafeHashCode(this.containingClass);
result = prime * result + Boolean.hashCode(this.eager);
result = prime * result + this.nestingLevel;
result = prime * result + Boolean.hashCode(this.required);
return result;
}
//---------------------------------------------------------------------
// Serialization support

10
spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java

@ -580,6 +580,16 @@ public class CachingConnectionFactory extends SingleConnectionFactory { @@ -580,6 +580,16 @@ public class CachingConnectionFactory extends SingleConnectionFactory {
this.durable == otherKey.durable);
}
@Override
public int hashCode() {
int prime = 31;
int result = ObjectUtils.nullSafeHashCode(this.selector);
result = prime * result + ObjectUtils.nullSafeHashCode(this.noLocal);
result = prime * result + ObjectUtils.nullSafeHashCode(this.subscription);
result = prime * result + Boolean.hashCode(this.durable);
return result;
}
@Override
public String toString() {
return super.toString() + " [selector=" + this.selector + ", noLocal=" + this.noLocal +

Loading…
Cancel
Save