in james-utils/src/main/java/org/apache/james/mime4j/utils/search/MessageMatcher.java [147:193]
private boolean matchBufferInMailBeingMimeAware(final InputStream input, final CharBuffer buffer) throws IOException, MimeException {
try {
MimeConfig config = MimeConfig.custom().setMaxLineLen(-1).setMaxHeaderLen(-1).build();
MimeTokenStream parser = new MimeTokenStream(config);
parser.parse(input);
while (parser.next() != EntityState.T_END_OF_STREAM) {
final EntityState state = parser.getState();
switch (state) {
case T_PREAMBLE:
case T_EPILOGUE:
case T_BODY:
if (contentTypes.isEmpty() || contentTypes.contains(parser.getBodyDescriptor().getMimeType())) {
if (checkBody(buffer, parser)) {
return true;
}
}
break;
case T_FIELD:
if (includeHeaders) {
if (checkHeader(buffer, parser)) {
return true;
}
}
break;
case T_END_BODYPART:
case T_END_HEADER:
case T_END_MESSAGE:
case T_END_MULTIPART:
case T_END_OF_STREAM:
case T_RAW_ENTITY:
case T_START_BODYPART:
case T_START_HEADER:
case T_START_MESSAGE:
case T_START_MULTIPART:
break;
}
}
} catch (IllegalCharsetNameException e) {
handle(e);
} catch (UnsupportedCharsetException e) {
handle(e);
} catch (IllegalStateException e) {
handle(e);
}
return false;
}