in openjpa-kernel/src/main/java/org/apache/openjpa/meta/JavaTypes.java [321:434]
public static Object convert(Object val, int typeCode) {
if (val == null)
return null;
switch (typeCode) {
case BIGDECIMAL:
if (val instanceof BigDecimal)
return val;
if (val instanceof Number)
return new BigDecimal(((Number) val).doubleValue());
if (val instanceof String)
return new BigDecimal(val.toString());
return val;
case BIGINTEGER:
if (val instanceof BigInteger)
return val;
if (val instanceof Number || val instanceof String)
return new BigInteger(val.toString());
return val;
case BOOLEAN:
case BOOLEAN_OBJ:
if (val instanceof String)
return Boolean.valueOf(val.toString());
return val;
case BYTE_OBJ:
if (val instanceof Byte)
return val;
if (val instanceof Number)
return ((Number) val).byteValue();
// no break
case BYTE:
if (val instanceof String)
return Byte.valueOf((String)val);
return val;
case CHAR:
case CHAR_OBJ:
if (val instanceof Character)
return val;
if (val instanceof String)
return val.toString().charAt(0);
if (val instanceof Number)
return (char) ((Number) val).intValue();
return val;
case DATE:
if (val instanceof String)
return new Date(val.toString());
return val;
case DOUBLE_OBJ:
if (val instanceof Double)
return val;
if (val instanceof Number)
return ((Number) val).doubleValue();
// no break
case DOUBLE:
if (val instanceof String)
return Double.valueOf(val.toString());
return val;
case FLOAT_OBJ:
if (val instanceof Float)
return val;
if (val instanceof Number)
return ((Number) val).floatValue();
// no break
case FLOAT:
if (val instanceof String)
return Float.valueOf(val.toString());
return val;
case INT_OBJ:
if (val instanceof Integer)
return val;
if (val instanceof Number)
return ((Number) val).intValue();
// no break
case INT:
if (val instanceof String)
return Integer.valueOf(val.toString());
return val;
case LONG_OBJ:
if (val instanceof Long)
return val;
if (val instanceof Number)
return ((Number) val).longValue();
// no break
case LONG:
if (val instanceof String)
return Long.valueOf(val.toString());
return val;
case NUMBER:
if (val instanceof Number)
return val;
if (val instanceof String)
return new BigDecimal(val.toString());
return val;
case SHORT_OBJ:
if (val instanceof Short)
return val;
if (val instanceof Number)
return ((Number) val).shortValue();
// no break
case SHORT:
if (val instanceof String)
return Short.valueOf(val.toString());
return val;
case UUID_OBJ:
if (val instanceof String) {
return UUID.fromString((String) val);
}
return (UUID) val;
case STRING:
return val.toString();
default:
return val;
}
}