Package com.fasterxml.jackson.core
Class Base64Variant
- java.lang.Object
-
- com.fasterxml.jackson.core.Base64Variant
-
- All Implemented Interfaces:
Serializable
public final class Base64Variant extends Object implements Serializable
Class used to define specific details of which variant of Base64 encoding/decoding is to be used. Although there is somewhat standard basic version (so-called "MIME Base64"), other variants exists, see Base64 Wikipedia entry for details.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static int
BASE64_VALUE_INVALID
Marker used to denote ascii characters that do not correspond to a 6-bit value (in this variant), and is not used as a padding character.static int
BASE64_VALUE_PADDING
Marker used to denote ascii character (in decoding table) that is the padding character using this variant (if any).
-
Constructor Summary
Constructors Constructor Description Base64Variant(Base64Variant base, String name, boolean usesPadding, char paddingChar, int maxLineLength)
"Copy constructor" that can be used when the base alphabet is identical to one used by another variant, but other details (padding, maximum line length) differBase64Variant(Base64Variant base, String name, int maxLineLength)
"Copy constructor" that can be used when the base alphabet is identical to one used by another variant except for the maximum line length (and obviously, name).Base64Variant(String name, String base64Alphabet, boolean usesPadding, char paddingChar, int maxLineLength)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description byte[]
decode(String input)
Convenience method for decoding contents of a Base64-encoded String, using this variant's settings.void
decode(String str, ByteArrayBuilder builder)
Convenience method for decoding contents of a Base64-encoded String, using this variant's settings and appending decoded binary data using providedByteArrayBuilder
.int
decodeBase64Byte(byte b)
int
decodeBase64Char(char c)
int
decodeBase64Char(int ch)
String
encode(byte[] input)
Convenience method for converting given byte array as base64 encoded String using this variant's settings.String
encode(byte[] input, boolean addQuotes)
Convenience method for converting given byte array as base64 encoded String using this variant's settings, optionally enclosed in double-quotes.String
encode(byte[] input, boolean addQuotes, String linefeed)
Convenience method for converting given byte array as base64 encoded String using this variant's settings, optionally enclosed in double-quotes.byte
encodeBase64BitsAsByte(int value)
char
encodeBase64BitsAsChar(int value)
int
encodeBase64Chunk(int b24, byte[] buffer, int ptr)
Method that encodes given right-aligned (LSB) 24-bit value into 4 base64 bytes (ascii), stored in given result buffer.int
encodeBase64Chunk(int b24, char[] buffer, int ptr)
Method that encodes given right-aligned (LSB) 24-bit value into 4 base64 characters, stored in given result buffer.void
encodeBase64Chunk(StringBuilder sb, int b24)
int
encodeBase64Partial(int bits, int outputBytes, byte[] buffer, int outPtr)
Method that outputs partial chunk (which only encodes one or two bytes of data).int
encodeBase64Partial(int bits, int outputBytes, char[] buffer, int outPtr)
Method that outputs partial chunk (which only encodes one or two bytes of data).void
encodeBase64Partial(StringBuilder sb, int bits, int outputBytes)
boolean
equals(Object o)
int
getMaxLineLength()
String
getName()
byte
getPaddingByte()
char
getPaddingChar()
int
hashCode()
String
missingPaddingMessage()
Helper method that will construct a message to use in exceptions for cases where input ends prematurely in place where padding would be expected.String
toString()
boolean
usesPadding()
boolean
usesPaddingChar(char c)
boolean
usesPaddingChar(int ch)
-
-
-
Field Detail
-
BASE64_VALUE_INVALID
public static final int BASE64_VALUE_INVALID
Marker used to denote ascii characters that do not correspond to a 6-bit value (in this variant), and is not used as a padding character.- See Also:
- Constant Field Values
-
BASE64_VALUE_PADDING
public static final int BASE64_VALUE_PADDING
Marker used to denote ascii character (in decoding table) that is the padding character using this variant (if any).- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Base64Variant
public Base64Variant(String name, String base64Alphabet, boolean usesPadding, char paddingChar, int maxLineLength)
-
Base64Variant
public Base64Variant(Base64Variant base, String name, int maxLineLength)
"Copy constructor" that can be used when the base alphabet is identical to one used by another variant except for the maximum line length (and obviously, name).
-
Base64Variant
public Base64Variant(Base64Variant base, String name, boolean usesPadding, char paddingChar, int maxLineLength)
"Copy constructor" that can be used when the base alphabet is identical to one used by another variant, but other details (padding, maximum line length) differ
-
-
Method Detail
-
getName
public String getName()
-
usesPadding
public boolean usesPadding()
-
usesPaddingChar
public boolean usesPaddingChar(char c)
-
usesPaddingChar
public boolean usesPaddingChar(int ch)
-
getPaddingChar
public char getPaddingChar()
-
getPaddingByte
public byte getPaddingByte()
-
getMaxLineLength
public int getMaxLineLength()
-
decodeBase64Char
public int decodeBase64Char(char c)
- Returns:
- 6-bit decoded value, if valid character;
-
decodeBase64Char
public int decodeBase64Char(int ch)
-
decodeBase64Byte
public int decodeBase64Byte(byte b)
-
encodeBase64BitsAsChar
public char encodeBase64BitsAsChar(int value)
-
encodeBase64Chunk
public int encodeBase64Chunk(int b24, char[] buffer, int ptr)
Method that encodes given right-aligned (LSB) 24-bit value into 4 base64 characters, stored in given result buffer.
-
encodeBase64Chunk
public void encodeBase64Chunk(StringBuilder sb, int b24)
-
encodeBase64Partial
public int encodeBase64Partial(int bits, int outputBytes, char[] buffer, int outPtr)
Method that outputs partial chunk (which only encodes one or two bytes of data). Data given is still aligned same as if it as full data; that is, missing data is at the "right end" (LSB) of int.- Parameters:
outputBytes
- Number of encoded bytes included (either 1 or 2)
-
encodeBase64Partial
public void encodeBase64Partial(StringBuilder sb, int bits, int outputBytes)
-
encodeBase64BitsAsByte
public byte encodeBase64BitsAsByte(int value)
-
encodeBase64Chunk
public int encodeBase64Chunk(int b24, byte[] buffer, int ptr)
Method that encodes given right-aligned (LSB) 24-bit value into 4 base64 bytes (ascii), stored in given result buffer.
-
encodeBase64Partial
public int encodeBase64Partial(int bits, int outputBytes, byte[] buffer, int outPtr)
Method that outputs partial chunk (which only encodes one or two bytes of data). Data given is still aligned same as if it as full data; that is, missing data is at the "right end" (LSB) of int.- Parameters:
outputBytes
- Number of encoded bytes included (either 1 or 2)
-
encode
public String encode(byte[] input)
Convenience method for converting given byte array as base64 encoded String using this variant's settings. Resulting value is "raw", that is, not enclosed in double-quotes.- Parameters:
input
- Byte array to encode
-
encode
public String encode(byte[] input, boolean addQuotes)
Convenience method for converting given byte array as base64 encoded String using this variant's settings, optionally enclosed in double-quotes. Linefeeds added, if needed, are expressed as 2-character JSON (and Java source) escape sequence of backslash + `n`.- Parameters:
input
- Byte array to encodeaddQuotes
- Whether to surround resulting value in double quotes or not
-
encode
public String encode(byte[] input, boolean addQuotes, String linefeed)
Convenience method for converting given byte array as base64 encoded String using this variant's settings, optionally enclosed in double-quotes. Linefeed character to use is passed explicitly.- Parameters:
input
- Byte array to encodeaddQuotes
- Whether to surround resulting value in double quotes or not- Since:
- 2.10
-
decode
public byte[] decode(String input) throws IllegalArgumentException
Convenience method for decoding contents of a Base64-encoded String, using this variant's settings.- Parameters:
input
-- Throws:
IllegalArgumentException
- if input is not valid base64 encoded data- Since:
- 2.3
-
decode
public void decode(String str, ByteArrayBuilder builder) throws IllegalArgumentException
Convenience method for decoding contents of a Base64-encoded String, using this variant's settings and appending decoded binary data using providedByteArrayBuilder
.NOTE: builder will NOT be reset before decoding (nor cleared afterwards); assumption is that caller will ensure it is given in proper state, and used as appropriate afterwards.
- Throws:
IllegalArgumentException
- if input is not valid base64 encoded data- Since:
- 2.3
-
missingPaddingMessage
public String missingPaddingMessage()
Helper method that will construct a message to use in exceptions for cases where input ends prematurely in place where padding would be expected.- Since:
- 2.10
-
-