From 659e44146cd5e4aa513407a962b369bb7955386f Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 17 Feb 2016 16:57:29 +0100 Subject: [PATCH] Consistent equals implementations across class hierarchies Issue: SPR-13951 (cherry picked from commit ac44f9e) --- .../support/DefaultMessageSourceResolvable.java | 10 +++++----- .../org/springframework/validation/FieldError.java | 6 +++--- .../springframework/validation/ObjectError.java | 4 ++-- .../test/context/MergedContextConfiguration.java | 4 ++-- .../context/web/WebMergedContextConfiguration.java | 14 ++++---------- 5 files changed, 16 insertions(+), 22 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/context/support/DefaultMessageSourceResolvable.java b/spring-context/src/main/java/org/springframework/context/support/DefaultMessageSourceResolvable.java index e688b5009dc..bc10ebc1d4a 100644 --- a/spring-context/src/main/java/org/springframework/context/support/DefaultMessageSourceResolvable.java +++ b/spring-context/src/main/java/org/springframework/context/support/DefaultMessageSourceResolvable.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -106,7 +106,7 @@ public class DefaultMessageSourceResolvable implements MessageSourceResolvable, * the last one in the codes array. */ public String getCode() { - return (this.codes != null && this.codes.length > 0) ? this.codes[this.codes.length - 1] : null; + return (this.codes != null && this.codes.length > 0 ? this.codes[this.codes.length - 1] : null); } @Override @@ -127,7 +127,7 @@ public class DefaultMessageSourceResolvable implements MessageSourceResolvable, protected final String resolvableToString() { StringBuilder result = new StringBuilder(); result.append("codes [").append(StringUtils.arrayToDelimitedString(this.codes, ",")); - result.append("]; arguments [" + StringUtils.arrayToDelimitedString(this.arguments, ",")); + result.append("]; arguments [").append(StringUtils.arrayToDelimitedString(this.arguments, ",")); result.append("]; default message [").append(this.defaultMessage).append(']'); return result.toString(); } @@ -153,9 +153,9 @@ public class DefaultMessageSourceResolvable implements MessageSourceResolvable, return false; } MessageSourceResolvable otherResolvable = (MessageSourceResolvable) other; - return ObjectUtils.nullSafeEquals(getCodes(), otherResolvable.getCodes()) && + return (ObjectUtils.nullSafeEquals(getCodes(), otherResolvable.getCodes()) && ObjectUtils.nullSafeEquals(getArguments(), otherResolvable.getArguments()) && - ObjectUtils.nullSafeEquals(getDefaultMessage(), otherResolvable.getDefaultMessage()); + ObjectUtils.nullSafeEquals(getDefaultMessage(), otherResolvable.getDefaultMessage())); } @Override diff --git a/spring-context/src/main/java/org/springframework/validation/FieldError.java b/spring-context/src/main/java/org/springframework/validation/FieldError.java index 0c76cc1622c..26852dadf62 100644 --- a/spring-context/src/main/java/org/springframework/validation/FieldError.java +++ b/spring-context/src/main/java/org/springframework/validation/FieldError.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -112,9 +112,9 @@ public class FieldError extends ObjectError { return false; } FieldError otherError = (FieldError) other; - return getField().equals(otherError.getField()) && + return (getField().equals(otherError.getField()) && ObjectUtils.nullSafeEquals(getRejectedValue(), otherError.getRejectedValue()) && - isBindingFailure() == otherError.isBindingFailure(); + isBindingFailure() == otherError.isBindingFailure()); } @Override diff --git a/spring-context/src/main/java/org/springframework/validation/ObjectError.java b/spring-context/src/main/java/org/springframework/validation/ObjectError.java index 00b451634be..829e93874bd 100644 --- a/spring-context/src/main/java/org/springframework/validation/ObjectError.java +++ b/spring-context/src/main/java/org/springframework/validation/ObjectError.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -78,7 +78,7 @@ public class ObjectError extends DefaultMessageSourceResolvable { if (this == other) { return true; } - if (getClass() != other.getClass() || !super.equals(other)) { + if (other == null || other.getClass() != getClass() || !super.equals(other)) { return false; } ObjectError otherError = (ObjectError) other; diff --git a/spring-test/src/main/java/org/springframework/test/context/MergedContextConfiguration.java b/spring-test/src/main/java/org/springframework/test/context/MergedContextConfiguration.java index 5212a04071d..5090d7c5a42 100644 --- a/spring-test/src/main/java/org/springframework/test/context/MergedContextConfiguration.java +++ b/spring-test/src/main/java/org/springframework/test/context/MergedContextConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -401,7 +401,7 @@ public class MergedContextConfiguration implements Serializable { if (this == other) { return true; } - if (!(other instanceof MergedContextConfiguration)) { + if (other == null || other.getClass() != getClass()) { return false; } diff --git a/spring-test/src/main/java/org/springframework/test/context/web/WebMergedContextConfiguration.java b/spring-test/src/main/java/org/springframework/test/context/web/WebMergedContextConfiguration.java index 05e476b936d..cd1187b5359 100644 --- a/spring-test/src/main/java/org/springframework/test/context/web/WebMergedContextConfiguration.java +++ b/spring-test/src/main/java/org/springframework/test/context/web/WebMergedContextConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -161,14 +161,8 @@ public class WebMergedContextConfiguration extends MergedContextConfiguration { */ @Override public boolean equals(Object other) { - if (this == other) { - return true; - } - if (!(other instanceof WebMergedContextConfiguration)) { - return false; - } - WebMergedContextConfiguration otherConfig = (WebMergedContextConfiguration) other; - return super.equals(otherConfig) && this.getResourceBasePath().equals(otherConfig.getResourceBasePath()); + return (this == other || (super.equals(other) && + this.resourceBasePath.equals(((WebMergedContextConfiguration) other).resourceBasePath))); } /** @@ -178,7 +172,7 @@ public class WebMergedContextConfiguration extends MergedContextConfiguration { */ @Override public int hashCode() { - return 31 * super.hashCode() + this.resourceBasePath.hashCode(); + return super.hashCode() * 31 + this.resourceBasePath.hashCode(); } /**