public void parse()

in core/src/main/java/org/apache/james/mime4j/parser/MimeStreamParser.java [110:179]


    public void parse(InputStream instream) throws MimeException, IOException {
        MimeConfig config = mimeTokenStream.getConfig();
        if (config.getHeadlessParsing() != null) {
            Field contentType = mimeTokenStream.parseHeadless(
                    instream, config.getHeadlessParsing());
            handler.startMessage();
            handler.startHeader();
            handler.field(contentType);
            handler.endHeader();
        } else {
            mimeTokenStream.parse(instream);
        }
        OUTER: for (;;) {
            EntityState state = mimeTokenStream.getState();
            switch (state) {
                case T_BODY:
                    BodyDescriptor desc = mimeTokenStream.getBodyDescriptor();
                    InputStream bodyContent;
                    if (contentDecoding) {
                        bodyContent = mimeTokenStream.getDecodedInputStream();
                    } else {
                        bodyContent = mimeTokenStream.getInputStream();
                    }
                    handler.body(desc, bodyContent);
                    bodyContent.close();
                    break;
                case T_END_BODYPART:
                    handler.endBodyPart();
                    break;
                case T_END_HEADER:
                    handler.endHeader();
                    break;
                case T_END_MESSAGE:
                    handler.endMessage();
                    break;
                case T_END_MULTIPART:
                    handler.endMultipart();
                    break;
                case T_END_OF_STREAM:
                    break OUTER;
                case T_EPILOGUE:
                    handler.epilogue(mimeTokenStream.getInputStream());
                    break;
                case T_FIELD:
                    handler.field(mimeTokenStream.getField());
                    break;
                case T_PREAMBLE:
                    handler.preamble(mimeTokenStream.getInputStream());
                    break;
                case T_RAW_ENTITY:
                    handler.raw(mimeTokenStream.getInputStream());
                    break;
                case T_START_BODYPART:
                    handler.startBodyPart();
                    break;
                case T_START_HEADER:
                    handler.startHeader();
                    break;
                case T_START_MESSAGE:
                    handler.startMessage();
                    break;
                case T_START_MULTIPART:
                    handler.startMultipart(mimeTokenStream.getBodyDescriptor());
                    break;
                default:
                    throw new IllegalStateException("Invalid state: " + state);
            }
            state = mimeTokenStream.next();
        }
    }