com.sun.xml.bind
Class DatatypeConverterImpl

java.lang.Object
  extended by com.sun.xml.bind.DatatypeConverterImpl
All Implemented Interfaces:
javax.xml.bind.DatatypeConverterInterface

public final class DatatypeConverterImpl
extends java.lang.Object
implements javax.xml.bind.DatatypeConverterInterface

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

When client apps 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 javax.xml.bind.DatatypeConverterInterface theInstance
          To avoid re-creating instances, we cache one instance.
 
Constructor Summary
protected DatatypeConverterImpl()
           
 
Method Summary
static byte[] _parseBase64Binary(java.lang.String text)
           
static java.lang.Boolean _parseBoolean(java.lang.CharSequence literal)
           
static byte _parseByte(java.lang.CharSequence literal)
           
static java.util.GregorianCalendar _parseDateTime(java.lang.CharSequence s)
           
static java.math.BigDecimal _parseDecimal(java.lang.CharSequence content)
           
static double _parseDouble(java.lang.CharSequence _val)
           
static float _parseFloat(java.lang.CharSequence _val)
           
static int _parseInt(java.lang.CharSequence s)
          Faster but less robust String->int conversion.
static java.math.BigInteger _parseInteger(java.lang.CharSequence s)
           
static long _parseLong(java.lang.CharSequence s)
           
static javax.xml.namespace.QName _parseQName(java.lang.CharSequence text, javax.xml.namespace.NamespaceContext nsc)
           
static short _parseShort(java.lang.CharSequence s)
           
static java.lang.String _printBase64Binary(byte[] input)
           
static java.lang.String _printBase64Binary(byte[] input, int offset, int len)
           
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 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 java.lang.String _printBoolean(boolean val)
           
static java.lang.String _printByte(byte val)
           
static java.lang.String _printDate(java.util.Calendar val)
           
static java.lang.String _printDateTime(java.util.Calendar val)
           
static java.lang.String _printDecimal(java.math.BigDecimal val)
           
static java.lang.String _printDouble(double v)
           
static java.lang.String _printFloat(float v)
           
static java.lang.String _printInt(int val)
           
static java.lang.String _printInteger(java.math.BigInteger val)
           
static java.lang.String _printLong(long val)
           
static java.lang.String _printQName(javax.xml.namespace.QName val, javax.xml.namespace.NamespaceContext nsc)
           
static java.lang.String _printShort(short val)
           
static char encode(int i)
           
static byte encodeByte(int i)
           
static java.lang.String installHook(java.lang.String s)
          Just return the string passed as a parameter but installs an instance of this class as the DatatypeConverter implementation.
 java.lang.String parseAnySimpleType(java.lang.String lexicalXSDAnySimpleType)
           
 byte[] parseBase64Binary(java.lang.String lexicalXSDBase64Binary)
           
 boolean parseBoolean(java.lang.String lexicalXSDBoolean)
           
 byte parseByte(java.lang.String lexicalXSDByte)
           
 java.util.Calendar parseDate(java.lang.String lexicalXSDDate)
           
 java.util.Calendar parseDateTime(java.lang.String lexicalXSDDateTime)
           
 java.math.BigDecimal parseDecimal(java.lang.String content)
           
 double parseDouble(java.lang.String lexicalXSDDouble)
           
 float parseFloat(java.lang.String lexicalXSDFloat)
           
 byte[] parseHexBinary(java.lang.String s)
           
 int parseInt(java.lang.String s)
           
 java.math.BigInteger parseInteger(java.lang.String lexicalXSDInteger)
           
 long parseLong(java.lang.String lexicalXSLong)
           
 javax.xml.namespace.QName parseQName(java.lang.String lexicalXSDQName, javax.xml.namespace.NamespaceContext nsc)
           
 short parseShort(java.lang.String lexicalXSDShort)
           
 java.lang.String parseString(java.lang.String lexicalXSDString)
           
 java.util.Calendar parseTime(java.lang.String lexicalXSDTime)
           
 long parseUnsignedInt(java.lang.String lexicalXSDUnsignedInt)
           
 int parseUnsignedShort(java.lang.String lexicalXSDUnsignedShort)
           
 java.lang.String printAnySimpleType(java.lang.String val)
           
 java.lang.String printBase64Binary(byte[] val)
           
 java.lang.String printBoolean(boolean val)
           
 java.lang.String printByte(byte val)
           
 java.lang.String printDate(java.util.Calendar val)
           
 java.lang.String printDateTime(java.util.Calendar val)
           
 java.lang.String printDecimal(java.math.BigDecimal val)
           
 java.lang.String printDouble(double v)
           
 java.lang.String printFloat(float v)
           
 java.lang.String printHexBinary(byte[] data)
           
 java.lang.String printInt(int val)
           
 java.lang.String printInteger(java.math.BigInteger val)
           
 java.lang.String printLong(long val)
           
 java.lang.String printQName(javax.xml.namespace.QName val, javax.xml.namespace.NamespaceContext nsc)
           
 java.lang.String printShort(short val)
           
 java.lang.String printString(java.lang.String val)
           
 java.lang.String printTime(java.util.Calendar val)
           
 java.lang.String printUnsignedInt(long val)
           
 java.lang.String printUnsignedShort(int val)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

