if (type == Type.STRING || type == Type.URI
|| type == Type.NAME || type == Type.PATH
|| type == Type.REFERENCE || type == Type.WEAKREFERENCE) {
return (T) value;
} else {
Converter converter = Conversions.convert(value);
if (base == Type.DATE) {
converter = Conversions.convert(converter.toCalendar());
} else if (base == Type.DECIMAL) {
converter = Conversions.convert(converter.toDecimal());
} else if (base == Type.DOUBLE) {
converter = Conversions.convert(converter.toDouble());
} else if (base == Type.LONG) {
converter = Conversions.convert(converter.toLong());
}
if (type == Type.BOOLEAN) {
return (T) Boolean.valueOf(converter.toBoolean());
} else if (type == Type.DATE) {
return (T) converter.toDate();
} else if (type == Type.DECIMAL) {
return (T) converter.toDecimal();
} else if (type == Type.DOUBLE) {
return (T) Double.valueOf(converter.toDouble());
} else if (type == Type.LONG) {
return (T) Long.valueOf(converter.toLong());
} else {
throw new UnsupportedOperationException(
"Unknown type: " + type);
}
}