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]