in protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SearchCommandParser.java [84:145]
protected SearchKey searchKey(ImapSession session, ImapRequestLineReader request, Context context, boolean isFirstToken) throws DecodingException, IllegalCharsetNameException, UnsupportedCharsetException {
final char next = request.nextChar();
if (next >= '0' && next <= '9' || next == '*' || next == '$') {
return sequenceSet(session, request);
} else if (next == '(') {
return paren(session, request, context);
} else {
final int cap = consumeAndCap(request);
switch (cap) {
case 'A':
return a(request);
case 'B':
return b(request, context.getCharset());
case 'C':
return c(session, request, isFirstToken, context);
case 'D':
return d(request);
case 'E':
return emailId(request);
case 'F':
return f(request, context.getCharset());
case 'G':
throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "Unknown search key");
case 'H':
return header(request, context.getCharset());
case 'I':
throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "Unknown search key");
case 'J':
throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "Unknown search key");
case 'K':
return keyword(request);
case 'L':
return larger(request);
case 'M':
return modseq(request);
case 'N':
return n(session, request, context);
case 'O':
return o(session, request, context);
case 'P':
throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "Unknown search key");
case 'Q':
throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "Unknown search key");
case 'R':
nextIsE(request);
nextIsC(request);
return recent(request);
case 'S':
return s(request, context.getCharset());
case 'T':
return t(request, context.getCharset());
case 'U':
return u(request);
case 'Y':
return younger(request);
default:
throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "Unknown search key");
}
}
}