Module jakarta.mail

Class HeaderTokenizer

java.lang.Object
jakarta.mail.internet.HeaderTokenizer

public class HeaderTokenizer extends 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.

  • Field Details

    • string

      private String string
    • skipComments

      private boolean skipComments
    • delimiters

      private String delimiters
    • currentPos

      private int currentPos
    • maxPos

      private int maxPos
    • nextPos

      private int nextPos
    • peekPos

      private int peekPos
    • RFC822

      public static final String RFC822
      RFC822 specials
      See Also:
    • MIME

      public static final String MIME
      MIME specials
      See Also:
    • EOFToken

      private static final HeaderTokenizer.Token EOFToken
  • Constructor Details

    • HeaderTokenizer

      public HeaderTokenizer(String header, String delimiters, boolean skipComments)
      Constructor that takes a rfc822 style header.
      Parameters:
      header - The rfc822 header to be tokenized
      delimiters - Set of delimiter characters to be used to delimit ATOMS. These are usually RFC822 or MIME
      skipComments - If true, comments are skipped and not returned as tokens
    • HeaderTokenizer

      public HeaderTokenizer(String header, String delimiters)
      Constructor. Comments are ignored and not returned as tokens
      Parameters:
      header - The header that is tokenized
      delimiters - The delimiters to be used
    • HeaderTokenizer

      public HeaderTokenizer(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 Details

    • 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 token
      keepEscapes - 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, until next() is called.
      Returns:
      the next Token
      Throws:
      ParseException - if the parse fails
    • getRemainder

      public 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 String trimWhiteSpace(String s)
    • filterToken

      private static String filterToken(String s, int start, int end, boolean keepEscapes)