Class EncoderUtil
java.lang.Object
org.apache.james.mime4j.codec.EncoderUtil
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumSelects one of the two encodings specified in RFC 2047.static enumIndicates the intended usage of an encoded word. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final BitSetprivate static final charprivate static final byte[]private static final Stringprivate static final Stringprivate static final intprivate static final intprivate static final BitSetprivate static final BitSetprivate static final Patternprivate static final BitSet -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static intbEncodedLength(byte[] bytes) private static CharsetdetermineCharset(String text) private static EncoderUtil.EncodingdetermineEncoding(byte[] bytes, EncoderUtil.Usage usage) private static byte[]static StringencodeAddressDisplayName(String displayName) Encodes the display-name portion of an address.static StringencodeAddressLocalPart(String localPart) Encodes the local part of an address specification as described in RFC 5322 section 3.4.1.static StringencodeB(byte[] bytes) Encodes the specified byte array using the B encoding defined in RFC 2047.static voidencodeB(InputStream in, OutputStream out) Encodes the given stream using base64.private static Stringstatic StringencodeEncodedWord(String text, EncoderUtil.Usage usage) Encodes the specified text into an encoded word or a sequence of encoded words separated by space.static StringencodeEncodedWord(String text, EncoderUtil.Usage usage, int usedCharacters) Encodes the specified text into an encoded word or a sequence of encoded words separated by space.static StringencodeEncodedWord(String text, EncoderUtil.Usage usage, int usedCharacters, Charset charset, EncoderUtil.Encoding encoding) Encodes the specified text into an encoded word or a sequence of encoded words separated by space.static StringencodeHeaderParameter(String name, String value) Encodes the specified strings into a header parameter as described in RFC 2045 section 5.1 and RFC 2183 section 2.static StringencodeIfNecessary(String text, EncoderUtil.Usage usage, int usedCharacters) Shortcut method that encodes the specified text into an encoded-word if the text has to be encoded.static StringencodeQ(byte[] bytes, EncoderUtil.Usage usage) Encodes the specified byte array using the Q encoding defined in RFC 2047.static voidencodeQ(InputStream in, OutputStream out) Encodes the given stream using Quoted-Printable.private static StringencodeQ(String prefix, String text, EncoderUtil.Usage usage, int usedCharacters, Charset charset, byte[] bytes) static voidencodeQBinary(InputStream in, OutputStream out) Encodes the given stream using Quoted-Printable.static booleanhasToBeEncoded(String text, int usedCharacters) Determines if the specified string has to encoded into an encoded-word.private static charhexDigit(int i) private static BitSetprivate static booleanisAtomPhrase(String str) private static booleanisDotAtomText(String str) static booleanTests whether the specified string is a token as defined in RFC 2045 section 5.1.private static intqEncodedLength(byte[] bytes, EncoderUtil.Usage usage) private static String
-
Field Details
-
BASE64_TABLE
private static final byte[] BASE64_TABLE -
BASE64_PAD
private static final char BASE64_PAD- See Also:
-
Q_REGULAR_CHARS
-
Q_RESTRICTED_CHARS
-
MAX_USED_CHARACTERS
private static final int MAX_USED_CHARACTERS- See Also:
-
ENC_WORD_PREFIX
- See Also:
-
ENC_WORD_SUFFIX
- See Also:
-
ENCODED_WORD_MAX_LENGTH
private static final int ENCODED_WORD_MAX_LENGTH- See Also:
-
TOKEN_CHARS
-
ATEXT_CHARS
-
QUOTE
-
-
Constructor Details
-
EncoderUtil
private EncoderUtil()
-
-
Method Details
-
initChars
-
encodeAddressDisplayName
-
encodeAddressLocalPart
Encodes the local part of an address specification as described in RFC 5322 section 3.4.1. Leading and trailing CFWS should have been removed before calling this method. The specified string should not contain any illegal (control or non-ASCII) characters.- Parameters:
localPart- the local part to encode- Returns:
- the encoded local part.
-
encodeHeaderParameter
Encodes the specified strings into a header parameter as described in RFC 2045 section 5.1 and RFC 2183 section 2. The specified strings should not contain any illegal (control or non-ASCII) characters.- Parameters:
name- parameter name.value- parameter value.- Returns:
- encoded result.
-
encodeIfNecessary
Shortcut method that encodes the specified text into an encoded-word if the text has to be encoded.- Parameters:
text- text to encode.usage- whether the encoded-word is to be used to replace a text token or a word entity (see RFC 822).usedCharacters- number of characters already used up (0 <= usedCharacters <= 50).- Returns:
- the specified text if encoding is not necessary or an encoded word or a sequence of encoded words otherwise.
-
hasToBeEncoded
Determines if the specified string has to encoded into an encoded-word. Returnstrueif the text contains characters that don't fall into the printable ASCII character set or if the text contains a 'word' (sequence of non-whitespace characters) longer than 77 characters (including characters already used up in the line).- Parameters:
text- text to analyze.usedCharacters- number of characters already used up (0 <= usedCharacters <= 50).- Returns:
trueif the specified text has to be encoded into an encoded-word,falseotherwise.
-
encodeEncodedWord
Encodes the specified text into an encoded word or a sequence of encoded words separated by space. The text is separated into a sequence of encoded words if it does not fit in a single one.The charset to encode the specified text into a byte array and the encoding to use for the encoded-word are detected automatically.
This method assumes that zero characters have already been used up in the current line.
- Parameters:
text- text to encode.usage- whether the encoded-word is to be used to replace a text token or a word entity (see RFC 822).- Returns:
- the encoded word (or sequence of encoded words if the given text does not fit in a single encoded word).
- See Also:
-
encodeEncodedWord
Encodes the specified text into an encoded word or a sequence of encoded words separated by space. The text is separated into a sequence of encoded words if it does not fit in a single one.The charset to encode the specified text into a byte array and the encoding to use for the encoded-word are detected automatically.
- Parameters:
text- text to encode.usage- whether the encoded-word is to be used to replace a text token or a word entity (see RFC 822).usedCharacters- number of characters already used up (0 <= usedCharacters <= 50).- Returns:
- the encoded word (or sequence of encoded words if the given text does not fit in a single encoded word).
- See Also:
-
encodeEncodedWord
public static String encodeEncodedWord(String text, EncoderUtil.Usage usage, int usedCharacters, Charset charset, EncoderUtil.Encoding encoding) Encodes the specified text into an encoded word or a sequence of encoded words separated by space. The text is separated into a sequence of encoded words if it does not fit in a single one.- Parameters:
text- text to encode.usage- whether the encoded-word is to be used to replace a text token or a word entity (see RFC 822).usedCharacters- number of characters already used up (0 <= usedCharacters <= 50).charset- the Java charset that should be used to encode the specified string into a byte array. A suitable charset is detected automatically if this parameter isnull.encoding- the encoding to use for the encoded-word (either B or Q). A suitable encoding is automatically chosen if this parameter isnull.- Returns:
- the encoded word (or sequence of encoded words if the given text does not fit in a single encoded word).
- See Also:
-
encodeB
Encodes the specified byte array using the B encoding defined in RFC 2047.- Parameters:
bytes- byte array to encode.- Returns:
- encoded string.
-
encodeQ
Encodes the specified byte array using the Q encoding defined in RFC 2047.- Parameters:
bytes- byte array to encode.usage- whether the encoded-word is to be used to replace a text token or a word entity (see RFC 822).- Returns:
- encoded string.
-
encodeQBinary
Encodes the given stream using Quoted-Printable. This assumes that stream is binary and therefore escapes all line endings.- Parameters:
in- not nullout- not null- Throws:
IOException
-
encodeQ
Encodes the given stream using Quoted-Printable. This assumes that stream is text and therefore does not escape all line endings.- Parameters:
in- not nullout- not null- Throws:
IOException
-
encodeB
Encodes the given stream using base64.- Parameters:
in- not nullout- not null- Throws:
IOException- if an I/O error occurs
-
isToken
Tests whether the specified string is a token as defined in RFC 2045 section 5.1.- Parameters:
str- string to test.- Returns:
trueif the specified string is a RFC 2045 token,falseotherwise.
-
isAtomPhrase
-
isDotAtomText
-
quote
-
encodeB
-
bEncodedLength
private static int bEncodedLength(byte[] bytes) -
encodeQ
private static String encodeQ(String prefix, String text, EncoderUtil.Usage usage, int usedCharacters, Charset charset, byte[] bytes) -
qEncodedLength
-
encode
-
determineCharset
-
determineEncoding
-
hexDigit
private static char hexDigit(int i)
-