com.sun.xml.bind

Class DatatypeConverterImpl

public final class DatatypeConverterImpl extends Object implements DatatypeConverterInterface

This class is the JAXB RI's default implementation of the DatatypeConverterInterface.

When client applications specify the use of the static print/parse methods in DatatypeConverter, it will delegate to this class.

This class is responsible for whitespace normalization.

Since: JAXB1.0

Field Summary
static DatatypeConverterInterfacetheInstance
To avoid re-creating instances, we cache one instance.
Constructor Summary
protected DatatypeConverterImpl()
Method Summary
static charencode(int i)
static byteencodeByte(int i)
static StringinstallHook(String s)
Just return the string passed as a parameter but installs an instance of this class as the DatatypeConverter implementation.
StringparseAnySimpleType(String lexicalXSDAnySimpleType)
byte[]parseBase64Binary(String lexicalXSDBase64Binary)
booleanparseBoolean(String lexicalXSDBoolean)
byteparseByte(String lexicalXSDByte)
CalendarparseDate(String lexicalXSDDate)
CalendarparseDateTime(String lexicalXSDDateTime)
BigDecimalparseDecimal(String content)
doubleparseDouble(String lexicalXSDDouble)
floatparseFloat(String lexicalXSDFloat)
byte[]parseHexBinary(String s)
intparseInt(String s)
BigIntegerparseInteger(String lexicalXSDInteger)
longparseLong(String lexicalXSLong)
QNameparseQName(String lexicalXSDQName, NamespaceContext nsc)
shortparseShort(String lexicalXSDShort)
StringparseString(String lexicalXSDString)
CalendarparseTime(String lexicalXSDTime)
longparseUnsignedInt(String lexicalXSDUnsignedInt)
intparseUnsignedShort(String lexicalXSDUnsignedShort)
StringprintAnySimpleType(String val)
StringprintBase64Binary(byte[] val)
StringprintBoolean(boolean val)
StringprintByte(byte val)
StringprintDate(Calendar val)
StringprintDateTime(Calendar val)
StringprintDecimal(BigDecimal val)
StringprintDouble(double v)
StringprintFloat(float v)
StringprintHexBinary(byte[] data)
StringprintInt(int val)
StringprintInteger(BigInteger val)
StringprintLong(long val)
StringprintQName(QName val, NamespaceContext nsc)
StringprintShort(short val)
StringprintString(String val)
StringprintTime(Calendar val)
StringprintUnsignedInt(long val)
StringprintUnsignedShort(int val)
static byte[]_parseBase64Binary(String text)
static Boolean_parseBoolean(CharSequence literal)
static byte_parseByte(CharSequence literal)
static GregorianCalendar_parseDateTime(CharSequence s)
static BigDecimal_parseDecimal(CharSequence content)
static double_parseDouble(CharSequence _val)
static float_parseFloat(CharSequence _val)
static int_parseInt(CharSequence s)
Faster but less robust String->int conversion.
static BigInteger_parseInteger(CharSequence s)
static long_parseLong(CharSequence s)
static QName_parseQName(CharSequence text, NamespaceContext nsc)
static short_parseShort(CharSequence s)
static String_printBase64Binary(byte[] input)
static String_printBase64Binary(byte[] input, int offset, int len)
static int_printBase64Binary(byte[] input, int offset, int len, char[] buf, int ptr)
Encodes a byte array into a char array by doing base64 encoding.
static int_printBase64Binary(byte[] input, int offset, int len, byte[] out, int ptr)
Encodes a byte array into another byte array by first doing base64 encoding then encoding the result in ASCII.
static String_printBoolean(boolean val)
static String_printByte(byte val)
static String_printDate(Calendar val)
static String_printDateTime(Calendar val)
static String_printDecimal(BigDecimal val)
static String_printDouble(double v)
static String_printFloat(float v)
static String_printInt(int val)
static String_printInteger(BigInteger val)
static String_printLong(long val)
static String_printQName(QName val, NamespaceContext nsc)
static String_printShort(short val)

Field Detail

theInstance

public static final DatatypeConverterInterface theInstance
To avoid re-creating instances, we cache one instance.

Constructor Detail

DatatypeConverterImpl

protected DatatypeConverterImpl()

Method Detail

encode

public static char encode(int i)

encodeByte

public static byte encodeByte(int i)

installHook

public static String installHook(String s)
Just return the string passed as a parameter but installs an instance of this class as the DatatypeConverter implementation. Used from static fixed value initializers.

parseAnySimpleType

public String parseAnySimpleType(String lexicalXSDAnySimpleType)

parseBase64Binary

public byte[] parseBase64Binary(String lexicalXSDBase64Binary)

parseBoolean

public boolean parseBoolean(String lexicalXSDBoolean)

parseByte

public byte parseByte(String lexicalXSDByte)

parseDate

