Package org.apache.james.mime4j.parser
Class MimeStreamParser
- java.lang.Object
-
- org.apache.james.mime4j.parser.MimeStreamParser
-
public class MimeStreamParser extends Object
Parses MIME (or RFC822) message streams of bytes or characters and reports parsing events to a
ContentHandler
instance.Typical usage:
ContentHandler handler = new MyHandler(); MimeConfig config = new MimeConfig(); MimeStreamParser parser = new MimeStreamParser(config); parser.setContentHandler(handler); InputStream instream = new FileInputStream("mime.msg"); try { parser.parse(instream); } finally { instream.close(); }
-
-
Constructor Summary
Constructors Constructor Description MimeStreamParser()
MimeStreamParser(MimeConfig config)
MimeStreamParser(MimeConfig config, DecodeMonitor monitor, BodyDescriptorBuilder bodyDescBuilder)
MimeStreamParser(MimeTokenStream tokenStream)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
isContentDecoding()
Determines whether this parser automatically decodes body content based on the on the MIME fields with the standard defaults.boolean
isRaw()
Determines if this parser is currently in raw mode.void
parse(InputStream instream)
Parses a stream of bytes containing a MIME message.void
setContentDecoding(boolean b)
Defines whether parser should automatically decode body content based on the on the MIME fields with the standard defaults.void
setContentHandler(ContentHandler h)
Sets theContentHandler
to use when reporting parsing events.void
setFlat()
Enables flat mode.void
setNoRecurse()
Disables recursive mode.void
setRaw()
Enables raw mode.void
setRecurse()
Enables recursive mode.void
stop()
Finishes the parsing and stops reading lines.
-
-
-
Constructor Detail
-
MimeStreamParser
public MimeStreamParser(MimeTokenStream tokenStream)
-
MimeStreamParser
public MimeStreamParser(MimeConfig config, DecodeMonitor monitor, BodyDescriptorBuilder bodyDescBuilder)
-
MimeStreamParser
public MimeStreamParser(MimeConfig config)
-
MimeStreamParser
public MimeStreamParser()
-
-
Method Detail
-
isContentDecoding
public boolean isContentDecoding()
Determines whether this parser automatically decodes body content based on the on the MIME fields with the standard defaults.
-
setContentDecoding
public void setContentDecoding(boolean b)
Defines whether parser should automatically decode body content based on the on the MIME fields with the standard defaults.
-
parse
public void parse(InputStream instream) throws MimeException, IOException
Parses a stream of bytes containing a MIME message. Please note that if theMimeConfig
associated with the mime stream returns a not null Content-Type value from itsMimeConfig.getHeadlessParsing()
method, the message is assumed to have no head section and the headless parsing mode will be used.- Parameters:
instream
- the stream to parse.- Throws:
MimeException
- if the message can not be processedIOException
- on I/O errors.
-
isRaw
public boolean isRaw()
Determines if this parser is currently in raw mode.- Returns:
true
if in raw mode,false
otherwise.- See Also:
setRaw()
-
setRaw
public void setRaw()
Enables raw mode. In raw mode all future entities (messages or body parts) in the stream will be reported to theContentHandler.raw(InputStream)
handler method only. The stream will contain the entire unparsed entity contents including header fields and whatever is in the body.
-
setFlat
public void setFlat()
Enables flat mode. In flat mode rfc822 parts are not recursively parsed and multipart content is handled as a single "simple" stream.
-
setRecurse
public void setRecurse()
Enables recursive mode. In this mode rfc822 parts are recursively parsed.
-
setNoRecurse
public void setNoRecurse()
Disables recursive mode. In this mode rfc822 parts are not recursively parsed.
-
stop
public void stop()
Finishes the parsing and stops reading lines. NOTE: No more lines will be parsed but the parser will still callContentHandler.endMultipart()
,ContentHandler.endBodyPart()
,ContentHandler.endMessage()
, etc to match previous calls toContentHandler.startMultipart(BodyDescriptor)
,ContentHandler.startBodyPart()
,ContentHandler.startMessage()
, etc.
-
setContentHandler
public void setContentHandler(ContentHandler h)
Sets theContentHandler
to use when reporting parsing events.- Parameters:
h
- theContentHandler
.
-
-