[
https://issues.apache.org/jira/browse/JAMES-1375?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13209356#comment-13209356
]
Oleg Zhurakousky commented on JAMES-1375:
-----------------------------------------
Thanks Eric
The problem is in how ImapRequestLineReader.consumeWord is invoked from
ImapRequestLineReader.atom().
Currently you are invoking:
public String consumeWord(CharacterValidator validator)
However the stack originates from SearchComomandParser.addUntilParen(..) which
clearly means that you want to consume the word up until you encounter closing
paren, so you you should actually invoke:
private String consumeWord(CharacterValidator validator, boolean stripParen)
... with boolean value 'true', so the atom() method should look like this:
public String atom() throws DecodingException {
return consumeWord(new ATOM_CHARValidator(), true);
}
And here is the passing test to include in SearchCommandParserNotTest (nothing
else failed)
@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<SearchKey> keys = key.getKeys().get(0).getKeys();
assertEquals(2, keys.size());
assertEquals("bar", keys.get(0).getValue());
assertEquals("foo", keys.get(1).getValue());
}
I'll try to set up the full dev environment and start James from it and
integration test it but so far the problem seems to be straight forward.
> IMap server fails to search for mail using SearchTerms which contain USER
> flags
> -------------------------------------------------------------------------------
>
> Key: JAMES-1375
> URL: https://issues.apache.org/jira/browse/JAMES-1375
> Project: JAMES Server
> Issue Type: Bug
> Components: IMAPServer
> Affects Versions: 3.0-beta3
> Reporter: Oleg Zhurakousky
> Priority: Critical
>
> The code below will fail
> {code}
> public void testWithSearchTerm() throws Exception {
> Properties props = System.getProperties();
> props.setProperty("mail.store.protocol", "imap");
> props.setProperty("mail.debug", "true");
> Session session = Session.getDefaultInstance(props);
> URLName urlName = new URLName(
>
> "imap://oleg%40oleg-2.local:[email protected]/INBOX");
> Store store = session.getStore(urlName);
> if (!store.isConnected()) {
> store.connect();
> Folder folder = store.getFolder(urlName);
> folder.open(2);
> NotTerm notJunk = new NotTerm(new FlagTerm(new Flags("foo"),
> true));
> folder.search(notJunk);
> }
> }
> {code}
> with
> {code}
> Caused by: com.sun.mail.iap.BadCommandException: A4 BAD SEARCH failed.
> Illegal arguments.
> at com.sun.mail.iap.Protocol.handleResult(Protocol.java:346)
> at
> com.sun.mail.imap.protocol.IMAPProtocol.issueSearch(IMAPProtocol.java:1693)
> at
> com.sun.mail.imap.protocol.IMAPProtocol.search(IMAPProtocol.java:1599)
> at
> com.sun.mail.imap.protocol.IMAPProtocol.search(IMAPProtocol.java:1586)
> at com.sun.mail.imap.IMAPFolder.search(IMAPFolder.java:1649)
> {code}
> However setting the user flag works fine and it can be seen in the incoming
> message
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]