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 bt...@apache.org on 2019/11/14 02:09:37 UTC

[james-project] 20/32: MAILBOX-391 MailboxQuery should implement Equals & HashCode

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 42769f59e55daef36a52fa9fceadaf2bbe99c753
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Nov 12 11:25:30 2019 +0700

    MAILBOX-391 MailboxQuery should implement Equals & HashCode
---
 .../apache/james/mailbox/model/search/ExactName.java   | 17 +++++++++++++++++
 .../james/mailbox/model/search/MailboxQuery.java       | 18 ++++++++++++++++++
 .../james/mailbox/model/search/PrefixedRegex.java      | 18 ++++++++++++++++++
 .../james/mailbox/model/search/PrefixedWildcard.java   | 17 +++++++++++++++++
 .../james/mailbox/model/search/ExactNameTest.java      |  9 ++++++++-
 .../james/mailbox/model/search/MailboxQueryTest.java   |  8 ++++++++
 .../james/mailbox/model/search/PrefixedRegexTest.java  |  9 +++++++++
 .../mailbox/model/search/PrefixedWildcardTest.java     |  8 ++++++++
 8 files changed, 103 insertions(+), 1 deletion(-)

diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/ExactName.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/ExactName.java
index 347e978..1a9b0c8 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/ExactName.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/ExactName.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.mailbox.model.search;
 
+import java.util.Objects;
+
 import com.google.common.base.Preconditions;
 
 public class ExactName implements MailboxNameExpression {
@@ -45,4 +47,19 @@ public class ExactName implements MailboxNameExpression {
     public boolean isWild() {
         return false;
     }
+
+    @Override
+    public final boolean equals(Object o) {
+        if (o instanceof ExactName) {
+            ExactName exactName = (ExactName) o;
+
+            return Objects.equals(this.name, exactName.name);
+        }
+        return false;
+    }
+
+    @Override
+    public final int hashCode() {
+        return Objects.hash(name);
+    }
 }
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/MailboxQuery.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/MailboxQuery.java
index 388280f..4ed7c58 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/MailboxQuery.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/MailboxQuery.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.model.search;
 
+import java.util.Objects;
 import java.util.Optional;
 
 import org.apache.james.core.Username;
@@ -182,6 +183,23 @@ public class MailboxQuery {
         return new UserBound(namespace, user, mailboxNameExpression);
     }
 
+    @Override
+    public final boolean equals(Object o) {
+        if (o instanceof MailboxQuery) {
+            MailboxQuery that = (MailboxQuery) o;
+
+            return Objects.equals(this.namespace, that.namespace)
+                && Objects.equals(this.user, that.user)
+                && Objects.equals(this.mailboxNameExpression, that.mailboxNameExpression);
+        }
+        return false;
+    }
+
+    @Override
+    public final int hashCode() {
+        return Objects.hash(namespace, user, mailboxNameExpression);
+    }
+
     public String toString() {
         return MoreObjects.toStringHelper(this)
             .add("namespace", namespace)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/PrefixedRegex.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/PrefixedRegex.java
index 3c96a69..86e6743 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/PrefixedRegex.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/PrefixedRegex.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.model.search;
 
+import java.util.Objects;
 import java.util.Optional;
 import java.util.StringTokenizer;
 import java.util.regex.Pattern;
@@ -109,4 +110,21 @@ public class PrefixedRegex implements MailboxNameExpression {
             return Pattern.quote(token);
         }
     }
+
+    @Override
+    public final boolean equals(Object o) {
+        if (o instanceof PrefixedRegex) {
+            PrefixedRegex that = (PrefixedRegex) o;
+
+            return Objects.equals(this.pathDelimiter, that.pathDelimiter)
+                && Objects.equals(this.prefix, that.prefix)
+                && Objects.equals(this.regex, that.regex);
+        }
+        return false;
+    }
+
+    @Override
+    public final int hashCode() {
+        return Objects.hash(prefix, regex, pathDelimiter);
+    }
 }
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/PrefixedWildcard.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/PrefixedWildcard.java
index cbc1934..ae1e6fb 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/PrefixedWildcard.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/search/PrefixedWildcard.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.mailbox.model.search;
 
