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 no...@apache.org on 2011/06/04 20:58:52 UTC

svn commit: r1131466 [1/2] - in /james/mailbox/trunk/store/src: main/java/org/apache/james/mailbox/store/mail/ main/java/org/apache/james/mailbox/store/search/ main/java/org/apache/james/mailbox/store/search/comparator/ test/java/org/apache/james/mailb...

Author: norman
Date: Sat Jun  4 18:58:51 2011
New Revision: 1131466

URL: http://svn.apache.org/viewvc?rev=1131466&view=rev
Log:
Make sure MessageSearches also respect SearchQuery.getSorts(). See MAILBOX-78

Removed:
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/SearchQueryIterator.java
Modified:
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java
    james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsMultipartMixedTest.java
    james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsRFC822Test.java
    james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsTest.java

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java?rev=1131466&r1=1131465&r2=1131466&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java Sat Jun  4 18:58:51 2011
@@ -45,7 +45,7 @@ import org.apache.james.mailbox.store.ma
 import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mailbox.store.mail.model.Property;
 import org.apache.james.mailbox.store.search.MessageSearchIndex;
-import org.apache.james.mailbox.store.search.SearchQueryIterator;
+import org.apache.james.mailbox.store.search.MessageSearches;
 import org.apache.james.mailbox.store.transaction.TransactionalMapper;
 
 /**
@@ -481,9 +481,9 @@ public abstract class AbstractMessageMap
                 };
                 
                 if (mailboxSession == null) {
-                    return new SearchQueryIterator(it, query);
+                    return new MessageSearches(it, query).iterator();
                 } else {
-                    return new SearchQueryIterator(it, query, mailboxSession.getLog());
+                    return new MessageSearches(it, query, mailboxSession.getLog()).iterator();
                 }
             }
         } else {

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java?rev=1131466&r1=1131465&r2=1131466&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java Sat Jun  4 18:58:51 2011
@@ -26,10 +26,13 @@ import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Set;
 import java.util.TimeZone;
+import java.util.TreeSet;
 
 import javax.mail.Flags;
 
@@ -42,6 +45,7 @@ import org.apache.james.mailbox.SearchQu
 import org.apache.james.mailbox.store.ResultUtils;
 import org.apache.james.mailbox.store.mail.model.Header;
 import org.apache.james.mailbox.store.mail.model.Message;
+import org.apache.james.mailbox.store.search.comparator.CombinedComparator;
 import org.apache.james.mime4j.MimeException;
 import org.apache.james.mime4j.field.address.Address;
 import org.apache.james.mime4j.field.address.AddressList;
@@ -52,27 +56,41 @@ import org.apache.james.mime4j.field.dat
 import org.apache.james.mime4j.field.datetime.parser.DateTimeParser;
 import org.apache.james.mime4j.field.datetime.parser.ParseException;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Uility methods to help perform search operations.
  */
