Author: norman
Date: Tue Sep 14 07:34:12 2010
New Revision: 996772

URL: http://svn.apache.org/viewvc?rev=996772&view=rev
Log:
After some more testing it seems like the SEARCH commands does ignore unkown 
message uids / ids and not return a BAD response. So adjust it to match 
expected behavoir (IMAP-209)

Modified:
    
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
    
james/imap/trunk/protocol-tester/src/main/resources/org/apache/james/imap/scripts/Copy.test
    
james/imap/trunk/protocol-tester/src/main/resources/org/apache/james/imap/scripts/Uid.test

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=996772&r1=996771&r2=996772&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
 Tue Sep 14 07:34:12 2010
@@ -111,10 +111,9 @@ public class SearchProcessor extends Abs
                 number = new Long(uid);
             } else {
                 final int msn = session.getSelected().msn(uid);
-                if (msn == SelectedMailbox.NO_SUCH_MESSAGE) throw new 
MessageRangeException("No message found with uid " + uid);
                 number = new Long(msn);
             }
-            results.add(number);
+            if (number == SelectedMailbox.NO_SUCH_MESSAGE == false) 
results.add(number);
         }
         return results;
     }
@@ -234,10 +233,10 @@ public class SearchProcessor extends Abs
         final SearchQuery.NumericRange[] ranges = new 
SearchQuery.NumericRange[length];
         for (int i = 0; i < length; i++) {
             final IdRange range = sequenceNumbers[i];
-            final long highVal = range.getHighVal();
-            final long lowVal = range.getLowVal();
-            final long lowUid;
-            final long highUid;
+            long highVal = range.getHighVal();
+            long lowVal = range.getLowVal();
+            long lowUid;
+            long highUid;
             final SelectedMailbox selected = session.getSelected();
 
             if (msn) {
@@ -246,14 +245,15 @@ public class SearchProcessor extends Abs
                 } else {
                     final int highMsn = (int) highVal;
                     highUid = selected.uid(highMsn);
-                    if (highUid == -1) throw new MessageRangeException("No 
message found with msn " + highMsn);
+                    
+                    if (highUid == SelectedMailbox.NO_SUCH_MESSAGE) highUid = 
selected.getLastUid();
                 }
                 if (lowVal == Long.MAX_VALUE) {
                     lowUid = Long.MAX_VALUE;
                 } else {
                     final int lowMsn = (int) lowVal;
                     lowUid = selected.uid(lowMsn);
-                    if (highUid == -1) throw new MessageRangeException("No 
message found with msn " + lowUid);
+                    if (lowUid == SelectedMailbox.NO_SUCH_MESSAGE) lowUid = 
selected.getFirstUid();
 
                 }
             } else {
@@ -262,11 +262,11 @@ public class SearchProcessor extends Abs
                 
                 
                if (lowVal != Long.MAX_VALUE && lowVal < 
selected.getFirstUid()) {
-                    throw new MessageRangeException("No message found with uid 
" + lowVal);
+                       lowUid = selected.getFirstUid();
                } 
                
                if (highVal != Long.MAX_VALUE && highVal > 
selected.getLastUid()) {
-                    throw new MessageRangeException("No message found with uid 
" + highVal);
+                       highUid = selected.getLastUid();
                } 
             }
             ranges[i] = new SearchQuery.NumericRange(lowUid, highUid);

Modified: 
james/imap/trunk/protocol-tester/src/main/resources/org/apache/james/imap/scripts/Copy.test
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/protocol-tester/src/main/resources/org/apache/james/imap/scripts/Copy.test?rev=996772&r1=996771&r2=996772&view=diff
==============================================================================
--- 
james/imap/trunk/protocol-tester/src/main/resources/org/apache/james/imap/scripts/Copy.test
 (original)
+++ 
james/imap/trunk/protocol-tester/src/main/resources/org/apache/james/imap/scripts/Copy.test
 Tue Sep 14 07:34:12 2010
@@ -52,7 +52,7 @@ S: \* OK \[PERMANENTFLAGS \(\\Answered \
 S: \* OK \[UIDNEXT 4\]
 S: a7 OK \[READ-WRITE\] SELECT completed.
 
-C: a8 FETCH 1:4 (FLAGS)
+C: a8 FETCH 1:3 (FLAGS)
 S: \* 1 FETCH \(FLAGS \(\)\)
 S: \* 2 FETCH \(FLAGS \(\\Deleted\)\)
 S: \* 3 FETCH \(FLAGS \(\)\)

Modified: 
james/imap/trunk/protocol-tester/src/main/resources/org/apache/james/imap/scripts/Uid.test
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/protocol-tester/src/main/resources/org/apache/james/imap/scripts/Uid.test?rev=996772&r1=996771&r2=996772&view=diff
==============================================================================
--- 
james/imap/trunk/protocol-tester/src/main/resources/org/apache/james/imap/scripts/Uid.test
 (original)
+++ 
james/imap/trunk/protocol-tester/src/main/resources/org/apache/james/imap/scripts/Uid.test
 Tue Sep 14 07:34:12 2010
@@ -33,7 +33,7 @@ S: \* 3 FETCH \(UID 4\)
 S: a OK FETCH completed.
 
 #UID fetch
-C: a UID FETCH 1:3 (INTERNALDATE)
+C: a UID FETCH 2:3 (INTERNALDATE)
 S: \* 1 FETCH \(INTERNALDATE "[^"]*" UID 2\)
 S: \* 2 FETCH \(INTERNALDATE ".*" UID 3\)
 S: a OK FETCH completed.
@@ -44,8 +44,12 @@ S: \* 1 FETCH \(FLAGS \(\\Deleted \\Rece
 S: \* 2 FETCH \(FLAGS \(\\Deleted \\Recent\) UID 3\)
 S: a1 OK STORE completed.
 
-# Regular fetch
+# invalid messageset
 C: a2 FETCH 1:100 (FLAGS UID)
+S: a2 BAD FETCH failed. Invalid messageset.
+
+# Regular fetch
+C: a2 FETCH 1:3 (FLAGS UID)
 S: \* 1 FETCH \(FLAGS \(\\Deleted \\Recent\) UID 2\)
 S: \* 2 FETCH \(FLAGS \(\\Deleted \\Recent\) UID 3\)
 S: \* 3 FETCH \(FLAGS \(\\Recent\) UID 4\)
@@ -62,7 +66,7 @@ C: a STATUS copied (MESSAGES)
 S: \* STATUS "copied" \(MESSAGES 1\)
 S: a OK STATUS completed.
 
-C: A003 STORE 1:4 +FLAGS.SILENT (\FLAGGED)
+C: A003 STORE 1:3 +FLAGS.SILENT (\FLAGGED)
 S: A003 OK STORE completed.
 
 # Do a UID SEARCH



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

Reply via email to