Package javax.mail.internet
Class HeaderTokenizer
- java.lang.Object
-
- javax.mail.internet.HeaderTokenizer
-
public class HeaderTokenizer extends java.lang.Object
This class tokenizes RFC822 and MIME headers into the basic symbols specified by RFC822 and MIME.This class handles folded headers (ie headers with embedded CRLF SPACE sequences). The folds are removed in the returned tokens.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
HeaderTokenizer.Token
The Token class represents tokens returned by the HeaderTokenizer.
-
Field Summary
Fields Modifier and Type Field Description private int
currentPos
private java.lang.String
delimiters
private static HeaderTokenizer.Token
EOFToken
private int
maxPos
static java.lang.String
MIME
MIME specialsprivate int
nextPos
private int
peekPos
static java.lang.String
RFC822
RFC822 specialsprivate boolean
skipComments
private java.lang.String
string
-
Constructor Summary
Constructors Constructor Description HeaderTokenizer(java.lang.String header)
Constructor.HeaderTokenizer(java.lang.String header, java.lang.String delimiters)
Constructor.HeaderTokenizer(java.lang.String header, java.lang.String delimiters, boolean skipComments)
Constructor that takes a rfc822 style header.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private HeaderTokenizer.Token
collectString(char eos, boolean keepEscapes)
private static java.lang.String
filterToken(java.lang.String s, int start, int end, boolean keepEscapes)
private HeaderTokenizer.Token
getNext(char endOfAtom, boolean keepEscapes)
java.lang.String
getRemainder()
Return the rest of the Header.HeaderTokenizer.Token
next()
Parses the next token from this String.HeaderTokenizer.Token
next(char endOfAtom)
Parses the next token from this String.HeaderTokenizer.Token
next(char endOfAtom, boolean keepEscapes)
Parses the next token from this String.HeaderTokenizer.Token
peek()
Peek at the next token, without actually removing the token from the parse stream.private int
skipWhiteSpace()
private static java.lang.String
trimWhiteSpace(java.lang.String s)
-
-
-
Field Detail
-
string
private java.lang.String string
-
skipComments
private boolean skipComments
-
delimiters
private java.lang.String delimiters
-
currentPos
private int currentPos
-
maxPos
private int maxPos
-
nextPos
private int nextPos
-
peekPos
private int peekPos
-
RFC822
public static final java.lang.String RFC822
RFC822 specials- See Also:
- Constant Field Values
-
MIME
public static final java.lang.String MIME
MIME specials- See Also:
- Constant Field Values
-
EOFToken
private static final HeaderTokenizer.Token EOFToken
-
-
Constructor Detail
-
HeaderTokenizer
public HeaderTokenizer(java.lang.String header, java.lang.String delimiters, boolean skipComments)
Constructor that takes a rfc822 style header.- Parameters:
header
- The rfc822 header to be tokenizeddelimiters
- Set of delimiter characters to be used to delimit ATOMS. These are usuallyRFC822
orMIME
skipComments
- If true, comments are skipped and not returned as tokens
-
HeaderTokenizer
public HeaderTokenizer(java.lang.String header, java.lang.String delimiters)
Constructor. Comments are ignored and not returned as tokens- Parameters:
header
- The header that is tokenizeddelimiters
- The delimiters to be used
-
HeaderTokenizer
public HeaderTokenizer(java.lang.String header)
Constructor. The RFC822 defined delimiters - RFC822 - are used to delimit ATOMS. Also comments are skipped and not returned as tokens- Parameters:
header
- the header string
-
-
Method Detail
-
next
public HeaderTokenizer.Token next() throws ParseException
Parses the next token from this String.Clients sit in a loop calling next() to parse successive tokens until an EOF Token is returned.
- Returns:
- the next Token
- Throws:
ParseException
- if the parse fails
-
next
public HeaderTokenizer.Token next(char endOfAtom) throws ParseException
Parses the next token from this String. If endOfAtom is not NUL, the token extends until the endOfAtom character is seen, or to the end of the header. This method is useful when parsing headers that don't obey the MIME specification, e.g., by failing to quote parameter values that contain spaces.- Parameters:
endOfAtom
- if not NUL, character marking end of token- Returns:
- the next Token
- Throws:
ParseException
- if the parse fails- Since:
- JavaMail 1.5
-
next
public HeaderTokenizer.Token next(char endOfAtom, boolean keepEscapes) throws ParseException
Parses the next token from this String. endOfAtom is handled as above. If keepEscapes is true, any backslash escapes are preserved in the returned string. This method is useful when parsing headers that don't obey the MIME specification, e.g., by failing to escape backslashes in the filename parameter.- Parameters:
endOfAtom
- if not NUL, character marking end of tokenkeepEscapes
- keep all backslashes in returned string?- Returns:
- the next Token
- Throws:
ParseException
- if the parse fails- Since:
- JavaMail 1.5
-
peek
public HeaderTokenizer.Token peek() throws ParseException
Peek at the next token, without actually removing the token from the parse stream. Invoking this method multiple times will return successive tokens, untilnext()
is called.- Returns:
- the next Token
- Throws:
ParseException
- if the parse fails
-
getRemainder
public java.lang.String getRemainder()
Return the rest of the Header.- Returns:
- String rest of header. null is returned if we are already at end of header
-
getNext
private HeaderTokenizer.Token getNext(char endOfAtom, boolean keepEscapes) throws ParseException
- Throws:
ParseException
-
collectString
private HeaderTokenizer.Token collectString(char eos, boolean keepEscapes) throws ParseException
- Throws:
ParseException
-
skipWhiteSpace
private int skipWhiteSpace()
-
trimWhiteSpace
private static java.lang.String trimWhiteSpace(java.lang.String s)
-
filterToken
private static java.lang.String filterToken(java.lang.String s, int start, int end, boolean keepEscapes)
-
-