+import java.util.Objects;
+
 import com.google.common.base.Preconditions;
 
 public class PrefixedWildcard implements MailboxNameExpression {
@@ -44,4 +46,19 @@ public class PrefixedWildcard implements MailboxNameExpression {
     public boolean isWild() {
         return true;
     }
+
+    @Override
+    public final boolean equals(Object o) {
+        if (o instanceof PrefixedWildcard) {
+            PrefixedWildcard that = (PrefixedWildcard) o;
+
+            return Objects.equals(this.prefix, that.prefix);
+        }
+        return false;
+    }
+
+    @Override
+    public final int hashCode() {
+        return Objects.hash(prefix);
+    }
 }
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/ExactNameTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/ExactNameTest.java
index c63bf00..94ca305 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/ExactNameTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/ExactNameTest.java
@@ -24,11 +24,18 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.junit.Test;
 
-public class ExactNameTest {
+import nl.jqno.equalsverifier.EqualsVerifier;
 
+public class ExactNameTest {
     public static final String NAME = "toto";
 
     @Test
+    public void shouldMatchBeanContract() {
+        EqualsVerifier.forClass(ExactName.class)
+            .verify();
+    }
+
+    @Test
     public void constructorShouldThrowOnNullName() {
         assertThatThrownBy(() -> new ExactName(null))
             .isInstanceOf(NullPointerException.class);
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/MailboxQueryTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/MailboxQueryTest.java
index 08c907f..4f87989 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/MailboxQueryTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/MailboxQueryTest.java
@@ -27,6 +27,8 @@ import org.apache.james.mailbox.model.search.MailboxQuery.Builder;
 import org.junit.Before;
 import org.junit.Test;
 
+import nl.jqno.equalsverifier.EqualsVerifier;
+
 public class MailboxQueryTest {
     private static final String CURRENT_USER = "user";
 
@@ -38,6 +40,12 @@ public class MailboxQueryTest {
     }
 
     @Test
+    public void shouldMatchBeanContract() {
+        EqualsVerifier.forClass(MailboxQuery.class)
+            .verify();
+    }
+
+    @Test
     public void buildShouldMatchAllValuesWhenMatchesAll() throws Exception {
 
         MailboxQuery actual = MailboxQuery.builder()
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/PrefixedRegexTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/PrefixedRegexTest.java
index 03a8351..6092e05 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/PrefixedRegexTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/PrefixedRegexTest.java
@@ -23,12 +23,21 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import org.junit.Test;
 
+import nl.jqno.equalsverifier.EqualsVerifier;
+
 public class PrefixedRegexTest {
     private static final char PATH_DELIMITER = '.';
     private static final String PREFIX = "name";
     private static final String EMPTY_PREFIX = "";
 
     @Test
+    public void shouldMatchBeanContract() {
+        EqualsVerifier.forClass(PrefixedRegex.class)
+            .withIgnoredFields("pattern")
+            .verify();
+    }
+
+    @Test
     public void isWildShouldReturnTrueWhenOnlyFreeWildcard() throws Exception {
         PrefixedRegex prefixedRegex = new PrefixedRegex(PREFIX, "*", PATH_DELIMITER);
 
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/PrefixedWildcardTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/PrefixedWildcardTest.java
index 762b025..9f67a64 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/PrefixedWildcardTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/search/PrefixedWildcardTest.java
@@ -24,10 +24,18 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.junit.Test;
 
+import nl.jqno.equalsverifier.EqualsVerifier;
+
 public class PrefixedWildcardTest {
     public static final String NAME = "toto";
 
     @Test
+    public void shouldMatchBeanContract() {
+        EqualsVerifier.forClass(PrefixedWildcard.class)
+            .verify();
+    }
+
+    @Test
     public void constructorShouldThrowOnNullName() {
         assertThatThrownBy(() -> new PrefixedWildcard(null))
             .isInstanceOf(NullPointerException.class);


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org