You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2018/08/23 12:12:48 UTC
[3/4] james-project git commit: JAMES-2167 Correct MailAdress equals
JAMES-2167 Correct MailAdress equals
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/09b5cb56
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/09b5cb56
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/09b5cb56
Branch: refs/heads/master
Commit: 09b5cb567e3292b1739993559bc93d37bd99a478
Parents: ec911c1
Author: Benoit Tellier <bt...@linagora.com>
Authored: Tue Aug 21 10:31:02 2018 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Thu Aug 23 13:59:17 2018 +0200
----------------------------------------------------------------------
.../java/org/apache/james/core/MailAddress.java | 30 +++++++++++++++-----
.../org/apache/james/core/MailAddressTest.java | 16 +++++++++++
2 files changed, 39 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/09b5cb56/core/src/main/java/org/apache/james/core/MailAddress.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/james/core/MailAddress.java b/core/src/main/java/org/apache/james/core/MailAddress.java
index e53f5bc..cd206ef 100644
--- a/core/src/main/java/org/apache/james/core/MailAddress.java
+++ b/core/src/main/java/org/apache/james/core/MailAddress.java
@@ -20,6 +20,8 @@
package org.apache.james.core;
import java.util.Locale;
+import java.util.Objects;
+import java.util.Optional;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
@@ -108,11 +110,12 @@ public class MailAddress implements java.io.Serializable {
return NULL_SENDER;
}
- private String localPart = null;
- private Domain domain = null;
+ private final String localPart;
+ private final Domain domain;
private MailAddress() {
-
+ localPart = null;
+ domain = null;
}
/**
@@ -317,7 +320,9 @@ public class MailAddress implements java.io.Serializable {
@Override
public String toString() {
- return localPart + "@" + domain.asString();
+ return localPart + "@" + Optional.ofNullable(domain)
+ .map(Domain::asString)
+ .orElse("");
}
public String asPrettyString() {
@@ -350,7 +355,7 @@ public class MailAddress implements java.io.Serializable {
* @returns true if the given object is equal to this one, false otherwise
*/
@Override
- public boolean equals(Object obj) {
+ public final boolean equals(Object obj) {
if (obj == null) {
return false;
} else if (obj instanceof String) {
@@ -361,11 +366,22 @@ public class MailAddress implements java.io.Serializable {
if (isNullSender() && addr.isNullSender()) {
return true;
}
- return getLocalPart().equalsIgnoreCase(addr.getLocalPart()) && getDomain().equals(addr.getDomain());
+ return equalsIgnoreCase(getLocalPart(), addr.getLocalPart())
+ && Objects.equals(getDomain(), addr.getDomain());
}
return false;
}
+ private boolean equalsIgnoreCase(String a, String b) {
+ if (a == null ^ b == null) {
+ return false;
+ }
+ if (a == null) {
+ return true;
+ }
+ return a.equalsIgnoreCase(b);
+ }
+
/**
* Returns a hash code value for this object.
* <p/>
@@ -376,7 +392,7 @@ public class MailAddress implements java.io.Serializable {
* @return the hashcode.
*/
@Override
- public int hashCode() {
+ public final int hashCode() {
return toString().toLowerCase(Locale.US).hashCode();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/09b5cb56/core/src/test/java/org/apache/james/core/MailAddressTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/james/core/MailAddressTest.java b/core/src/test/java/org/apache/james/core/MailAddressTest.java
index edb1cfa..f7cfc02 100644
--- a/core/src/test/java/org/apache/james/core/MailAddressTest.java
+++ b/core/src/test/java/org/apache/james/core/MailAddressTest.java
@@ -19,6 +19,8 @@
package org.apache.james.core;
+import static org.assertj.core.api.Assertions.assertThat;
+
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
@@ -26,6 +28,8 @@ import org.assertj.core.api.Assertions;
import org.junit.Assert;
import org.junit.Test;
+import nl.jqno.equalsverifier.EqualsVerifier;
+
public class MailAddressTest {
private static final String GOOD_LOCAL_PART = "\"quoted@local part\"";
@@ -222,4 +226,16 @@ public class MailAddressTest {
Assert.assertTrue(a.toString() + " != " + b.toString(), a.equals(b));
Assert.assertFalse(a.toString() + " != " + null, a.equals(null));
}
+
+ @Test
+ public void equalsShouldReturnTrueWhenBothNullSender() {
+ assertThat(MailAddress.nullSender())
+ .isEqualTo(MailAddress.nullSender());
+ }
+
+ @Test
+ public void shouldMatchBeanContract() {
+ EqualsVerifier.forClass(MailAddress.class)
+ .verify();
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org