@Override public long getLong() { if (isPlainLiteral()) { return Long.parseLong(getLexicalForm()); } else { return asNumber(getValue()).longValue(); } }
@Override public double getDouble() { if (isPlainLiteral()) { return Double.parseDouble(getLexicalForm()); } else { return asNumber(getValue()).doubleValue(); } }
@Override public float getFloat() { if (isPlainLiteral()) { return Float.parseFloat(getLexicalForm()); } else { return asNumber(getValue()).floatValue(); } }
@Override public byte getByte() { if (isPlainLiteral()) { return Byte.parseByte(getLexicalForm()); } else { return byteValue( asNumber( getValue() ) ); } }
@Override public int getInt() { if (isPlainLiteral()) { return Integer.parseInt(getLexicalForm()); } else { return intValue( asNumber( getValue() ) ); } }
@Override public boolean getBoolean() { Object value = asNode().getLiteralValue(); if (isPlainLiteral()) { // old style plain literal - try parsing the string if (value.equals("true")) { return true; } else if (value.equals("false")) { return false; } else { throw new BadBooleanException( value.toString() ); } } else { // typed literal if (value instanceof Boolean) { return ((Boolean)value).booleanValue(); } else { throw new DatatypeFormatException(this.toString() + " is not a Boolean"); } } }
@Override public short getShort() { if (isPlainLiteral()) { return Short.parseShort(getLexicalForm()); } else { return shortValue( asNumber( getValue() ) ); } }
@Override public char getChar() { if (isPlainLiteral()) { if (getString().length()==1) { return (getString().charAt(0)); } else { throw new BadCharLiteralException( getString() ); } } else { Object value = getValue(); if (value instanceof Character) { return ((Character) value).charValue(); } else { throw new DatatypeFormatException(value.toString() + " is not a Character"); } } }