You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/05/23 02:47:39 UTC
[james-project] 10/10: JAMES-3769 Flatten trailing AND in SearchQuery
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 6fed452f7619e41c0d39a560b23fc10bab8f1477
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue May 17 17:36:13 2022 +0700
JAMES-3769 Flatten trailing AND in SearchQuery
---
.../org/apache/james/mailbox/model/SearchQuery.java | 12 ++++++++++++
.../apache/james/imap/processor/SearchProcessor.java | 2 +-
.../james/imap/processor/SearchProcessorTest.java | 18 +++++++++++++-----
3 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/SearchQuery.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/SearchQuery.java
index da0082c8dc..c568b7a6a3 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/SearchQuery.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/SearchQuery.java
@@ -752,6 +752,18 @@ public class SearchQuery {
return this;
}
+ public Builder andCriterion(Criterion criterion) {
+ if (criterion instanceof ConjunctionCriterion) {
+ ConjunctionCriterion conjunctionCriterion = (ConjunctionCriterion) criterion;
+ if (conjunctionCriterion.getType() == Conjunction.AND) {
+ this.criterias.addAll(conjunctionCriterion.getCriteria());
+ return this;
+ }
+ }
+ this.criterias.add(criterion);
+ return this;
+ }
+
public Builder sorts(Sort... sorts) {
return this.sorts(Arrays.asList(sorts));
}
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 5e930b04bc..ab150f1150 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
@@ -270,7 +270,7 @@ public class SearchProcessor extends AbstractMailboxProcessor<SearchRequest> imp
if (selected != null) {
builder.addRecentMessageUids(selected.getRecent());
}
- return builder.andCriteria(criterion)
+ return builder.andCriterion(criterion)
.build();
}
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
index a1416f4339..bd5524511b 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
@@ -20,8 +20,12 @@
package org.apache.james.imap.processor;
import static org.apache.james.imap.ImapFixture.TAG;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.same;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Calendar;
@@ -296,8 +300,10 @@ public class SearchProcessorTest {
@Test
void testNEW() throws Exception {
expectsGetSelectedMailbox();
- check(SearchKey.buildNew(), SearchQuery.and(SearchQuery
- .flagIsSet(Flag.RECENT), SearchQuery.flagIsUnSet(Flag.SEEN)));
+ check(SearchKey.buildNew(), SearchQuery.builder()
+ .andCriteria(SearchQuery.flagIsSet(Flag.RECENT),
+ SearchQuery.flagIsUnSet(Flag.SEEN))
+ .build());
}
@Test
@@ -332,7 +338,9 @@ public class SearchProcessorTest {
criteria.add(SearchQuery.internalDateOn(getDate(DAY, MONTH, YEAR), DateResolution.Day));
criteria.add(SearchQuery.flagIsUnSet(Flag.RECENT));
criteria.add(SearchQuery.sizeGreaterThan(SIZE));
- check(SearchKey.buildAnd(keys), SearchQuery.and(criteria));
+ check(SearchKey.buildAnd(keys), SearchQuery.builder()
+ .andCriteria(criteria)
+ .build());
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org