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 2020/04/21 02:56:46 UTC
[james-project] 10/19: [Refactoring] replace int constants by a enum
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 6f944f5569b337eb99d9bcb49c25471df8fdacb4
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Wed Apr 15 23:42:00 2020 +0200
[Refactoring] replace int constants by a enum
---
.../james/imap/api/message/request/SearchKey.java | 191 ++++++++++-----------
.../james/imap/processor/SearchProcessor.java | 82 ++++-----
.../imap/api/message/request/SearchKeyTest.java | 2 +-
3 files changed, 135 insertions(+), 140 deletions(-)
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/api/message/request/SearchKey.java b/protocols/imap/src/main/java/org/apache/james/imap/api/message/request/SearchKey.java
index 2f7a5e6..ebe2141 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/api/message/request/SearchKey.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/api/message/request/SearchKey.java
@@ -19,6 +19,47 @@
package org.apache.james.imap.api.message.request;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_ALL;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_AND;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_ANSWERED;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_BCC;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_BEFORE;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_BODY;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_CC;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_DELETED;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_DRAFT;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_FLAGGED;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_FROM;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_HEADER;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_KEYWORD;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_LARGER;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_MODSEQ;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_NEW;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_NOT;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_OLD;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_OLDER;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_ON;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_OR;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_RECENT;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_SEEN;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_SENTBEFORE;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_SENTON;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_SENTSINCE;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_SEQUENCE_SET;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_SINCE;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_SMALLER;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_SUBJECT;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_TEXT;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_TO;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_UID;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_UNANSWERED;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_UNDELETED;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_UNDRAFT;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_UNFLAGGED;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_UNKEYWORD;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_UNSEEN;
+import static org.apache.james.imap.api.message.request.SearchKey.Type.TYPE_YOUNGER;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -36,93 +77,48 @@ import com.google.common.collect.ImmutableList;
*/
public final class SearchKey {
- // NUMBERS
-
- public static final int TYPE_SEQUENCE_SET = 1;
- public static final int TYPE_UID = 2;
-
- // NO PARAMETERS
- public static final int TYPE_ALL = 3;
-
- public static final int TYPE_ANSWERED = 4;
-
- public static final int TYPE_DELETED = 5;
-
- public static final int TYPE_DRAFT = 6;
-
- public static final int TYPE_FLAGGED = 7;
-
- public static final int TYPE_NEW = 8;
-
- public static final int TYPE_OLD = 9;
-
- public static final int TYPE_RECENT = 10;
-
- public static final int TYPE_SEEN = 11;
-
- public static final int TYPE_UNANSWERED = 12;
-
- public static final int TYPE_UNDELETED = 13;
-
- public static final int TYPE_UNDRAFT = 14;
-
- public static final int TYPE_UNFLAGGED = 15;
-
- public static final int TYPE_UNSEEN = 16;
-
- // ONE VALUE
- public static final int TYPE_BCC = 17;
-
- public static final int TYPE_BODY = 18;
-
- public static final int TYPE_CC = 19;
-
- public static final int TYPE_FROM = 20;
-
- public static final int TYPE_KEYWORD = 21;
-
- public static final int TYPE_SUBJECT = 22;
-
- public static final int TYPE_TEXT = 23;
-
- public static final int TYPE_TO = 24;
-
- public static final int TYPE_UNKEYWORD = 25;
-
- // ONE DATE
- public static final int TYPE_BEFORE = 26;
-
- public static final int TYPE_ON = 27;
-
- public static final int TYPE_SENTBEFORE = 28;
-
- public static final int TYPE_SENTON = 29;
-
- public static final int TYPE_SENTSINCE = 30;
-
- public static final int TYPE_SINCE = 31;
-
- // FIELD VALUE
- public static final int TYPE_HEADER = 32;
-
- // ONE NUMBER
- public static final int TYPE_LARGER = 33;
-
- public static final int TYPE_SMALLER = 34;
-
- // NOT
- public static final int TYPE_NOT = 35;
-
- // OR
- public static final int TYPE_OR = 36;
-
- // AND
- public static final int TYPE_AND = 37;
-
- public static final int TYPE_YOUNGER = 38;
- public static final int TYPE_OLDER = 39;
-
- public static final int TYPE_MODSEQ = 40;
+ public enum Type {
+ TYPE_SEQUENCE_SET,
+ TYPE_UID,
+ TYPE_ALL,
+ TYPE_ANSWERED,
+ TYPE_DELETED,
+ TYPE_DRAFT,
+ TYPE_FLAGGED,
+ TYPE_NEW,
+ TYPE_OLD,
+ TYPE_RECENT,
+ TYPE_SEEN,
+ TYPE_UNANSWERED,
+ TYPE_UNDELETED,
+ TYPE_UNDRAFT,
+ TYPE_UNFLAGGED,
+ TYPE_UNSEEN,
+ TYPE_BCC,
+ TYPE_BODY,
+ TYPE_CC,
+ TYPE_FROM,
+ TYPE_KEYWORD,
+ TYPE_SUBJECT,
+ TYPE_TEXT,
+ TYPE_TO,
+ TYPE_UNKEYWORD,
+ TYPE_BEFORE,
+ TYPE_ON,
+ TYPE_SENTBEFORE,
+ TYPE_SENTON,
+ TYPE_SENTSINCE,
+ TYPE_SINCE,
+ TYPE_HEADER,
+ TYPE_LARGER,
+ TYPE_SMALLER,
+ TYPE_NOT,
+ TYPE_OR,
+ TYPE_AND,
+ TYPE_YOUNGER,
+ TYPE_OLDER,
+ TYPE_MODSEQ
+ }
private static final SearchKey UNSEEN = new SearchKey(TYPE_UNSEEN, null, null, 0, null, null, null, null, -1, -1);
@@ -334,7 +330,7 @@ public final class SearchKey {
return new SearchKey(TYPE_MODSEQ, null, null, 0, null, null, null, null, -1, modSeq);
}
- private final int type;
+ private final Type type;
private final DayMonthYear date;
@@ -354,7 +350,7 @@ public final class SearchKey {
private final long modSeq;
- private SearchKey(int type, DayMonthYear date, List<SearchKey> keys, long number, String name, String value, UidRange[] uids, IdRange[] sequence, long seconds, long modSeq) {
+ private SearchKey(Type type, DayMonthYear date, List<SearchKey> keys, long number, String name, String value, UidRange[] uids, IdRange[] sequence, long seconds, long modSeq) {
this.type = type;
this.date = date;
this.keys = keys;
@@ -370,9 +366,8 @@ public final class SearchKey {
/**
* Gets a date value to be search upon.
*
- * @return the date when: {@link #TYPE_BEFORE}, {@link #TYPE_ON},
- * {@link #TYPE_SENTBEFORE}, {@link #TYPE_SENTON},
- * {@link #TYPE_SENTSINCE}, {@link #TYPE_SINCE}; otherwise null
+ * @return the date when: TYPE_BEFORE, TYPE_ON,
+ * TYPE_SENTBEFORE, TYPE_SENTON, TYPE_SENTSINCE, TYPE_SINCE, otherwise null
*/
public DayMonthYear getDate() {
return date;
@@ -390,7 +385,7 @@ public final class SearchKey {
/**
* Gets sequence numbers.
*
- * @return msn when {@link #TYPE_SEQUENCE_SET}, uids when {@link #TYPE_UID},
+ * @return msn when TYPE_SEQUENCE_SET, uids when TYPE_UID,
* null otherwise
*/
public IdRange[] getSequenceNumbers() {
@@ -404,7 +399,7 @@ public final class SearchKey {
/**
* Gets the field name.
*
- * @return the field name when {@link #TYPE_HEADER}, null otherwise
+ * @return the field name when TYPE_HEADER, null otherwise
*/
public String getName() {
return name;
@@ -413,7 +408,7 @@ public final class SearchKey {
/**
* Gets the size searched for.
*
- * @return the size when {@link #TYPE_LARGER} or {@link #TYPE_SMALLER},
+ * @return the size when TYPE_LARGER or TYPE_SMALLER,
* otherwise 0
*/
public long getSize() {
@@ -424,7 +419,7 @@ public final class SearchKey {
* Gets key two.
*
* @return <code>List</code> of <code>SearchKey</code>'s when
- * {@link #TYPE_OR}, {@link #TYPE_AND} or {@link #TYPE_NOT}
+ * TYPE_OR, TYPE_AND or TYPE_NOT
* otherwise null
*/
public List<SearchKey> getKeys() {
@@ -436,7 +431,7 @@ public final class SearchKey {
*
* @return the type
*/
- public int getType() {
+ public Type getType() {
return type;
}
@@ -452,7 +447,7 @@ public final class SearchKey {
/**
* Gets the size searched for.
*
- * @return the size when {@link #TYPE_MODSEQ}
+ * @return the size when TYPE_MODSEQ
* otherwise -1
*/
public long getModSeq() {
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
index b28216d..16c80fb 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
@@ -272,32 +272,32 @@ public class SearchProcessor extends AbstractMailboxProcessor<SearchRequest> imp
}
private SearchQuery.Criterion toCriterion(SearchKey key, ImapSession session) throws MessageRangeException {
- final int type = key.getType();
+ final SearchKey.Type type = key.getType();
final DayMonthYear date = key.getDate();
switch (type) {
- case SearchKey.TYPE_ALL:
+ case TYPE_ALL:
return SearchQuery.all();
- case SearchKey.TYPE_AND:
+ case TYPE_AND:
return and(key.getKeys(), session);
- case SearchKey.TYPE_ANSWERED:
+ case TYPE_ANSWERED:
return SearchQuery.flagIsSet(Flag.ANSWERED);
- case SearchKey.TYPE_BCC:
+ case TYPE_BCC:
return SearchQuery.address(AddressType.Bcc, key.getValue());
- case SearchKey.TYPE_BEFORE:
+ case TYPE_BEFORE:
return SearchQuery.internalDateBefore(date.toDate(), DateResolution.Day);
- case SearchKey.TYPE_BODY:
+ case TYPE_BODY:
return SearchQuery.bodyContains(key.getValue());
- case SearchKey.TYPE_CC:
+ case TYPE_CC:
return SearchQuery.address(AddressType.Cc, key.getValue());
- case SearchKey.TYPE_DELETED:
+ case TYPE_DELETED:
return SearchQuery.flagIsSet(Flag.DELETED);
- case SearchKey.TYPE_DRAFT:
+ case TYPE_DRAFT:
return SearchQuery.flagIsSet(Flag.DRAFT);
- case SearchKey.TYPE_FLAGGED:
+ case TYPE_FLAGGED:
return SearchQuery.flagIsSet(Flag.FLAGGED);
- case SearchKey.TYPE_FROM:
+ case TYPE_FROM:
return SearchQuery.address(AddressType.From, key.getValue());
- case SearchKey.TYPE_HEADER:
+ case TYPE_HEADER:
String value = key.getValue();
// Check if header exists if the value is empty. See IMAP-311
if (value == null || value.length() == 0) {
@@ -305,67 +305,67 @@ public class SearchProcessor extends AbstractMailboxProcessor<SearchRequest> imp
} else {
return SearchQuery.headerContains(key.getName(), value);
}
- case SearchKey.TYPE_KEYWORD:
+ case TYPE_KEYWORD:
return SearchQuery.flagIsSet(key.getValue());
- case SearchKey.TYPE_LARGER:
+ case TYPE_LARGER:
return SearchQuery.sizeGreaterThan(key.getSize());
- case SearchKey.TYPE_NEW:
+ case TYPE_NEW:
return SearchQuery.and(SearchQuery.flagIsSet(Flag.RECENT), SearchQuery.flagIsUnSet(Flag.SEEN));
- case SearchKey.TYPE_NOT:
+ case TYPE_NOT:
return not(key.getKeys(), session);
- case SearchKey.TYPE_OLD:
+ case TYPE_OLD:
return SearchQuery.flagIsUnSet(Flag.RECENT);
- case SearchKey.TYPE_ON:
+ case TYPE_ON:
return SearchQuery.internalDateOn(date.toDate(), DateResolution.Day);
- case SearchKey.TYPE_OR:
+ case TYPE_OR:
return or(key.getKeys(), session);
- case SearchKey.TYPE_RECENT:
+ case TYPE_RECENT:
return SearchQuery.flagIsSet(Flag.RECENT);
- case SearchKey.TYPE_SEEN:
+ case TYPE_SEEN:
return SearchQuery.flagIsSet(Flag.SEEN);
- case SearchKey.TYPE_SENTBEFORE:
+ case TYPE_SENTBEFORE:
return SearchQuery.headerDateBefore(ImapConstants.RFC822_DATE, date.toDate(), DateResolution.Day);
- case SearchKey.TYPE_SENTON:
+ case TYPE_SENTON:
return SearchQuery.headerDateOn(ImapConstants.RFC822_DATE, date.toDate(), DateResolution.Day);
- case SearchKey.TYPE_SENTSINCE:
+ case TYPE_SENTSINCE:
// Include the date which is used as search param. See IMAP-293
Criterion onCrit = SearchQuery.headerDateOn(ImapConstants.RFC822_DATE, date.toDate(), DateResolution.Day);
Criterion afterCrit = SearchQuery.headerDateAfter(ImapConstants.RFC822_DATE, date.toDate(), DateResolution.Day);
return SearchQuery.or(onCrit, afterCrit);
- case SearchKey.TYPE_SEQUENCE_SET:
+ case TYPE_SEQUENCE_SET:
return sequence(key.getSequenceNumbers(), session);
- case SearchKey.TYPE_SINCE:
+ case TYPE_SINCE:
// Include the date which is used as search param. See IMAP-293
return SearchQuery.or(SearchQuery.internalDateOn(date.toDate(), DateResolution.Day), SearchQuery.internalDateAfter(date.toDate(), DateResolution.Day));
- case SearchKey.TYPE_SMALLER:
+ case TYPE_SMALLER:
return SearchQuery.sizeLessThan(key.getSize());
- case SearchKey.TYPE_SUBJECT:
+ case TYPE_SUBJECT:
return SearchQuery.headerContains(ImapConstants.RFC822_SUBJECT, key.getValue());
- case SearchKey.TYPE_TEXT:
+ case TYPE_TEXT:
return SearchQuery.mailContains(key.getValue());
- case SearchKey.TYPE_TO:
+ case TYPE_TO:
return SearchQuery.address(AddressType.To, key.getValue());
- case SearchKey.TYPE_UID:
+ case TYPE_UID:
return uids(key.getUidRanges(), session);
- case SearchKey.TYPE_UNANSWERED:
+ case TYPE_UNANSWERED:
return SearchQuery.flagIsUnSet(Flag.ANSWERED);
- case SearchKey.TYPE_UNDELETED:
+ case TYPE_UNDELETED:
return SearchQuery.flagIsUnSet(Flag.DELETED);
- case SearchKey.TYPE_UNDRAFT:
+ case TYPE_UNDRAFT:
return SearchQuery.flagIsUnSet(Flag.DRAFT);
- case SearchKey.TYPE_UNFLAGGED:
+ case TYPE_UNFLAGGED:
return SearchQuery.flagIsUnSet(Flag.FLAGGED);
- case SearchKey.TYPE_UNKEYWORD:
+ case TYPE_UNKEYWORD:
return SearchQuery.flagIsUnSet(key.getValue());
- case SearchKey.TYPE_UNSEEN:
+ case TYPE_UNSEEN:
return SearchQuery.flagIsUnSet(Flag.SEEN);
- case SearchKey.TYPE_OLDER:
+ case TYPE_OLDER:
Date withinDate = createWithinDate(key);
return SearchQuery.or(SearchQuery.internalDateOn(withinDate, DateResolution.Second), SearchQuery.internalDateBefore(withinDate, DateResolution.Second));
- case SearchKey.TYPE_YOUNGER:
+ case TYPE_YOUNGER:
Date withinDate2 = createWithinDate(key);
return SearchQuery.or(SearchQuery.internalDateOn(withinDate2, DateResolution.Second), SearchQuery.internalDateAfter(withinDate2, DateResolution.Second));
- case SearchKey.TYPE_MODSEQ:
+ case TYPE_MODSEQ:
session.setAttribute(SEARCH_MODSEQ, true);
long modSeq = key.getModSeq();
return SearchQuery.or(SearchQuery.modSeqEquals(modSeq), SearchQuery.modSeqGreaterThan(modSeq));
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/api/message/request/SearchKeyTest.java b/protocols/imap/src/test/java/org/apache/james/imap/api/message/request/SearchKeyTest.java
index e8a962d..3c93398 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/api/message/request/SearchKeyTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/api/message/request/SearchKeyTest.java
@@ -46,6 +46,6 @@ public class SearchKeyTest {
public void modSeqSearchKeyShouldBeOfTypeModSeq() {
SearchKey searchKey = SearchKey.buildModSeq(36);
- assertThat(searchKey.getType()).isEqualTo(SearchKey.TYPE_MODSEQ);
+ assertThat(searchKey.getType()).isEqualTo(SearchKey.Type.TYPE_MODSEQ);
}
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org