public Calendar parseDate(String lexicalXSDDate)

parseDateTime

public Calendar parseDateTime(String lexicalXSDDateTime)

parseDecimal

public BigDecimal parseDecimal(String content)

parseDouble

public double parseDouble(String lexicalXSDDouble)

parseFloat

public float parseFloat(String lexicalXSDFloat)

parseHexBinary

public byte[] parseHexBinary(String s)

parseInt

public int parseInt(String s)

parseInteger

public BigInteger parseInteger(String lexicalXSDInteger)

parseLong

public long parseLong(String lexicalXSLong)

parseQName

public QName parseQName(String lexicalXSDQName, NamespaceContext nsc)

parseShort

public short parseShort(String lexicalXSDShort)

parseString

public String parseString(String lexicalXSDString)

parseTime

public Calendar parseTime(String lexicalXSDTime)

parseUnsignedInt

public long parseUnsignedInt(String lexicalXSDUnsignedInt)

parseUnsignedShort

public int parseUnsignedShort(String lexicalXSDUnsignedShort)

printAnySimpleType

public String printAnySimpleType(String val)

printBase64Binary

public String printBase64Binary(byte[] val)

printBoolean

public String printBoolean(boolean val)

printByte

public String printByte(byte val)

printDate

public String printDate(Calendar val)

printDateTime

public String printDateTime(Calendar val)

printDecimal

public String printDecimal(BigDecimal val)

printDouble

public String printDouble(double v)

printFloat

public String printFloat(float v)

printHexBinary

public String printHexBinary(byte[] data)

printInt

public String printInt(int val)

printInteger

public String printInteger(BigInteger val)

printLong

public String printLong(long val)

printQName

public String printQName(QName val, NamespaceContext nsc)

printShort

public String printShort(short val)

printString

public String printString(String val)

printTime

public String printTime(Calendar val)

printUnsignedInt

public String printUnsignedInt(long val)

printUnsignedShort

public String printUnsignedShort(int val)

_parseBase64Binary

public static byte[] _parseBase64Binary(String text)

Parameters: text base64Binary data is likely to be long, and decoding requires each character to be accessed twice (once for counting length, another for decoding.) A benchmark showed that taking String is faster, presumably because JIT can inline a lot of string access (with data of 1K chars, it was twice as fast)

_parseBoolean

public static Boolean _parseBoolean(CharSequence literal)

_parseByte

public static byte _parseByte(CharSequence literal)

_parseDateTime

public static GregorianCalendar _parseDateTime(CharSequence s)

_parseDecimal

public static BigDecimal _parseDecimal(CharSequence content)

_parseDouble

public static double _parseDouble(CharSequence _val)

_parseFloat

public static float _parseFloat(CharSequence _val)

_parseInt

public static int _parseInt(CharSequence s)
Faster but less robust String->int conversion. Note that:
  1. XML Schema allows '+', but Integer#valueOf(String) is not.
  2. XML Schema allows leading and trailing (but not in-between) whitespaces. Integer#valueOf(String) doesn't allow any.

_parseInteger

public static BigInteger _parseInteger(CharSequence s)

_parseLong

public static long _parseLong(CharSequence s)

_parseQName

public static QName _parseQName(CharSequence text, NamespaceContext nsc)

Returns: null if fails to convert.

_parseShort

public static short _parseShort(CharSequence s)

_printBase64Binary

public static String _printBase64Binary(byte[] input)

_printBase64Binary

public static String _printBase64Binary(byte[] input, int offset, int len)

_printBase64Binary

public static int _printBase64Binary(byte[] input, int offset, int len, char[] buf, int ptr)
Encodes a byte array into a char array by doing base64 encoding. The caller must supply a big enough buffer.

Returns: the value of {@code ptr+((len+2)/3)*4}, which is the new offset in the output buffer where the further bytes should be placed.

_printBase64Binary

public static int _printBase64Binary(byte[] input, int offset, int len, byte[] out, int ptr)
Encodes a byte array into another byte array by first doing base64 encoding then encoding the result in ASCII. The caller must supply a big enough buffer.

Returns: the value of {@code ptr+((len+2)/3)*4}, which is the new offset in the output buffer where the further bytes should be placed.

_printBoolean

public static String _printBoolean(boolean val)

_printByte

public static String _printByte(byte val)

_printDate

public static String _printDate(Calendar val)

_printDateTime

public static String _printDateTime(Calendar val)

_printDecimal

public static String _printDecimal(BigDecimal val)

_printDouble

public static String _printDouble(double v)

_printFloat

public static String _printFloat(float v)

_printInt

public static String _printInt(int val)

_printInteger

public static String _printInteger(BigInteger val)

_printLong

public static String _printLong(long val)

_printQName

public static String _printQName(QName val, NamespaceContext nsc)

_printShort

public static String _printShort(short val)