Index: src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java =================================================================== --- src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java (revision 1245003) +++ src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java (working copy) @@ -188,7 +188,7 @@ * Reads an argument of type "atom" from the request. */ public String atom() throws DecodingException { - return consumeWord(new ATOM_CHARValidator()); + return consumeWord(new ATOM_CHARValidator(), true); } /** Index: src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserNotTest.java =================================================================== --- src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserNotTest.java (revision 1245003) +++ src/test/java/org/apache/james/imap/decode/parser/SearchCommandParserNotTest.java (working copy) @@ -19,11 +19,10 @@ package org.apache.james.imap.decode.parser; -import static org.junit.Assert.assertEquals; - import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.Arrays; +import java.util.List; import org.apache.james.imap.api.ImapCommand; import org.apache.james.imap.api.ImapMessage; @@ -39,6 +38,8 @@ import org.junit.Test; import org.junit.runner.RunWith; +import static org.junit.Assert.assertEquals; + @RunWith(JMock.class) public class SearchCommandParserNotTest { @@ -114,6 +115,18 @@ checkValid("Not NEW\r\n", key); checkValid("not new\r\n", key); } + + @Test + public void testUserFlagsParsing() throws Exception { + ImapRequestLineReader reader = new ImapRequestStreamLineReader( + new ByteArrayInputStream("NOT (KEYWORD bar KEYWORD foo)".getBytes("US-ASCII")), + new ByteArrayOutputStream()); + SearchKey key = parser.searchKey(null, reader, null, false); + List keys = key.getKeys().get(0).getKeys(); + assertEquals(2, keys.size()); + assertEquals("bar", keys.get(0).getValue()); + assertEquals("foo", keys.get(1).getValue()); + } private void checkValid(String input, final SearchKey key) throws Exception { ImapRequestLineReader reader = new ImapRequestStreamLineReader(