in mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java [152:196]
public boolean isMatch(SearchQuery.Criterion criterion, MailboxMessage message,
final Collection<MessageUid> recentMessageUids) throws MailboxException {
if (criterion instanceof SearchQuery.InternalDateCriterion) {
return matches((SearchQuery.InternalDateCriterion) criterion, message);
} else if (criterion instanceof SearchQuery.SizeCriterion) {
return matches((SearchQuery.SizeCriterion) criterion, message);
} else if (criterion instanceof SearchQuery.HeaderCriterion) {
try {
return matches((SearchQuery.HeaderCriterion) criterion, message);
} catch (IOException e) {
throw new MailboxException("Unable to search header", e);
}
} else if (criterion instanceof SearchQuery.UidCriterion) {
return matches((SearchQuery.UidCriterion) criterion, message);
} else if (criterion instanceof SearchQuery.MessageIdCriterion) {
return ((SearchQuery.MessageIdCriterion) criterion).getMessageId().equals(message.getMessageId());
} else if (criterion instanceof SearchQuery.FlagCriterion) {
return matches((SearchQuery.FlagCriterion) criterion, message, recentMessageUids);
} else if (criterion instanceof SearchQuery.CustomFlagCriterion) {
return matches((SearchQuery.CustomFlagCriterion) criterion, message);
} else if (criterion instanceof SearchQuery.TextCriterion) {
return matches((SearchQuery.TextCriterion) criterion, message);
} else if (criterion instanceof SearchQuery.AllCriterion) {
return true;
} else if (criterion instanceof SearchQuery.ConjunctionCriterion) {
return matches((SearchQuery.ConjunctionCriterion) criterion, message, recentMessageUids);
} else if (criterion instanceof SearchQuery.AttachmentCriterion) {
return matches((SearchQuery.AttachmentCriterion) criterion, message);
} else if (criterion instanceof SearchQuery.ModSeqCriterion) {
return matches((SearchQuery.ModSeqCriterion) criterion, message);
} else if (criterion instanceof SearchQuery.MimeMessageIDCriterion) {
SearchQuery.MimeMessageIDCriterion mimeMessageIDCriterion = (SearchQuery.MimeMessageIDCriterion) criterion;
return isMatch(mimeMessageIDCriterion.asHeaderCriterion(), message, recentMessageUids);
} else if (criterion instanceof SearchQuery.SubjectCriterion) {
SearchQuery.SubjectCriterion subjectCriterion = (SearchQuery.SubjectCriterion) criterion;
return isMatch(subjectCriterion.asHeaderCriterion(), message, recentMessageUids);
} else if (criterion instanceof SearchQuery.ThreadIdCriterion) {
SearchQuery.ThreadIdCriterion threadIdCriterion = (SearchQuery.ThreadIdCriterion) criterion;
return matches(threadIdCriterion, message);
} else if (criterion instanceof SearchQuery.SaveDateCriterion) {
return matches((SearchQuery.SaveDateCriterion) criterion, message);
} else {
throw new UnsupportedSearchException();
}
}