Author: norman
Date: Wed Jan 12 15:07:55 2011
New Revision: 1058172

URL: http://svn.apache.org/viewvc?rev=1058172&view=rev
Log:
Merge IdRanges whenever possible to avoid not needed queries. See IMAP-211

Added:
    
james/imap/trunk/api/src/test/java/org/apache/james/imap/api/IdRangeTest.java
Modified:
    
james/imap/trunk/api/src/main/java/org/apache/james/imap/api/message/IdRange.java
    
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java
    
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserAndParenthesesTest.java
    
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserNotTest.java
    
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserOrTest.java
    
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserSearchKeySequenceSetTest.java
    
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserTopLevelAndTest.java
    
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
    
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
    
james/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java

Modified: 
james/imap/trunk/api/src/main/java/org/apache/james/imap/api/message/IdRange.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/api/src/main/java/org/apache/james/imap/api/message/IdRange.java?rev=1058172&r1=1058171&r2=1058172&view=diff
==============================================================================
--- 
james/imap/trunk/api/src/main/java/org/apache/james/imap/api/message/IdRange.java
 (original)
+++ 
james/imap/trunk/api/src/main/java/org/apache/james/imap/api/message/IdRange.java
 Wed Jan 12 15:07:55 2011
@@ -19,6 +19,11 @@
 
 package org.apache.james.imap.api.message;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
 /**
  * Represents a range of UID or MSN values.
  */
