Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   * 
  *   http://www.apache.org/licenses/LICENSE-2.0
  * 
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.    
  */
 
 package org.apache.tuscany.sca.databinding.impl;
 
 import java.io.Writer;
 
Utility class for XSD data type conversions

Version:
$Rev: 938572 $ $Date: 2010-04-27 18:14:08 +0100 (Tue, 27 Apr 2010) $
Tuscany.spi.extension.asclient:
 
 public class XSDDataTypeConverter {

Tuscany.spi.extension.asclient:
 
     public static final class Base64Binary {
         private static final char[] S_BASE64CHAR =
         {'A''B''C''D''E''F''G''H''I''J''K''L''M''N''O''P''Q''R''S',
             'T''U''V''W''X''Y''Z''a''b''c''d''e''f''g''h''i''j''k''l',
             'm''n''o''p''q''r''s''t''u''v''w''x''y''z''0''1''2''3''4',
             '5''6''7''8''9''+''/'};
 
         private static final char S_BASE64PAD = '=';
 
         private static final byte[] S_DECODETABLE = new byte[128];
 
         static {
             for (int i = 0; i < .i++) {
                 [i] = .// 127
             }
             for (int i = 0; i < .i++) {
                 // 0 to 63
                 [[i]] = (bytei;
             }
         }
 
         private Base64Binary() {
         }

        
 
         public static byte[] decode(char[] dataint offint len) {
             char[] ibuf = new char[4];
             int ibufcount = 0;
             byte[] obuf = new byte[len / 4 * 3 + 3];
             int obufcount = 0;
             for (int i = offi < off + leni++) {
                 char ch = data[i];
                 if (ch ==  || ch < . && [ch] != .) {
                     ibuf[ibufcount++] = ch;
                     if (ibufcount == ibuf.length) {
                         ibufcount = 0;
                         obufcount += decode0(ibufobufobufcount);
                     }
                 }
             }
             if (obufcount == obuf.length) {
                 return obuf;
             }
             byte[] ret = new byte[obufcount];
             System.arraycopy(obuf, 0, ret, 0, obufcount);
             return ret;
        }

        
        public static void decode(char[] dataint offint lenOutputStream ostreamthrows IOException {
            char[] ibuf = new char[4];
            int ibufcount = 0;
            byte[] obuf = new byte[3];
            for (int i = offi < off + leni++) {
                char ch = data[i];
                if (ch ==  || ch < . && [ch] != .) {
                    ibuf[ibufcount++] = ch;
                    if (ibufcount == ibuf.length) {
                        ibufcount = 0;
                        int obufcount = decode0(ibufobuf, 0);
                        ostream.write(obuf, 0, obufcount);
                    }
                }
            }
        }

        
        public static byte[] decode(String data) {
            char[] ibuf = new char[4];
            int ibufcount = 0;
            byte[] obuf = new byte[data.length() / 4 * 3 + 3];
            int obufcount = 0;
            for (int i = 0; i < data.length(); i++) {
                char ch = data.charAt(i);
                if (ch ==  || ch < . && [ch] != .) {
                    ibuf[ibufcount++] = ch;
                    if (ibufcount == ibuf.length) {
                        ibufcount = 0;
                        obufcount += decode0(ibufobufobufcount);
                    }
                }
            }
            if (obufcount == obuf.length) {
                return obuf;
            }
            byte[] ret = new byte[obufcount];
            System.arraycopy(obuf, 0, ret, 0, obufcount);
            return ret;
        }

        
        public static void decode(String dataOutputStream ostreamthrows IOException {
            char[] ibuf = new char[4];
            int ibufcount = 0;
            byte[] obuf = new byte[3];
            for (int i = 0; i < data.length(); i++) {
                char ch = data.charAt(i);
                if (ch ==  || ch < . && [ch] != .) {
                    ibuf[ibufcount++] = ch;
                    if (ibufcount == ibuf.length) {
                        ibufcount = 0;
                        int obufcount = decode0(ibufobuf, 0);
                        ostream.write(obuf, 0, obufcount);
                    }
                }
            }
        }
        private static int decode0(char[] ibufbyte[] obufint index) {
            int wp = index;
            int outlen = 3;
            if (ibuf[3] == ) {
                outlen = 2;
            }
            if (ibuf[2] == ) {
                outlen = 1;
            }
            int b0 = [ibuf[0]];
            int b1 = [ibuf[1]];
            int b2 = [ibuf[2]];
            int b3 = [ibuf[3]];
            switch (outlen) {
                case 1:
                    obuf[wp] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
                    return 1;
                case 2:
                    obuf[wp++] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
                    obuf[wp] = (byte) (b1 << 4 & 0xf0 | b2 >> 2 & 0xf);
                    return 2;
                case 3:
                    obuf[wp++] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
                    obuf[wp++] = (byte) (b1 << 4 & 0xf0 | b2 >> 2 & 0xf);
                    obuf[wp] = (byte) (b2 << 6 & 0xc0 | b3 & 0x3f);
                    return 3;
                default:
                    throw new IllegalArgumentException("The character sequence is not base64 encoded.");
            }
        }

        
Returns base64 representation of specified byte array.
        public static String encode(byte[] data) {
            return encode(data, 0, data.length);
        }

        
Returns base64 representation of specified byte array.
        public static String encode(byte[] dataint offint len) {
            if (len <= 0) {
                return "";
            }
            char[] out = new char[len / 3 * 4 + 4];
            int rindex = off;
            int windex = 0;
            int rest = len - off;
            while (rest >= 3) {
                int i =
                    ((data[rindex] & 0xff) << 16) + ((data[rindex + 1] & 0xff) << 8)
                        + (data[rindex + 2] & 0xff);
                out[windex++] = [i >> 18];
                out[windex++] = [(i >> 12) & 0x3f];
                out[windex++] = [(i >> 6) & 0x3f];
                out[windex++] = [i & 0x3f];
                rindex += 3;
                rest -= 3;
            }
            if (rest == 1) {
                int i = data[rindex] & 0xff;
                out[windex++] = [i >> 2];
                out[windex++] = [(i << 4) & 0x3f];
                out[windex++] = ;
                out[windex++] = ;
            } else if (rest == 2) {
                int i = ((data[rindex] & 0xff) << 8) + (data[rindex + 1] & 0xff);
                out[windex++] = [i >> 10];
                out[windex++] = [(i >> 4) & 0x3f];
                out[windex++] = [(i << 2) & 0x3f];
                out[windex++] = ;
            }
            return new String(out, 0, windex);
        }

        
Outputs base64 representation of the specified byte array to a byte stream.
        public static void encode(byte[] dataint offint lenOutputStream ostreamthrows IOException {
            if (len <= 0) {
                return;
            }
            byte[] out = new byte[4];
            int rindex = off;
            int rest = len - off;
            while (rest >= 3) {
                int i =
                    ((data[rindex] & 0xff) << 16) + ((data[rindex + 1] & 0xff) << 8)
                        + (data[rindex + 2] & 0xff);
                out[0] = (byte[i >> 18];
                out[1] = (byte[(i >> 12) & 0x3f];
                out[2] = (byte[(i >> 6) & 0x3f];
                out[3] = (byte[i & 0x3f];
                ostream.write(out, 0, 4);
                rindex += 3;
                rest -= 3;
            }
            if (rest == 1) {
                int i = data[rindex] & 0xff;
                out[0] = (byte[i >> 2];
                out[1] = (byte[(i << 4) & 0x3f];
                out[2] = (byte;
                out[3] = (byte;
                ostream.write(out, 0, 4);
            } else if (rest == 2) {
                int i = ((data[rindex] & 0xff) << 8) + (data[rindex + 1] & 0xff);
                out[0] = (byte[i >> 10];
                out[1] = (byte[(i >> 4) & 0x3f];
                out[2] = (byte[(i << 2) & 0x3f];
                out[3] = (byte;
                ostream.write(out, 0, 4);
            }
        }

        
Outputs base64 representation of the specified byte array to a character stream.
        public static void encode(byte[] dataint offint lenWriter writerthrows IOException {
            if (len <= 0) {
                return;
            }
            char[] out = new char[4];
            int rindex = off;
            int rest = len - off;
            int output = 0;
            while (rest >= 3) {
                int i =
                    ((data[rindex] & 0xff) << 16) + ((data[rindex + 1] & 0xff) << 8)
                        + (data[rindex + 2] & 0xff);
                out[0] = [i >> 18];
                out[1] = [(i >> 12) & 0x3f];
                out[2] = [(i >> 6) & 0x3f];
                out[3] = [i & 0x3f];
                writer.write(out, 0, 4);
                rindex += 3;
                rest -= 3;
                output += 4;
                if (output % 76 == 0) {
                    writer.write("\n");
                }
            }
            if (rest == 1) {
                int i = data[rindex] & 0xff;
                out[0] = [i >> 2];
                out[1] = [(i << 4) & 0x3f];
                out[2] = ;
                out[3] = ;
                writer.write(out, 0, 4);
            } else if (rest == 2) {
                int i = ((data[rindex] & 0xff) << 8) + (data[rindex + 1] & 0xff);
                out[0] = [i >> 10];
                out[1] = [(i >> 4) & 0x3f];
                out[2] = [(i << 2) & 0x3f];
                out[3] = ;
                writer.write(out, 0, 4);
            }
        }
    }

    

Utility class for xs:hexbinary.

    public static final class HexBinary {
        private HexBinary() {
        }

        
Converts the string pValue into an array of hex bytes.
        public static byte[] decode(String pValue) {
            if ((pValue.length() % 2) != 0) {
                throw new IllegalArgumentException("A HexBinary string must have even length.");
            }
            byte[] result = new byte[pValue.length() / 2];
            int j = 0;
            int i = 0;
            while (i < pValue.length()) {
                byte b;
                char c = pValue.charAt(i++);
                char d = pValue.charAt(i++);
                if (c >= '0' && c <= '9') {
                    b = (byte) ((c - '0') << 4);
                } else if (c >= 'A' && c <= 'F') {
                    b = (byte) ((c - 'A' + 10) << 4);
                } else if (c >= 'a' && c <= 'f') {
                    b = (byte) ((c - 'a' + 10) << 4);
                } else {
                    throw new IllegalArgumentException("Invalid hex digit: " + c);
                }
                if (d >= '0' && d <= '9') {
                    b += (byte) (d - '0');
                } else if (d >= 'A' && d <= 'F') {
                    b += (byte) (d - 'A' + 10);
                } else if (d >= 'a' && d <= 'f') {
                    b += (byte) (d - 'a' + 10);
                } else {
                    throw new IllegalArgumentException("Invalid hex digit: " + d);
                }
                result[j++] = b;
            }
            return result;
        }

        
Converts the byte array pHexBinary into a string.
        public static String encode(byte[] pHexBinary) {
            StringBuffer result = new StringBuffer();
            for (int i = 0; i < pHexBinary.lengthi++) {
                byte b = pHexBinary[i];
                byte c = (byte) ((b & 0xf0) >> 4);
                if (c <= 9) {
                    result.append((char) ('0' + c));
                } else {
                    result.append((char) ('A' + c - 10));
                }
                c = (byte) (b & 0x0f);
                if (c <= 9) {
                    result.append((char) ('0' + c));
                } else {
                    result.append((char) ('A' + c - 10));
                }
            }
            return result.toString();
        }

        
Creates a clone of the given byte array.
        public static byte[] getClone(byte[] pHexBinary) {
            byte[] result = new byte[pHexBinary.length];
            System.arraycopy(pHexBinary, 0, result, 0, pHexBinary.length);
            return result;
        }
    }
    public class XSDDateFormat extends XSDDateTimeFormat {
        private static final long serialVersionUID = -1629412916827246627L;

        
Creates a new instance.
        public XSDDateFormat() {
            super(truefalse);
        }
    }

    

An instance of java.text.Format, which may be used to parse and format xs:dateTime values.

    public static class XSDDateTimeFormat extends Format {
        private static final long serialVersionUID = -1148332471737068969L;
        final boolean parseDate;
        final boolean parseTime;

        
Creates a new instance.
        public XSDDateTimeFormat() {
            this(truetrue);
        }
        XSDDateTimeFormat(boolean pParseDateboolean pParseTime) {
             = pParseDate;
             = pParseTime;
        }
        private void append(StringBuffer pBufferint pNumint pMinLen) {
            String s = Integer.toString(pNum);
            for (int i = s.length(); i < pMinLeni++) {
                pBuffer.append('0');
            }
            pBuffer.append(s);
        }
        @Override
        public StringBuffer format(Object pCalendarStringBuffer pBufferFieldPosition pPos) {
            assert pCalendar != null : "The Calendar argument must not be null.";
            assert pBuffer != null : "The StringBuffer argument must not be null.";
            assert pPos != null : "The FieldPosition argument must not be null.";
            Calendar cal = (CalendarpCalendar;
            if () {
                int year = cal.get(.);
                if (year < 0) {
                    pBuffer.append('-');
                    year = -year;
                }
                append(pBufferyear, 4);
                pBuffer.append('-');
                append(pBuffercal.get(.) + 1, 2);
                pBuffer.append('-');
                append(pBuffercal.get(.), 2);
                if () {
                    pBuffer.append('T');
                }
            }
            if () {
                append(pBuffercal.get(.), 2);
                pBuffer.append(':');
                append(pBuffercal.get(.), 2);
                pBuffer.append(':');
                append(pBuffercal.get(.), 2);
                int millis = cal.get(.);
                if (millis > 0) {
                    pBuffer.append('.');
                    append(pBuffermillis, 3);
                }
            }
            TimeZone tz = cal.getTimeZone();
            // JDK 1.4: int offset = tz.getOffset(cal.getTimeInMillis());
            int offset = cal.get(.);
            if (tz.inDaylightTime(cal.getTime())) {
                offset += cal.get(.);
            }
            if (offset == 0) {
                pBuffer.append('Z');
            } else {
                if (offset < 0) {
                    pBuffer.append('-');
                    offset = -offset;
                } else {
                    pBuffer.append('+');
                }
                int minutes = offset / (60 * 1000);
                int hours = minutes / 60;
                minutes -= hours * 60;
                append(pBufferhours, 2);
                pBuffer.append(':');
                append(pBufferminutes, 2);
            }
            return pBuffer;
        }
        private int parseInt(String pStringint offsetStringBuffer pDigits) {
            int length = pString.length();
            int pOffset = offset;
            pDigits.setLength(0);
            while (pOffset < length) {
                char c = pString.charAt(pOffset);
                if (Character.isDigit(c)) {
                    pDigits.append(c);
                    ++pOffset;
                } else {
                    break;
                }
            }
            return pOffset;
        }
        @Override
        public Object parseObject(String pStringParsePosition pParsePosition) {
            assert pString != null : "The String argument must not be null.";
            assert pParsePosition != null : "The ParsePosition argument must not be null.";
            int offset = pParsePosition.getIndex();
            int length = pString.length();
            boolean isMinus = false;
            StringBuffer digits = new StringBuffer();
            int year = 0;
            int month = 0;
            int mday = 0;
            if () {
                // Sign
                if (offset < length) {
                    char c = pString.charAt(offset);
                    if (c == '+') {
                        ++offset;
                    } else if (c == '-') {
                        ++offset;
                        isMinus = true;
                    }
                }
                offset = parseInt(pStringoffsetdigits);
                if (digits.length() < 4) {
                    pParsePosition.setErrorIndex(offset);
                    return null;
                }
                year = Integer.parseInt(digits.toString());
                if (offset < length && pString.charAt(offset) == '-') {
                    ++offset;
                } else {
                    pParsePosition.setErrorIndex(offset);
                    return null;
                }
                offset = parseInt(pStringoffsetdigits);
                if (digits.length() != 2) {
                    pParsePosition.setErrorIndex(offset);
                    return null;
                }
                month = Integer.parseInt(digits.toString());
                if (offset < length && pString.charAt(offset) == '-') {
                    ++offset;
                } else {
                    pParsePosition.setErrorIndex(offset);
                    return null;
                }
                offset = parseInt(pStringoffsetdigits);
                if (digits.length() != 2) {
                    pParsePosition.setErrorIndex(offset);
                    return null;
                }
                mday = Integer.parseInt(digits.toString());
                if () {
                    if (offset < length && pString.charAt(offset) == 'T') {
                        ++offset;
                    } else {
                        pParsePosition.setErrorIndex(offset);
                        return null;
                    }
                }
            } else {
                year = month = mday = 0;
            }
            int hour = 0;
            int minute = 0;
            int second = 0;
            int millis = 0;
            if () {
                offset = parseInt(pStringoffsetdigits);
                if (digits.length() != 2) {
                    pParsePosition.setErrorIndex(offset);
                    return null;
                }
                hour = Integer.parseInt(digits.toString());
                if (offset < length && pString.charAt(offset) == ':') {
                    ++offset;
                } else {
                    pParsePosition.setErrorIndex(offset);
                    return null;
                }
                offset = parseInt(pStringoffsetdigits);
                if (digits.length() != 2) {
                    pParsePosition.setErrorIndex(offset);
                    return null;
                }
                minute = Integer.parseInt(digits.toString());
                if (offset < length && pString.charAt(offset) == ':') {
                    ++offset;
                } else {
                    pParsePosition.setErrorIndex(offset);
                    return null;
                }
                offset = parseInt(pStringoffsetdigits);
                if (digits.length() != 2) {
                    pParsePosition.setErrorIndex(offset);
                    return null;
                }
                second = Integer.parseInt(digits.toString());
                if (offset < length && pString.charAt(offset) == '.') {
                    ++offset;
                    offset = parseInt(pStringoffsetdigits);
                    if (digits.length() > 0) {
                        millis = Integer.parseInt(digits.toString());
                    } else {
                        millis = 0;
                    }
                } else {
                    millis = 0;
                }
            } else {
                hour = minute = second = millis = 0;
            }
            digits.setLength(0);
            digits.append("GMT");
            if (offset < length) {
                char c = pString.charAt(offset);
                if (c == 'Z') {
                    // Ignore UTC, it is the default
                    ++offset;
                } else if (c == '+' || c == '-') {
                    digits.append(c);
                    ++offset;
                    for (int i = 0; i < 5; i++) {
                        if (offset >= length) {
                            pParsePosition.setErrorIndex(offset);
                            return null;
                        }
                        c = pString.charAt(offset);
                        if ((i != 2 && Character.isDigit(c)) || (i == 2 && c == ':')) {
                            digits.append(c);
                        } else {
                            pParsePosition.setErrorIndex(offset);
                            return null;
                        }
                        ++offset;
                    }
                }
            }
            Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(digits.toString()));
            cal.set(isMinus ? -year : year ? month - 1 : monthmdayhourminutesecond);
            cal.set(.millis);
            pParsePosition.setIndex(offset);
            return cal;
        }
    }
    public static class XSDTimeFormat extends XSDDateTimeFormat {
        private static final long serialVersionUID = 1346506860724640517L;

        
Creates a new instance.
        public XSDTimeFormat() {
            super(falsetrue);
        }
    }
    private static final long MAX_UNSIGNED_INT = (((long.) * 2) + 1;
    private static final int MAX_UNSIGNED_SHORT = . * 2 + 1;
    public String parseAnySimpleType(String value) {
        return value;
    }
    public byte[] parseBase64Binary(String value) {
        return Base64Binary.decode(value);
    }
    public boolean parseBoolean(String value) {
        return Boolean.valueOf(value).booleanValue();
    }
    public byte parseByte(String value) {
        return Byte.parseByte(value);
    }
    public Calendar parseDate(String value) {
        XSDDateFormat format = new XSDDateFormat();
        ParsePosition pos = new ParsePosition(0);
        Calendar cal = (Calendarformat.parseObject(valuepos);
        if (cal == null) {
            throw new IllegalArgumentException("Failed to parse date " + value + " at:"
                + value.substring(pos.getErrorIndex()));
        }
        return cal;
    }
    public Calendar parseDateTime(String value) {
        XSDDateTimeFormat format = new XSDDateTimeFormat();
        ParsePosition pos = new ParsePosition(0);
        Calendar cal = (Calendarformat.parseObject(valuepos);
        if (cal == null) {
            throw new IllegalArgumentException("Failed to parse dateTime " + value + " at:"
                + value.substring(pos.getErrorIndex()));
        }
        return cal;
    }
    public BigDecimal parseDecimal(String value) {
        return new BigDecimal(value);
    }
    public double parseDouble(String value) {
        if ("INF".equals(value)) {
            return .;
        } else if ("-INF".equals(value)) {
            return .;
        } else if ("NaN".equals(value)) {
            return .;
        } else {
            return Double.parseDouble(value);
        }
    }
    public Duration parseDuration(String pDuration) {
        try {
            return DatatypeFactory.newInstance().newDuration(pDuration);
        } catch (DatatypeConfigurationException e) {
            throw new IllegalArgumentException(e);
        }
    }
    public float parseFloat(String value) {
        if ("INF".equals(value)) {
            return .;
        } else if ("-INF".equals(value)) {
            return .;
        } else if ("NaN".equals(value)) {
            return .;
        } else {
            return Float.parseFloat(value);
        }
    }
    public byte[] parseHexBinary(String value) {
        return HexBinary.decode(value);
    }
    public int parseInt(String value) {
        return Integer.parseInt(value);
    }
    public BigInteger parseInteger(String value) {
        return new BigInteger(value);
    }
    public long parseLong(String value) {
        return Long.parseLong(value);
    }
    public QName parseQName(String valueNamespaceContext context) {
        int offset = value.indexOf(':');
        String uri;
        String localName;
        switch (offset) {
            case -1:
                localName = value;
                uri = context.getNamespaceURI("");
                if (uri == null) {
                    // Should not happen, indicates an error in the
                    // NamespaceContext
                    // implementation
                    throw new IllegalArgumentException("The default prefix is not bound.");
                }
                break;
            case 0:
                throw new IllegalArgumentException("Default prefix must be indicated by not using a colon: "
                    + value);
            default:
                String prefix = value.substring(0, offset);
                localName = value.substring(offset + 1);
                uri = context.getNamespaceURI(prefix);
                if (uri == null) {
                    throw new IllegalArgumentException("The prefix " + prefix + " is not bound.");
                }
        }
        return new QName(urilocalName);
    }
    public short parseShort(String value) {
        return Short.parseShort(value);
    }
    public String parseString(String value) {
        return value;
    }
    public Calendar parseTime(String value) {
        XSDTimeFormat format = new XSDTimeFormat();
        ParsePosition pos = new ParsePosition(0);
        Calendar cal = (Calendarformat.parseObject(valuepos);
        if (cal == null) {
            throw new IllegalArgumentException("Failed to parse time " + value + " at:"
                + value.substring(pos.getErrorIndex()));
        }
        return cal;
    }
    public long parseUnsignedInt(String value) {
        long l = Long.parseLong(value);
        if (l < 0) {
            throw new IllegalArgumentException("Failed to parse UnsignedInt " + value
                + ": result is negative");
        }
        if (l > ) {
            throw new IllegalArgumentException("Failed to parse UnsignedInt " + value
                + ": result exceeds maximum value " + );
        }
        return l;
    }
    public int parseUnsignedShort(String value) {
        int i = Integer.parseInt(value);
        if (i < 0) {
            throw new IllegalArgumentException("Failed to parse UnsignedShort " + value
                + ": result is negative");
        }
        if (i > ) {
            throw new IllegalArgumentException("Failed to parse UnsignedShort " + value
                + ": result exceeds maximum value " + );
        }
        return i;
    }
    public String printAnySimpleType(String value) {
        return value;
    }
    public String printBase64Binary(byte[] value) {
        return Base64Binary.encode(value);
    }
    public String printBoolean(boolean value) {
        return (value ? . : .).toString();
    }
    public String printByte(byte value) {
        return Byte.toString(value);
    }
    public String printDate(Calendar value) {
        return new XSDDateFormat().format(value);
    }
    public String printDateTime(Calendar value) {
        return new XSDDateTimeFormat().format(value);
    }
    public String printDecimal(BigDecimal value) {
        return value.toString();
    }
    public String printDouble(double value) {
        return Double.toString(value);
    }
    public String printDuration(Duration pDuration) {
        return pDuration.toString();
    }
    public String printFloat(float value) {
        return Float.toString(value);
    }
    public String printHexBinary(byte[] value) {
        return HexBinary.encode(value);
    }
    public String printInt(int value) {
        return Integer.toString(value);
    }
    public String printInteger(BigInteger value) {
        return value.toString();
    }
    public String printLong(long value) {
        return Long.toString(value);
    }
    public String printQName(QName valueNamespaceContext context) {
        String prefix = context.getPrefix(value.getNamespaceURI());
        if (prefix == null) {
            throw new IllegalArgumentException("The namespace URI " + value.getNamespaceURI()
                + " is not bound.");
        } else if (..equals(prefix)) {
            return value.getLocalPart();
        } else {
            return prefix + ":" + value.getLocalPart();
        }
    }
    public String printShort(short value) {
        return Short.toString(value);
    }
    public String printString(String value) {
        return value;
    }
    public String printTime(Calendar value) {
        return new XSDTimeFormat().format(value);
    }
    public String printUnsignedInt(long value) {
        return Long.toString(value);
    }
    public String printUnsignedShort(int value) {
        return Integer.toString(value);
    }