-public class MessageSearches {
+public class MessageSearches implements Iterable<Long>{
 
-    private Logger log;
+    private Collection<Long> uids;
 
-    private boolean isCustomLog = false;
-
-    public final Logger getLog() {
-        if (log == null) {
-            log = LoggerFactory.getLogger(MessageSearches.class);
-        }
-        return log;
+    
+    public MessageSearches(Iterator<Message<?>> messages, SearchQuery query) {
+        this(messages, query, null);
     }
-
-    public final void setLog(Logger log) {
-        isCustomLog = true;
-        this.log = log;
+    
+    public MessageSearches(Iterator<Message<?>> messages, SearchQuery query, Logger log) {
+        uids = search(query, messages, log);
+    }
+    
+    private static Collection<Long> search(SearchQuery query, Iterator<Message<?>> messages, Logger log) {
+        TreeSet<Message<?>> matched = new TreeSet<Message<?>>(CombinedComparator.create(query.getSorts()));
+        while (messages.hasNext()) {
+            Message<?> m = messages.next();
+            try {
+                if (isMatch(query, m, log)) {
+                    matched.add(m);
+                }
+            } catch (MailboxException e) {
+                log.debug("Unable to search message " + m.getUid(), e);
+            }
+        }
+        Set<Long> uids = new HashSet<Long>();
+        Iterator<Message<?>> matchedIt = matched.iterator();
+        while(matchedIt.hasNext()) {
+            uids.add(matchedIt.next().getUid());
+        }
+        return uids;
     }
 
     /**
@@ -85,7 +103,7 @@ public class MessageSearches {
      * @return true if the row matches the given criteria, false otherwise
      * @throws MailboxException 
      */
-    public boolean isMatch(final SearchQuery query, final Message<?> message)
+    public static boolean isMatch(final SearchQuery query, final Message<?> message, Logger log)
             throws MailboxException {
         final List<SearchQuery.Criterion> criteria = query.getCriterias();
         final Collection<Long> recentMessageUids = query.getRecentMessageUids();
@@ -93,7 +111,7 @@ public class MessageSearches {
         if (criteria != null) {
             for (Iterator<SearchQuery.Criterion> it = criteria.iterator(); it.hasNext();) {
                 final SearchQuery.Criterion criterion = it.next();
-                if (!isMatch(criterion, message, recentMessageUids)) {
+                if (!isMatch(criterion, message, recentMessageUids, log)) {
                     result = false;
                     break;
                 }
@@ -112,15 +130,15 @@ public class MessageSearches {
      * @return true if the row matches the given criterion, false otherwise
      * @throws MailboxException 
      */
-    public boolean isMatch(SearchQuery.Criterion criterion, Message<?> message,
-            final Collection<Long> recentMessageUids) throws MailboxException {
+    public static boolean isMatch(SearchQuery.Criterion criterion, Message<?> message,
+            final Collection<Long> recentMessageUids, Logger log) throws MailboxException {
         final boolean result;
         if (criterion instanceof SearchQuery.InternalDateCriterion) {
             result = matches((SearchQuery.InternalDateCriterion) criterion, message);
         } else if (criterion instanceof SearchQuery.SizeCriterion) {
             result = matches((SearchQuery.SizeCriterion) criterion, message);
         } else if (criterion instanceof SearchQuery.HeaderCriterion) {
-            result = matches((SearchQuery.HeaderCriterion) criterion, message);
+            result = matches((SearchQuery.HeaderCriterion) criterion, message, log);
         } else if (criterion instanceof SearchQuery.UidCriterion) {
             result = matches((SearchQuery.UidCriterion) criterion, message);
         } else if (criterion instanceof SearchQuery.FlagCriterion) {
@@ -130,12 +148,12 @@ public class MessageSearches {
             result = matches((SearchQuery.CustomFlagCriterion) criterion, message,
                     recentMessageUids);
         } else if (criterion instanceof SearchQuery.TextCriterion) {
-            result = matches((SearchQuery.TextCriterion) criterion, message);
+            result = matches((SearchQuery.TextCriterion) criterion, message, log);
         } else if (criterion instanceof SearchQuery.AllCriterion) {
             result = true;
         } else if (criterion instanceof SearchQuery.ConjunctionCriterion) {
             result = matches((SearchQuery.ConjunctionCriterion) criterion, message,
-                    recentMessageUids);
+                    recentMessageUids, log);
         } else if (criterion instanceof SearchQuery.ModSeqCriterion) {
             result = matches((SearchQuery.ModSeqCriterion) criterion, message); 
         } else {
@@ -144,16 +162,16 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean matches(SearchQuery.TextCriterion criterion, Message<?> message) throws MailboxException  {
+    private static boolean matches(SearchQuery.TextCriterion criterion, Message<?> message, Logger log) throws MailboxException  {
         try {
             final SearchQuery.ContainsOperator operator = criterion
                     .getOperator();
             final String value = operator.getValue();
             switch (criterion.getType()) {
                 case BODY:
-                    return bodyContains(value, message);
+                    return bodyContains(value, message, log);
                 case FULL:
-                    return messageContains(value, message);
+                    return messageContains(value, message, log);
                 default:
                     throw new UnsupportedSearchException();
             }
@@ -164,52 +182,52 @@ public class MessageSearches {
         }
     }
 
-    private boolean bodyContains(String value, Message<?> message)
+    private static boolean bodyContains(String value, Message<?> message, Logger log)
             throws IOException, MimeException {
         final InputStream input = ResultUtils.toInput(message);
-        final boolean result = isInMessage(value, input, false);
+        final boolean result = isInMessage(value, input, false, log);
         return result;
     }
 
-    private boolean isInMessage(String value, final InputStream input,
-            boolean header) throws IOException, MimeException {
+    private static boolean isInMessage(String value, final InputStream input,
+            boolean header, Logger log) throws IOException, MimeException {
         final MessageSearcher searcher = new MessageSearcher(value, true,
                 header);
-        if (isCustomLog) {
+        if (log != null) {
             searcher.setLogger(log);
         }
         final boolean result = searcher.isFoundIn(input);
         return result;
     }
 
-    private boolean messageContains(String value, Message<?> message)
+    private static boolean messageContains(String value, Message<?> message, Logger log)
             throws IOException, MimeException {
         final InputStream input = ResultUtils.toInput(message);
-        final boolean result = isInMessage(value, input, true);
+        final boolean result = isInMessage(value, input, true, log);
         return result;
     }
 
-    private boolean matches(SearchQuery.ConjunctionCriterion criterion,
-            Message<?> message, final Collection<Long> recentMessageUids) throws MailboxException {
+    private static boolean matches(SearchQuery.ConjunctionCriterion criterion,
+            Message<?> message, final Collection<Long> recentMessageUids, Logger log) throws MailboxException {
         final List<SearchQuery.Criterion> criteria = criterion.getCriteria();
         switch (criterion.getType()) {
             case NOR:
-                return nor(criteria, message, recentMessageUids);
+                return nor(criteria, message, recentMessageUids, log);
             case OR:
-                return or(criteria, message, recentMessageUids);
+                return or(criteria, message, recentMessageUids, log);
             case AND:
-                return and(criteria, message, recentMessageUids);
+                return and(criteria, message, recentMessageUids, log);
             default:
                 return false;
         }
     }
 
-    private boolean and(final List<SearchQuery.Criterion> criteria, final Message<?> message, 
-            final Collection<Long> recentMessageUids) throws MailboxException {
+    private static boolean and(final List<SearchQuery.Criterion> criteria, final Message<?> message, 
+            final Collection<Long> recentMessageUids, Logger log) throws MailboxException {
         boolean result = true;
         for (Iterator<SearchQuery.Criterion> it = criteria.iterator(); it.hasNext();) {
             final SearchQuery.Criterion criterion = it.next();
-            final boolean matches = isMatch(criterion, message, recentMessageUids);
+            final boolean matches = isMatch(criterion, message, recentMessageUids, log);
             if (!matches) {
                 result = false;
                 break;
@@ -218,12 +236,12 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean or(final List<SearchQuery.Criterion> criteria, final Message<?> message,
-            final Collection<Long> recentMessageUids) throws MailboxException {
+    private static boolean or(final List<SearchQuery.Criterion> criteria, final Message<?> message,
+            final Collection<Long> recentMessageUids, Logger log) throws MailboxException {
         boolean result = false;
         for (Iterator<SearchQuery.Criterion> it = criteria.iterator(); it.hasNext();) {
             final SearchQuery.Criterion criterion = it.next();
-            final boolean matches = isMatch(criterion, message, recentMessageUids);
+            final boolean matches = isMatch(criterion, message, recentMessageUids, log);
             if (matches) {
                 result = true;
                 break;
@@ -232,12 +250,12 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean nor(final List<SearchQuery.Criterion> criteria, final Message<?> message,
-            final Collection<Long> recentMessageUids) throws MailboxException {
+    private static boolean nor(final List<SearchQuery.Criterion> criteria, final Message<?> message,
+            final Collection<Long> recentMessageUids, Logger log) throws MailboxException {
         boolean result = true;
         for (Iterator<SearchQuery.Criterion> it = criteria.iterator(); it.hasNext();) {
             final SearchQuery.Criterion criterion =  it.next();
-            final boolean matches = isMatch(criterion, message, recentMessageUids);
+            final boolean matches = isMatch(criterion, message, recentMessageUids, log);
             if (matches) {
                 result = false;
                 break;
@@ -246,7 +264,7 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean matches(SearchQuery.FlagCriterion criterion,
+    private static boolean matches(SearchQuery.FlagCriterion criterion,
             Message<?> message, final Collection<Long> recentMessageUids) {
         final SearchQuery.BooleanOperator operator = criterion.getOperator();
         final boolean isSet = operator.isSet();
@@ -271,7 +289,7 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean matches(SearchQuery.CustomFlagCriterion criterion,
+    private static boolean matches(SearchQuery.CustomFlagCriterion criterion,
             Message<?> message, final Collection<Long> recentMessageUids) {
         final SearchQuery.BooleanOperator operator = criterion.getOperator();
         final boolean isSet = operator.isSet();
@@ -279,7 +297,7 @@ public class MessageSearches {
         final boolean result = isSet == message.createFlags().contains(flag);
         return result;
     }
-    private boolean matches(SearchQuery.UidCriterion criterion, Message<?> message) {
+    private static boolean matches(SearchQuery.UidCriterion criterion, Message<?> message) {
         final SearchQuery.InOperator operator = criterion.getOperator();
         final NumericRange[] ranges = operator.getRange();
         final long uid = message.getUid();
@@ -295,7 +313,7 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean matches(SearchQuery.HeaderCriterion criterion, Message<?> message) throws UnsupportedSearchException {
+    private static boolean matches(SearchQuery.HeaderCriterion criterion, Message<?> message, Logger log) throws UnsupportedSearchException {
         final SearchQuery.HeaderOperator operator = criterion.getOperator();
         final String headerName = criterion.getHeaderName();
         final boolean result;
@@ -306,7 +324,7 @@ public class MessageSearches {
         } else if (operator instanceof SearchQuery.ExistsOperator) {
             result = exists(headerName, message);
         } else if (operator instanceof SearchQuery.AddressOperator) {
-            result = matchesAddress((SearchQuery.AddressOperator) operator, headerName, message);
+            result = matchesAddress((SearchQuery.AddressOperator) operator, headerName, message, log);
         } else {
             throw new UnsupportedSearchException();
         }
@@ -321,8 +339,8 @@ public class MessageSearches {
      * @param message
      * @return containsAddress
      */
-    private boolean matchesAddress(final SearchQuery.AddressOperator operator,
-            final String headerName, final Message<?> message) {
+    private static boolean matchesAddress(final SearchQuery.AddressOperator operator,
+            final String headerName, final Message<?> message, Logger log) {
         final String text = operator.getAddress().toLowerCase(Locale.US);
         final List<Header> headers = message.getHeaders();
         for (Header header:headers) {
@@ -357,7 +375,7 @@ public class MessageSearches {
         return false;
     }
     
-    private boolean exists(String headerName, Message<?> message) {
+    private static boolean exists(String headerName, Message<?> message) {
         boolean result = false;
         final List<Header> headers = message.getHeaders();
         for (Header header:headers) {
@@ -370,7 +388,7 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean matches(final SearchQuery.ContainsOperator operator,
+    private static boolean matches(final SearchQuery.ContainsOperator operator,
             final String headerName, final Message<?> message) {
         final String text = operator.getValue().toUpperCase();
         boolean result = false;
@@ -390,7 +408,7 @@ public class MessageSearches {
         return result;
     }
 
-    private boolean matches(final SearchQuery.DateOperator operator,
+    private static boolean matches(final SearchQuery.DateOperator operator,
             final String headerName, final Message<?> message) throws UnsupportedSearchException {
        
         final Date date = operator.getDate();
@@ -418,7 +436,7 @@ public class MessageSearches {
         }
     }
 
-    private String headerValue(final String headerName, final Message<?> message) {
+    private static String headerValue(final String headerName, final Message<?> message) {
         final List<Header> headers = message.getHeaders();
         String value = null;
         for (Header header:headers) {
@@ -431,7 +449,7 @@ public class MessageSearches {
         return value;
     }
 
-    private Date toISODate(String value) throws ParseException {
+    private static Date toISODate(String value) throws ParseException {
         final StringReader reader = new StringReader(value);
         final DateTime dateTime = new DateTimeParser(reader).parseAll();
         Calendar cal = getGMT();
@@ -439,7 +457,7 @@ public class MessageSearches {
         return cal.getTime();
     }
 
-    private boolean matches(SearchQuery.SizeCriterion criterion, Message<?> message)
+    private static boolean matches(SearchQuery.SizeCriterion criterion, Message<?> message)
             throws UnsupportedSearchException {
         final SearchQuery.NumericOperator operator = criterion.getOperator();
         final long size = message.getFullContentOctets();
@@ -456,7 +474,7 @@ public class MessageSearches {
         }
     }
 
-    private boolean matches(SearchQuery.ModSeqCriterion criterion, Message<?> message) throws UnsupportedSearchException {
+    private static boolean matches(SearchQuery.ModSeqCriterion criterion, Message<?> message) throws UnsupportedSearchException {
         final SearchQuery.NumericOperator operator = criterion.getOperator();
         final long modSeq = message.getModSeq();
         final long value = operator.getValue();
@@ -472,14 +490,14 @@ public class MessageSearches {
         }
     }
 
-    private boolean matches(SearchQuery.InternalDateCriterion criterion,
+    private static boolean matches(SearchQuery.InternalDateCriterion criterion,
             Message<?> message) throws UnsupportedSearchException {
         final SearchQuery.DateOperator operator = criterion.getOperator();
         final boolean result = matchesInternalDate(operator, message);
         return result;
     }
 
-    private boolean matchesInternalDate(
+    private static boolean matchesInternalDate(
             final SearchQuery.DateOperator operator, final Message<?> message)
             throws UnsupportedSearchException {
         final Date date = operator.getDate();
@@ -499,14 +517,14 @@ public class MessageSearches {
     }
 
 
-    private boolean on(Date date1,
+    private static boolean on(Date date1,
             final Date date2, DateResolution res) {      
         String d1 = createDateString(date1, res);
         String d2 = createDateString(date2, res);
         return d1.compareTo(d2) == 0;   
     }
 
-    private boolean before(Date date1,
+    private static boolean before(Date date1,
             final Date date2, DateResolution res) {
         String d1 = createDateString(date1, res);
         String d2 = createDateString(date2, res);
@@ -514,7 +532,7 @@ public class MessageSearches {
         return d1.compareTo(d2) < 0;
     }
 
-    private boolean after(Date date1,
+    private static boolean after(Date date1,
             final Date date2, DateResolution res) {
         String d1 = createDateString(date1, res);
         String d2 = createDateString(date2, res);
@@ -524,7 +542,7 @@ public class MessageSearches {
 
 
     
-    private String createDateString(Date date, DateResolution res) {
+    private static String createDateString(Date date, DateResolution res) {
         SimpleDateFormat format;
         switch (res) {
         case Year:
@@ -555,8 +573,17 @@ public class MessageSearches {
     }
     
 
-    private Calendar getGMT() {
+    private static Calendar getGMT() {
         return Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.UK);
     }
+
+
+    /**
+     * Return a {@link Iterator} which holds all uids which matched, sorted according to the SearchQuery
+     * 
+     */
+    public Iterator<Long> iterator() {
+        return uids.iterator();
+    }
     
 }

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java?rev=1131466&r1=1131465&r2=1131466&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java Sat Jun  4 18:58:51 2011
@@ -52,7 +52,7 @@ public class CombinedComparator implemen
     }
     
     @SuppressWarnings("unchecked")
-    public Comparator<Message<?>> create(List<Sort> sorts) {
+    public static Comparator<Message<?>> create(List<Sort> sorts) {
         List<Comparator<?>> comps = new ArrayList<Comparator<?>>();
         for (int i = 0; i < sorts.size(); i++) {
             Sort sort = sorts.get(i);

Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsMultipartMixedTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsMultipartMixedTest.java?rev=1131466&r1=1131465&r2=1131466&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsMultipartMixedTest.java (original)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsMultipartMixedTest.java Sat Jun  4 18:58:51 2011
@@ -30,6 +30,8 @@ import org.apache.james.mailbox.store.ma
 import org.apache.james.mailbox.store.search.MessageSearches;
 import org.junit.Before;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class SearchUtilsMultipartMixedTest {
 
@@ -107,10 +109,9 @@ public class SearchUtilsMultipartMixedTe
 
     Message<Long> row;
 
-    MessageSearches searches;
 
     Collection<Long> recent;
-
+    private Logger log = LoggerFactory.getLogger(this.getClass());
     @Before
     public void setUp() throws Exception {
         final MessageBuilder builder = new MessageBuilder();
@@ -122,102 +123,101 @@ public class SearchUtilsMultipartMixedTe
         builder.header("Content-Type", "multipart/mixed;boundary=1729");
         builder.body = Charset.forName("us-ascii").encode(BODY).array();
         row = builder.build();
-        searches = new MessageSearches();
         recent = new ArrayList<Long>();
     }
     
 
     @Test
     public void testShouldNotFindWhatIsNotThere() throws Exception {
-        assertFalse(searches.isMatch(SearchQuery.bodyContains("BOGUS"), row,
-                recent));
-        assertFalse(searches.isMatch(SearchQuery.mailContains("BOGUS"), row,
-                recent));
+        assertFalse(MessageSearches.isMatch(SearchQuery.bodyContains("BOGUS"), row,
+                recent, log));
+        assertFalse(MessageSearches.isMatch(SearchQuery.mailContains("BOGUS"), row,
+                recent, log));
     }
 
     @Test
     public void testBodyShouldFindTextInBody() throws Exception {
-        assertTrue(searches.isMatch(SearchQuery
-                .bodyContains(SAMPLE_INNER_MAIL_BODY_ONE), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_ONE),
-                row, recent));
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_TWO),
-                row, recent));
+        assertTrue(MessageSearches.isMatch(SearchQuery
+                .bodyContains(SAMPLE_INNER_MAIL_BODY_ONE), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_ONE),
+                row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_TWO),
+                row, recent, log));
     }
 
     @Test
     public void testBodyShouldFindTextInBodyCaseInsensitive() throws Exception {
-        assertTrue(searches.isMatch(SearchQuery
-                .bodyContains(SAMPLE_INNER_MAIL_BODY_ONE), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_ONE),
-                row, recent));
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_TWO),
-                row, recent));
-        assertTrue(searches.isMatch(SearchQuery
+        assertTrue(MessageSearches.isMatch(SearchQuery
+                .bodyContains(SAMPLE_INNER_MAIL_BODY_ONE), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_ONE),
+                row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_TWO),
+                row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery
                 .bodyContains(SAMPLE_INNER_MAIL_BODY_ONE.toLowerCase()), row,
-                recent));
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_ONE
-                .toLowerCase()), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_TWO
-                .toLowerCase()), row, recent));
-        assertTrue(searches.isMatch(SearchQuery
+                recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_ONE
+                .toLowerCase()), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_TWO
+                .toLowerCase()), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery
                 .bodyContains(SAMPLE_INNER_MAIL_BODY_ONE.toUpperCase()), row,
-                recent));
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_ONE
-                .toUpperCase()), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_TWO
-                .toUpperCase()), row, recent));
+                recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_ONE
+                .toUpperCase()), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(SAMPLE_PART_TWO
+                .toUpperCase()), row, recent, log));
     }
 
     @Test
     public void testBodyShouldNotFindTextInHeaders() throws Exception {
-        assertFalse(searches.isMatch(SearchQuery
-                .bodyContains(SAMPLE_INNER_MAIL_FIELD), row, recent));
-        assertFalse(searches.isMatch(SearchQuery
-                .bodyContains(SAMPLE_PART_TWO_FIELD), row, recent));
+        assertFalse(MessageSearches.isMatch(SearchQuery
+                .bodyContains(SAMPLE_INNER_MAIL_FIELD), row, recent, log));
+        assertFalse(MessageSearches.isMatch(SearchQuery
+                .bodyContains(SAMPLE_PART_TWO_FIELD), row, recent, log));
     }
 
     @Test
     public void testTextShouldFindTextInBody() throws Exception {
-        assertTrue(searches.isMatch(SearchQuery
-                .mailContains(SAMPLE_INNER_MAIL_BODY_ONE), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.mailContains(SAMPLE_PART_ONE),
-                row, recent));
-        assertTrue(searches.isMatch(SearchQuery.mailContains(SAMPLE_PART_TWO),
-                row, recent));
+        assertTrue(MessageSearches.isMatch(SearchQuery
+                .mailContains(SAMPLE_INNER_MAIL_BODY_ONE), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(SAMPLE_PART_ONE),
+                row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(SAMPLE_PART_TWO),
+                row, recent, log));
     }
 
     @Test
     public void testTextShouldFindTextInBodyCaseInsensitive() throws Exception {
-        assertTrue(searches.isMatch(SearchQuery
-                .mailContains(SAMPLE_INNER_MAIL_BODY_ONE), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.mailContains(SAMPLE_PART_ONE),
-                row, recent));
-        assertTrue(searches.isMatch(SearchQuery.mailContains(SAMPLE_PART_TWO),
-                row, recent));
-        assertTrue(searches.isMatch(SearchQuery
+        assertTrue(MessageSearches.isMatch(SearchQuery
+                .mailContains(SAMPLE_INNER_MAIL_BODY_ONE), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(SAMPLE_PART_ONE),
+                row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(SAMPLE_PART_TWO),
+                row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery
                 .mailContains(SAMPLE_INNER_MAIL_BODY_ONE.toLowerCase()), row,
-                recent));
-        assertTrue(searches.isMatch(SearchQuery.mailContains(SAMPLE_PART_ONE
-                .toLowerCase()), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.mailContains(SAMPLE_PART_TWO
-                .toLowerCase()), row, recent));
-        assertTrue(searches.isMatch(SearchQuery
+                recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(SAMPLE_PART_ONE
+                .toLowerCase()), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(SAMPLE_PART_TWO
+                .toLowerCase()), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery
                 .mailContains(SAMPLE_INNER_MAIL_BODY_ONE.toUpperCase()), row,
-                recent));
-        assertTrue(searches.isMatch(SearchQuery.mailContains(SAMPLE_PART_ONE
-                .toUpperCase()), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.mailContains(SAMPLE_PART_TWO
-                .toUpperCase()), row, recent));
+                recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(SAMPLE_PART_ONE
+                .toUpperCase()), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(SAMPLE_PART_TWO
+                .toUpperCase()), row, recent, log));
     }
 
     @Test
     public void testTextShouldFindTextInHeaders() throws Exception {
-        assertTrue(searches.isMatch(SearchQuery
-                .mailContains(SAMPLE_INNER_MAIL_FIELD), row, recent));
-        assertTrue(searches.isMatch(SearchQuery
-                .mailContains(SAMPLE_INNER_MAIL_BODY_ONE), row, recent));
-        assertTrue(searches.isMatch(SearchQuery
-                .mailContains(SAMPLE_PART_TWO_FIELD), row, recent));
+        assertTrue(MessageSearches.isMatch(SearchQuery
+                .mailContains(SAMPLE_INNER_MAIL_FIELD), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery
+                .mailContains(SAMPLE_INNER_MAIL_BODY_ONE), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery
+                .mailContains(SAMPLE_PART_TWO_FIELD), row, recent, log));
     }
 }

Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsRFC822Test.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsRFC822Test.java?rev=1131466&r1=1131465&r2=1131466&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsRFC822Test.java (original)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SearchUtilsRFC822Test.java Sat Jun  4 18:58:51 2011
@@ -30,6 +30,8 @@ import org.apache.james.mailbox.store.ma
 import org.apache.james.mailbox.store.search.MessageSearches;
 import org.junit.Before;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class SearchUtilsRFC822Test {
 
@@ -47,8 +49,7 @@ public class SearchUtilsRFC822Test {
 
     Message<Long> row;
 
-    MessageSearches searches;
-
+    private Logger log = LoggerFactory.getLogger(getClass());
     Collection<Long> recent;
 
     @Before
@@ -61,59 +62,58 @@ public class SearchUtilsRFC822Test {
         builder.header("Date", "Thu, 14 Feb 2008 12:00:00 +0000 (GMT)");
         builder.body = Charset.forName("us-ascii").encode(BODY).array();
         row = builder.build();
-        searches = new MessageSearches();
     }
 
 
     @Test
     public void testBodyShouldMatchPhraseInBody() throws Exception {
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(CUSTARD), row,
-                recent));
-        assertFalse(searches.isMatch(SearchQuery
-                .bodyContains(CUSTARD + CUSTARD), row, recent));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(CUSTARD), row,
+                recent, log));
+        assertFalse(MessageSearches.isMatch(SearchQuery
+                .bodyContains(CUSTARD + CUSTARD), row, recent, log));
     }
 
     @Test
     public void testBodyMatchShouldBeCaseInsensitive() throws Exception {
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(RHUBARD), row,
-                recent));
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(RHUBARD
-                .toLowerCase()), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.bodyContains(RHUBARD
-                .toLowerCase()), row, recent));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(RHUBARD), row,
+                recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(RHUBARD
+                .toLowerCase()), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.bodyContains(RHUBARD
+                .toLowerCase()), row, recent, log));
     }
 
     @Test
     public void testBodyShouldNotMatchPhraseOnlyInHeader() throws Exception {
-        assertFalse(searches.isMatch(SearchQuery.bodyContains(FROM_ADDRESS),
-                row, recent));
-        assertFalse(searches.isMatch(SearchQuery.bodyContains(SUBJECT_PART),
-                row, recent));
+        assertFalse(MessageSearches.isMatch(SearchQuery.bodyContains(FROM_ADDRESS),
+                row, recent, log));
+        assertFalse(MessageSearches.isMatch(SearchQuery.bodyContains(SUBJECT_PART),
+                row, recent, log));
     }
 
     @Test
     public void testTextShouldMatchPhraseInBody() throws Exception {
-        assertTrue(searches.isMatch(SearchQuery.mailContains(CUSTARD), row,
-                recent));
-        assertFalse(searches.isMatch(SearchQuery
-                .mailContains(CUSTARD + CUSTARD), row, recent));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(CUSTARD), row,
+                recent, log));
+        assertFalse(MessageSearches.isMatch(SearchQuery
+                .mailContains(CUSTARD + CUSTARD), row, recent, log));
     }
 
     @Test
     public void testTextMatchShouldBeCaseInsensitive() throws Exception {
-        assertTrue(searches.isMatch(SearchQuery.mailContains(RHUBARD), row,
-                recent));
-        assertTrue(searches.isMatch(SearchQuery.mailContains(RHUBARD
-                .toLowerCase()), row, recent));
-        assertTrue(searches.isMatch(SearchQuery.mailContains(RHUBARD
-                .toLowerCase()), row, recent));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(RHUBARD), row,
+                recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(RHUBARD
+                .toLowerCase()), row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(RHUBARD
+                .toLowerCase()), row, recent, log));
     }
 
     @Test
     public void testBodyShouldMatchPhraseOnlyInHeader() throws Exception {
-        assertTrue(searches.isMatch(SearchQuery.mailContains(FROM_ADDRESS),
-                row, recent));
-        assertTrue(searches.isMatch(SearchQuery.mailContains(SUBJECT_PART),
-                row, recent));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(FROM_ADDRESS),
+                row, recent, log));
+        assertTrue(MessageSearches.isMatch(SearchQuery.mailContains(SUBJECT_PART),
+                row, recent, log));
     }
 }



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