@@ -34,6 +39,7 @@ public class IdRange {
     }
 
     public IdRange(long lowVal, long highVal) {
+        if (lowVal > highVal) throw new IllegalArgumentException("LowVal must 
be <= HighVal");
         _lowVal = lowVal;
         _highVal = highVal;
     }
@@ -45,6 +51,16 @@ public class IdRange {
     public long getHighVal() {
         return _highVal;
     }
+    
+    public void setLowVal(long lowVal) {
+        if (lowVal > _highVal) throw new IllegalArgumentException("LowVal must 
be <= HighVal");
+        _lowVal = lowVal;
+    }
+    
+    public void setHighVal(long highVal) {
+        if (_lowVal > highVal) throw new IllegalArgumentException("LowVal must 
be <= HighVal");
+        _highVal = highVal;
+    }
 
     /**
      * Return true if the {...@link IdRange} includes the given value
@@ -96,5 +112,43 @@ public class IdRange {
 
         return retValue;
     }
+    
+    /**
+     * Utility method which will copy the given {...@link List} and try to 
merge the
+     * {...@link IdRange} in the copy before return it.
+     * 
+     * 
+     * @param ranges
+     * @return mergedRanges
+     */
+    public static List<IdRange> mergeRanges(final List<IdRange> ranges) {
+        List<IdRange> copy = new ArrayList<IdRange>(ranges);
+        Collections.sort(copy, IdRangeComperator.INSTANCE);
+       
+        for (int i = 0; i < copy.size() -1; i++) {
+            IdRange current = copy.get(i);
+            IdRange next = copy.get(i +1);
+            if (current.getHighVal() >= next.getLowVal() -1) {
+                if (next.getHighVal() > current.getHighVal()) {
+                    current.setHighVal(next.getHighVal());
+                }
+                // remove the merged id range and decrease the count
+                copy.remove(next);
+                i--;
+            }
+        }
+        return copy;
+
+    }
+
+    private static class IdRangeComperator implements Comparator<IdRange> {
+
+        private static IdRangeComperator INSTANCE = new IdRangeComperator();
+
+        public int compare(IdRange range1, IdRange range2) {
+            return (int) (range1.getLowVal() - range2.getLowVal());
+        }
+
+    }
 
 }

Added: 
james/imap/trunk/api/src/test/java/org/apache/james/imap/api/IdRangeTest.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/api/src/test/java/org/apache/james/imap/api/IdRangeTest.java?rev=1058172&view=auto
==============================================================================
--- 
james/imap/trunk/api/src/test/java/org/apache/james/imap/api/IdRangeTest.java 
(added)
+++ 
james/imap/trunk/api/src/test/java/org/apache/james/imap/api/IdRangeTest.java 
Wed Jan 12 15:07:55 2011
@@ -0,0 +1,130 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.imap.api;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import static org.junit.Assert.*;
+
+import org.apache.james.imap.api.message.IdRange;
+import org.junit.Test;
+
+public class IdRangeTest {
+
+    @Test
+    public void testNotMerge() {
+        IdRange r = new IdRange(0, 2);
+        IdRange r2 = new IdRange(4, 5);
+        IdRange r3 = new IdRange(7, 10);
+        
+        List<IdRange> ranges = new ArrayList<IdRange>();
+        ranges.add(r);
+        ranges.add(r2);
+        ranges.add(r3);
+        
+        List<IdRange> merged = IdRange.mergeRanges(ranges);
+        assertEquals(3, merged.size());
+        Iterator<IdRange> rIt = merged.iterator();
+        checkIdRange(r,rIt.next());
+        checkIdRange(r2,rIt.next());
+        checkIdRange(r3,rIt.next());
+        assertFalse(rIt.hasNext());
+    }
+
+
+    @Test
+    public void testMerge() {
+        IdRange r = new IdRange(0, 2);
+        IdRange r2 = new IdRange(1, 4);
+        IdRange r3 = new IdRange(6, 7);
+        
+        List<IdRange> ranges = new ArrayList<IdRange>();
+        ranges.add(r);
+        ranges.add(r2);
+        ranges.add(r3);
+        
+        List<IdRange> merged = IdRange.mergeRanges(ranges);
+        assertEquals(2, merged.size());
+        Iterator<IdRange> rIt = merged.iterator();
+        checkIdRange(new IdRange(0, 4),rIt.next());
+        checkIdRange(r3,rIt.next());
+        assertFalse(rIt.hasNext());
+    }
+    
+
+    @Test
+    public void testMerge2() {
+        IdRange r = new IdRange(0, 10);
+        IdRange r2 = new IdRange(1, 4);
+        IdRange r3 = new IdRange(5, 7);
+        
+        List<IdRange> ranges = new ArrayList<IdRange>();
+        ranges.add(r);
+        ranges.add(r2);
+        ranges.add(r3);
+        
+        List<IdRange> merged = IdRange.mergeRanges(ranges);
+        assertEquals(1, merged.size());
+        Iterator<IdRange> rIt = merged.iterator();
+        checkIdRange(new IdRange(0, 10),rIt.next());
+        assertFalse(rIt.hasNext());
+    }
+    
+    @Test
+    public void testMerge3() {
+        IdRange r = new IdRange(0, 10);
+        IdRange r2 = new IdRange(1, 4);
+        IdRange r3 = new IdRange(10, 15);
+        
+        List<IdRange> ranges = new ArrayList<IdRange>();
+        ranges.add(r);
+        ranges.add(r2);
+        ranges.add(r3);
+        
+        List<IdRange> merged = IdRange.mergeRanges(ranges);
+        assertEquals(1, merged.size());
+        Iterator<IdRange> rIt = merged.iterator();
+        checkIdRange(new IdRange(0, 15),rIt.next());
+        assertFalse(rIt.hasNext());
+    }
+    
+    @Test
+    public void testMerge4() {
+        IdRange r = new IdRange(0, 1);
+        IdRange r2 = new IdRange(1, 1);
+        IdRange r3 = new IdRange(2, 2);
+        
+        List<IdRange> ranges = new ArrayList<IdRange>();
+        ranges.add(r);
+        ranges.add(r2);
+        ranges.add(r3);
+        
+        List<IdRange> merged = IdRange.mergeRanges(ranges);
+        assertEquals(1, merged.size());
+        Iterator<IdRange> rIt = merged.iterator();
+        checkIdRange(new IdRange(0, 2),rIt.next());
+        assertFalse(rIt.hasNext());
+    }
+    
+    private void checkIdRange(IdRange r1, IdRange r2) {
+        assertEquals(r1.getLowVal(), r2.getLowVal());
+        assertEquals(r1.getHighVal(), r2.getHighVal());
+    }
+}

Modified: 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java?rev=1058172&r1=1058171&r2=1058172&view=diff
==============================================================================
--- 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java
 (original)
+++ 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/base/AbstractImapCommandParser.java
 Wed Jan 12 15:07:55 2011
@@ -33,6 +33,7 @@ import java.nio.charset.MalformedInputEx
 import java.nio.charset.UnmappableCharacterException;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 import javax.mail.Flags;
 
@@ -63,7 +64,7 @@ public abstract class AbstractImapComman
     private static final int QUOTED_BUFFER_INITIAL_CAPACITY = 64;
 
     private static final Charset US_ASCII = Charset.forName("US-ASCII");
-
+    
     private final ImapCommand command;
 
     private ImapMessageFactory messageFactory;
@@ -590,9 +591,14 @@ public abstract class AbstractImapComman
         }
         String range = nextWord.substring(pos);
         rangeList.add(parseRange(range));
-        return (IdRange[]) rangeList.toArray(new IdRange[rangeList.size()]);
+        
+        // merge the ranges to minimize the needed queries.
+        // See IMAP-211
+        List<IdRange> merged = IdRange.mergeRanges(rangeList);
+        return (IdRange[]) merged.toArray(new IdRange[merged.size()]);
     }
 
+    
     /**
      * Parse a range which use a ":" as delimiter
      * 
@@ -607,15 +613,16 @@ public abstract class AbstractImapComman
                 long value = parseUnsignedInteger(range);
                 return new IdRange(value);
             } else {
-               
-               // Make sure we detect the low and high value 
-               // See https://issues.apache.org/jira/browse/IMAP-212
+                // Make sure we detect the low and high value
+                // See https://issues.apache.org/jira/browse/IMAP-212
                 long val1 = parseUnsignedInteger(range.substring(0, pos));
                 long val2 = parseUnsignedInteger(range.substring(pos + 1));
-                if (val1 <= val2 || val1 == Long.MAX_VALUE) {
-                       return new IdRange(val1, val2);
+                if (val1 <= val2) {
+                    return new IdRange(val1, val2);
+                } else if(val1 == Long.MAX_VALUE) {
+                    return new IdRange(Long.MIN_VALUE, val2);
                 } else {
-                       return new IdRange(val2, val1);
+                    return new IdRange(val2, val1);
                 }
             }
         } catch (NumberFormatException e) {
@@ -627,10 +634,10 @@ public abstract class AbstractImapComman
         if (value.length() == 1 && value.charAt(0) == '*') {
             return Long.MAX_VALUE;
         } else {
-               long number = Long.parseLong(value);
-               if (number < ImapConstants.MIN_NZ_NUMBER || number > 
ImapConstants.MAX_NZ_NUMBER) throw new 
DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "Invalid message set. 
Numbers must be unsigned 32-bit Integers");
-               return number;
-               
+            long number = Long.parseLong(value);
+            if (number < ImapConstants.MIN_NZ_NUMBER || number > 
ImapConstants.MAX_NZ_NUMBER) throw new 
DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "Invalid message set. 
Numbers must be unsigned 32-bit Integers");
+            return number;
+        
         }
     }
 
@@ -793,4 +800,5 @@ public abstract class AbstractImapComman
             charBuffer.put(oldBuffer);
         }
     }
+    
 }

Modified: 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserAndParenthesesTest.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserAndParenthesesTest.java?rev=1058172&r1=1058171&r2=1058172&view=diff
==============================================================================
--- 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserAndParenthesesTest.java
 (original)
+++ 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserAndParenthesesTest.java
 Wed Jan 12 15:07:55 2011
@@ -72,14 +72,14 @@ public class SearchCommandParserAndParen
     }
 
     public static Input sequence() {
-        IdRange[] range = { new IdRange(Long.MAX_VALUE, 100), new IdRange(110),
+        IdRange[] range = { new IdRange(Long.MIN_VALUE, 100), new IdRange(110),
                 new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) };
         SearchKey key = SearchKey.buildSequenceSet(range);
         return new Input("*:100,110,200:201,400:*", key);
     }
 
     public static Input uid() {
-        IdRange[] range = { new IdRange(Long.MAX_VALUE, 100), new IdRange(110),
+        IdRange[] range = { new IdRange(Long.MIN_VALUE, 100), new IdRange(110),
                 new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) };
         SearchKey key = SearchKey.buildUidSet(range);
         return new Input("UID *:100,110,200:201,400:*", key);

Modified: 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserNotTest.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserNotTest.java?rev=1058172&r1=1058171&r2=1058172&view=diff
==============================================================================
--- 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserNotTest.java
 (original)
+++ 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserNotTest.java
 Wed Jan 12 15:07:55 2011
@@ -62,7 +62,7 @@ public class SearchCommandParserNotTest 
 
     @Test
     public void testShouldParseNotSequence() throws Exception {
-        IdRange[] range = { new IdRange(Long.MAX_VALUE, 100), new IdRange(110),
+        IdRange[] range = { new IdRange(Long.MIN_VALUE, 100), new IdRange(110),
                 new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) };
         SearchKey notdKey = SearchKey.buildSequenceSet(range);
         SearchKey key = SearchKey.buildNot(notdKey);
@@ -71,7 +71,7 @@ public class SearchCommandParserNotTest 
 
     @Test
     public void testShouldParseNotUid() throws Exception {
-        IdRange[] range = { new IdRange(Long.MAX_VALUE, 100), new IdRange(110),
+        IdRange[] range = { new IdRange(Long.MIN_VALUE, 100), new IdRange(110),
                 new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) };
         SearchKey notdKey = SearchKey.buildUidSet(range);
         SearchKey key = SearchKey.buildNot(notdKey);

Modified: 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserOrTest.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserOrTest.java?rev=1058172&r1=1058171&r2=1058172&view=diff
==============================================================================
--- 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserOrTest.java
 (original)
+++ 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserOrTest.java
 Wed Jan 12 15:07:55 2011
@@ -61,14 +61,14 @@ public class SearchCommandParserOrTest {
     }
     
     public Input sequence() {
-        IdRange[] range = { new IdRange(Long.MAX_VALUE, 100), new IdRange(110),
+        IdRange[] range = { new IdRange(Long.MIN_VALUE, 100), new IdRange(110),
                 new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) };
         SearchKey key = SearchKey.buildSequenceSet(range);
         return new Input("*:100,110,200:201,400:*", key);
     }
 
     public Input uid() {
-        IdRange[] range = { new IdRange(Long.MAX_VALUE, 100), new IdRange(110),
+        IdRange[] range = { new IdRange(Long.MIN_VALUE, 100), new IdRange(110),
                 new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) };
         SearchKey key = SearchKey.buildUidSet(range);
         return new Input("UID *:100,110,200:201,400:*", key);

Modified: 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserSearchKeySequenceSetTest.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserSearchKeySequenceSetTest.java?rev=1058172&r1=1058171&r2=1058172&view=diff
==============================================================================
--- 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserSearchKeySequenceSetTest.java
 (original)
+++ 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserSearchKeySequenceSetTest.java
 Wed Jan 12 15:07:55 2011
@@ -72,14 +72,14 @@ public class SearchCommandParserSearchKe
 
     @Test
     public void testEndStar() throws Exception {
-        IdRange[] range = { new IdRange(8), new IdRange(9, 10),
+        IdRange[] range = { new IdRange(8), new IdRange(10,11),
                 new IdRange(17), new IdRange(100, Long.MAX_VALUE) };
-        check("8,9:10,17,100:*", range);
+        check("8,10:11,17,100:*", range);
     }
 
     @Test
     public void testStartStar() throws Exception {
-        IdRange[] range = { new IdRange(Long.MAX_VALUE, 9), new IdRange(15),
+        IdRange[] range = { new IdRange(Long.MIN_VALUE, 9), new IdRange(15),
                 new IdRange(799, 820) };
         check("*:9,15,799:820", range);
     }

Modified: 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserTopLevelAndTest.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserTopLevelAndTest.java?rev=1058172&r1=1058171&r2=1058172&view=diff
==============================================================================
--- 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserTopLevelAndTest.java
 (original)
+++ 
james/imap/trunk/message/src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserTopLevelAndTest.java
 Wed Jan 12 15:07:55 2011
@@ -56,14 +56,14 @@ public class SearchCommandParserTopLevel
             on(), unanswered(), };
 
     public static Input sequence() {
-        IdRange[] range = { new IdRange(Long.MAX_VALUE, 100), new IdRange(110),
+        IdRange[] range = { new IdRange(Long.MIN_VALUE, 100), new IdRange(110),
                 new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) };
         SearchKey key = SearchKey.buildSequenceSet(range);
         return new Input("*:100,110,200:201,400:*", key);
     }
 
     public static Input uid() {
-        IdRange[] range = { new IdRange(Long.MAX_VALUE, 100), new IdRange(110),
+        IdRange[] range = { new IdRange(Long.MIN_VALUE, 100), new IdRange(110),
                 new IdRange(200, 201), new IdRange(400, Long.MAX_VALUE) };
         SearchKey key = SearchKey.buildUidSet(range);
         return new Input("UID *:100,110,200:201,400:*", key);

Modified: 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java?rev=1058172&r1=1058171&r2=1058172&view=diff
==============================================================================
--- 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
 (original)
+++ 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
 Wed Jan 12 15:07:55 2011
@@ -375,7 +375,7 @@ abstract public class AbstractMailboxPro
         long highVal = range.getHighVal();
       
         if (useUids == false) {
-            if (lowVal != Long.MAX_VALUE) {
+            if (lowVal != Long.MIN_VALUE) {
                 lowVal = selected.uid((int) lowVal);
                 if (lowVal == SelectedMailbox.NO_SUCH_MESSAGE)
                     throw new MessageRangeException("No message found with msn 
" + lowVal);

Modified: 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/SearchProcessor.java?rev=1058172&r1=1058171&r2=1058172&view=diff
==============================================================================
--- 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
 (original)
+++ 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
 Wed Jan 12 15:07:55 2011
@@ -248,7 +248,7 @@ public class SearchProcessor extends Abs
                     
                     if (highUid == SelectedMailbox.NO_SUCH_MESSAGE) highUid = 
selected.getLastUid();
                 }
-                if (lowVal == Long.MAX_VALUE) {
+                if (lowVal == Long.MIN_VALUE) {
                     lowUid = Long.MAX_VALUE;
                 } else {
                     final int lowMsn = (int) lowVal;
@@ -261,7 +261,7 @@ public class SearchProcessor extends Abs
                 highUid = highVal;
                 
                 
-               if (lowVal != Long.MAX_VALUE && lowVal < 
selected.getFirstUid()) {
+               if (lowVal != Long.MIN_VALUE && lowVal < 
selected.getFirstUid()) {
                        lowUid = selected.getFirstUid();
                } 
                

Modified: 
james/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java?rev=1058172&r1=1058171&r2=1058172&view=diff
==============================================================================
--- 
james/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
 (original)
+++ 
james/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
 Wed Jan 12 15:07:55 2011
@@ -129,7 +129,7 @@ public class SearchProcessorTest {
     @Test
     public void testSequenceSetLowerUnlimited() throws Exception {
         expectsGetSelectedMailbox();
-        final IdRange[] ids = { new IdRange(Long.MAX_VALUE, 1729) };
+        final IdRange[] ids = { new IdRange(Long.MIN_VALUE, 1729) };
         final SearchQuery.NumericRange[] ranges = { new 
SearchQuery.NumericRange(
                 Long.MAX_VALUE, 1729L) };
         mockery.checking(new Expectations() {{



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to