Author: btellier
Date: Mon Jun 29 08:37:39 2015
New Revision: 1688136

URL: http://svn.apache.org/r1688136
Log:
MAILBOX-234 ElasticSearch project creation - patch contributed by Antoine Duprat

Modified:
    
james/mailbox/trunk/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/CriterionConverter.java
    
james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java

Modified: 
james/mailbox/trunk/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/CriterionConverter.java
URL: 
http://svn.apache.org/viewvc/james/mailbox/trunk/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/CriterionConverter.java?rev=1688136&r1=1688135&r2=1688136&view=diff
==============================================================================
--- 
james/mailbox/trunk/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/CriterionConverter.java
 (original)
+++ 
james/mailbox/trunk/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/CriterionConverter.java
 Mon Jun 29 08:37:39 2015
@@ -60,17 +60,13 @@ public class CriterionConverter {
         registerCriterionConverter(SearchQuery.ConjunctionCriterion.class, 
this::convertConjunction);
         registerCriterionConverter(SearchQuery.InternalDateCriterion.class, 
this::convertInternalDate);
         registerCriterionConverter(SearchQuery.HeaderCriterion.class, 
this::convertHeader);
+        registerCriterionConverter(SearchQuery.TextCriterion.class, 
this::convertTextCriterion);
         
         registerCriterionConverter(
             SearchQuery.AllCriterion.class, 
             criterion -> 
FilteredQueryRepresentation.fromQuery(matchAllQuery()));
         
         registerCriterionConverter(
-            SearchQuery.TextCriterion.class,
-            criterion -> FilteredQueryRepresentation.fromQuery(
-                    matchQuery(JsonMessageConstants.TEXT_BODY, 
criterion.getOperator().getValue())));
-        
-        registerCriterionConverter(
             SearchQuery.ModSeqCriterion.class,
             criterion -> createNumericFilter(JsonMessageConstants.MODSEQ, 
criterion.getOperator()));
         
@@ -121,6 +117,22 @@ public class CriterionConverter {
         return 
criterionConverterMap.get(criterion.getClass()).apply(criterion);
     }
 
+
+    private FilteredQueryRepresentation 
convertTextCriterion(SearchQuery.TextCriterion textCriterion) {
+        switch (textCriterion.getType()) {
+        case BODY:
+            return FilteredQueryRepresentation.fromQuery(
+                matchQuery(JsonMessageConstants.TEXT_BODY, 
textCriterion.getOperator().getValue()));
+        case FULL:
+            return FilteredQueryRepresentation.fromQuery(
+                boolQuery()
+                    .should(matchQuery(JsonMessageConstants.TEXT_BODY, 
textCriterion.getOperator().getValue()))
+                    .should(matchQuery(JsonMessageConstants.ATTACHMENTS + "." 
+ JsonMessageConstants.Attachment.TEXT_CONTENT,
+                        textCriterion.getOperator().getValue())));
+        }
+        throw new RuntimeException("Unknown SCOPE for text criterion");
+    }
+
     private FilteredQueryRepresentation 
convertInternalDate(SearchQuery.InternalDateCriterion dateCriterion) {
         SearchQuery.DateOperator dateOperator = dateCriterion.getOperator();
         return dateRangeFilter(JsonMessageConstants.DATE, dateOperator);

Modified: 
james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
URL: 
http://svn.apache.org/viewvc/james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java?rev=1688136&r1=1688135&r2=1688136&view=diff
==============================================================================
--- 
james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
 (original)
+++ 
james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
 Mon Jun 29 08:37:39 2015
@@ -512,4 +512,12 @@ public class ElasticSearchIntegrationTes
             .containsOnly(4L, 9L);
     }
 
+    @Test
+    public void 
mailsContainsShouldIncludeMailHavingAttachmentsMatchingTheRequest() throws 
Exception {
+        SearchQuery searchQuery = new SearchQuery();
+        searchQuery.andCriteria(SearchQuery.mailContains("root mailing list"));
+        assertThat(elasticSearchListeningMessageSearchIndex.search(session, 
mailbox, searchQuery))
+            .containsOnly(1L, 6L);
+    }
+
 }



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

Reply via email to