theInstance

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

Constructor Detail

DatatypeConverterImpl

protected DatatypeConverterImpl()
Method Detail

parseString

public java.lang.String parseString(java.lang.String lexicalXSDString)
Specified by:
parseString in interface javax.xml.bind.DatatypeConverterInterface

parseInteger

public java.math.BigInteger parseInteger(java.lang.String lexicalXSDInteger)
Specified by:
parseInteger in interface javax.xml.bind.DatatypeConverterInterface

_parseInteger

public static java.math.BigInteger _parseInteger(java.lang.CharSequence s)

printInteger

public java.lang.String printInteger(java.math.BigInteger val)
Specified by:
printInteger in interface javax.xml.bind.DatatypeConverterInterface

_printInteger

public static java.lang.String _printInteger(java.math.BigInteger val)

parseInt

public int parseInt(java.lang.String s)
Specified by:
parseInt in interface javax.xml.bind.DatatypeConverterInterface

_parseInt

public static int _parseInt(java.lang.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.


parseLong

public long parseLong(java.lang.String lexicalXSLong)
Specified by:
parseLong in interface javax.xml.bind.DatatypeConverterInterface

_parseLong

public static long _parseLong(java.lang.CharSequence s)

parseShort

public short parseShort(java.lang.String lexicalXSDShort)
Specified by:
parseShort in interface javax.xml.bind.DatatypeConverterInterface

_parseShort

public static short _parseShort(java.lang.CharSequence s)

printShort

public java.lang.String printShort(short val)
Specified by:
printShort in interface javax.xml.bind.DatatypeConverterInterface

_printShort

public static java.lang.String _printShort(short val)

parseDecimal

public java.math.BigDecimal parseDecimal(java.lang.String content)
Specified by:
parseDecimal in interface javax.xml.bind.DatatypeConverterInterface

_parseDecimal

public static java.math.BigDecimal _parseDecimal(java.lang.CharSequence content)

parseFloat

public float parseFloat(java.lang.String lexicalXSDFloat)
Specified by:
parseFloat in interface javax.xml.bind.DatatypeConverterInterface

_parseFloat

public static float _parseFloat(java.lang.CharSequence _val)

printFloat

public java.lang.String printFloat(float v)
Specified by:
printFloat in interface javax.xml.bind.DatatypeConverterInterface

_printFloat

public static java.lang.String _printFloat(float v)

parseDouble

public double parseDouble(java.lang.String lexicalXSDDouble)
Specified by:
parseDouble in interface javax.xml.bind.DatatypeConverterInterface

_parseDouble

public static double _parseDouble(java.lang.CharSequence _val)

parseBoolean

public boolean parseBoolean(java.lang.String lexicalXSDBoolean)
Specified by:
parseBoolean in interface javax.xml.bind.DatatypeConverterInterface

_parseBoolean

public static java.lang.Boolean _parseBoolean(java.lang.CharSequence literal)

printBoolean

public java.lang.String printBoolean(boolean val)
Specified by:
printBoolean in interface javax.xml.bind.DatatypeConverterInterface

_printBoolean

public static java.lang.String _printBoolean(boolean val)

parseByte

public byte parseByte(java.lang.String lexicalXSDByte)
Specified by:
parseByte in interface javax.xml.bind.DatatypeConverterInterface

_parseByte

public static byte _parseByte(java.lang.CharSequence literal)

printByte

public java.lang.String printByte(byte val)
Specified by:
printByte in interface javax.xml.bind.DatatypeConverterInterface

_printByte

public static java.lang.String _printByte(byte val)

parseQName

public javax.xml.namespace.QName parseQName(java.lang.String lexicalXSDQName,
                                            javax.xml.namespace.NamespaceContext nsc)
Specified by:
parseQName in interface javax.xml.bind.DatatypeConverterInterface

_parseQName

public static javax.xml.namespace.QName _parseQName(java.lang.CharSequence text,
                                                    javax.xml.namespace.NamespaceContext nsc)
Returns:
null if fails to convert.

parseDateTime

public java.util.Calendar parseDateTime(java.lang.String lexicalXSDDateTime)
Specified by:
parseDateTime in interface javax.xml.bind.DatatypeConverterInterface

_parseDateTime

public static java.util.GregorianCalendar _parseDateTime(java.lang.CharSequence s)

printDateTime

public java.lang.String printDateTime(java.util.Calendar val)
Specified by:
printDateTime in interface javax.xml.bind.DatatypeConverterInterface

_printDateTime

public static java.lang.String _printDateTime(java.util.Calendar val)

parseBase64Binary

public byte[] parseBase64Binary(java.lang.String lexicalXSDBase64Binary)
Specified by:
parseBase64Binary in interface javax.xml.bind.DatatypeConverterInterface

parseHexBinary

public byte[] parseHexBinary(java.lang.String s)
Specified by:
parseHexBinary in interface javax.xml.bind.DatatypeConverterInterface

printHexBinary

public java.lang.String printHexBinary(byte[] data)
Specified by:
printHexBinary in interface javax.xml.bind.DatatypeConverterInterface

parseUnsignedInt

public long parseUnsignedInt(java.lang.String lexicalXSDUnsignedInt)
Specified by:
parseUnsignedInt in interface javax.xml.bind.DatatypeConverterInterface

printUnsignedInt

public java.lang.String printUnsignedInt(long val)
Specified by:
printUnsignedInt in interface javax.xml.bind.DatatypeConverterInterface

parseUnsignedShort

public int parseUnsignedShort(java.lang.String lexicalXSDUnsignedShort)
Specified by:
parseUnsignedShort in interface javax.xml.bind.DatatypeConverterInterface

parseTime

public java.util.Calendar parseTime(java.lang.String lexicalXSDTime)
Specified by:
parseTime in interface javax.xml.bind.DatatypeConverterInterface

printTime

public java.lang.String printTime(java.util.Calendar val)
Specified by:
printTime in interface javax.xml.bind.DatatypeConverterInterface

parseDate

public java.util.Calendar parseDate(java.lang.String lexicalXSDDate)
Specified by:
parseDate in interface javax.xml.bind.DatatypeConverterInterface

printDate

public java.lang.String printDate(java.util.Calendar val)
Specified by:
printDate in interface javax.xml.bind.DatatypeConverterInterface

_printDate

public static java.lang.String _printDate(java.util.Calendar val)

parseAnySimpleType

public java.lang.String parseAnySimpleType(java.lang.String lexicalXSDAnySimpleType)
Specified by:
parseAnySimpleType in interface javax.xml.bind.DatatypeConverterInterface

printString

public java.lang.String printString(java.lang.String val)
Specified by:
printString in interface javax.xml.bind.DatatypeConverterInterface

printInt

public java.lang.String printInt(int val)
Specified by:
printInt in interface javax.xml.bind.DatatypeConverterInterface

_printInt

public static java.lang.String _printInt(int val)

printLong

public java.lang.String printLong(long val)
Specified by:
printLong in interface javax.xml.bind.DatatypeConverterInterface

_printLong

public static java.lang.String _printLong(long val)

printDecimal

public java.lang.String printDecimal(java.math.BigDecimal val)
Specified by:
printDecimal in interface javax.xml.bind.DatatypeConverterInterface

_printDecimal

public static java.lang.String _printDecimal(java.math.BigDecimal val)

printDouble

public java.lang.String printDouble(double v)
Specified by:
printDouble in interface javax.xml.bind.DatatypeConverterInterface

_printDouble

public static java.lang.String _printDouble(double v)

printQName

public java.lang.String printQName(javax.xml.namespace.QName val,
                                   javax.xml.namespace.NamespaceContext nsc)
Specified by:
printQName in interface javax.xml.bind.DatatypeConverterInterface

_printQName

public static java.lang.String _printQName(javax.xml.namespace.QName val,
                                           javax.xml.namespace.NamespaceContext nsc)

printBase64Binary

public java.lang.String printBase64Binary(byte[] val)
Specified by:
printBase64Binary in interface javax.xml.bind.DatatypeConverterInterface

printUnsignedShort

public java.lang.String printUnsignedShort(int val)
Specified by:
printUnsignedShort in interface javax.xml.bind.DatatypeConverterInterface

printAnySimpleType

public java.lang.String printAnySimpleType(java.lang.String val)
Specified by:
printAnySimpleType in interface javax.xml.bind.DatatypeConverterInterface

installHook

public static java.lang.String installHook(java.lang.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.


_parseBase64Binary

public static byte[] _parseBase64Binary(java.lang.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)

encode

public static char encode(int i)

encodeByte

public static byte encodeByte(int i)

_printBase64Binary

public static java.lang.String _printBase64Binary(byte[] input)

_printBase64Binary

public static java.lang.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 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 ptr+((len+2)/3)*4, which is the new offset in the output buffer where the further bytes should be placed.