in openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ResultSetResult.java [423:530]
protected Object getObjectInternal(Object obj, int metaTypeCode, Object arg, Joins joins)
throws SQLException {
if (metaTypeCode == -1 && obj instanceof Column)
metaTypeCode = ((Column) obj).getJavaType();
boolean isClob = (obj instanceof Column) ? ((Column) obj).getType() == Types.CLOB && !((Column) obj).isXML()
: false;
obj = translate(obj, joins);
Object val = null;
switch (metaTypeCode) {
case JavaTypes.BOOLEAN:
case JavaTypes.BOOLEAN_OBJ:
val = (getBooleanInternal(obj, joins)) ? Boolean.TRUE
: Boolean.FALSE;
break;
case JavaTypes.BYTE:
case JavaTypes.BYTE_OBJ:
val = getByteInternal(obj, joins);
break;
case JavaTypes.CHAR:
case JavaTypes.CHAR_OBJ:
val = getCharInternal(obj, joins);
break;
case JavaTypes.DOUBLE:
case JavaTypes.DOUBLE_OBJ:
val = getDoubleInternal(obj, joins);
break;
case JavaTypes.FLOAT:
case JavaTypes.FLOAT_OBJ:
val = getFloatInternal(obj, joins);
break;
case JavaTypes.INT:
case JavaTypes.INT_OBJ:
val = getIntInternal(obj, joins);
break;
case JavaTypes.LONG:
case JavaTypes.LONG_OBJ:
val = getLongInternal(obj, joins);
break;
case JavaTypes.SHORT:
case JavaTypes.SHORT_OBJ:
val = getShortInternal(obj, joins);
break;
case JavaTypes.STRING:
return getStringInternal(obj, joins, isClob);
case JavaTypes.OBJECT:
return _dict
.getBlobObject(_rs, ((Number) obj).intValue(), _store);
case JavaTypes.DATE:
return getDateInternal(obj, joins);
case JavaTypes.CALENDAR:
return getCalendarInternal(obj, joins);
case JavaTypes.LOCAL_DATE:
return getLocalDateInternal(obj, joins);
case JavaTypes.LOCAL_TIME:
return getLocalTimeInternal(obj, joins);
case JavaTypes.LOCAL_DATETIME:
return getLocalDateTimeInternal(obj, joins);
case JavaTypes.OFFSET_TIME:
return getOffsetTimeInternal(obj, joins);
case JavaTypes.OFFSET_DATETIME:
return getOffsetDateTimeInternal(obj, joins);
case JavaTypes.BIGDECIMAL:
return getBigDecimalInternal(obj, joins);
case JavaTypes.NUMBER:
return getNumberInternal(obj, joins);
case JavaTypes.BIGINTEGER:
return getBigIntegerInternal(obj, joins);
case JavaTypes.LOCALE:
return getLocaleInternal(obj, joins);
case JavaSQLTypes.SQL_ARRAY:
return getArrayInternal(obj, joins);
case JavaSQLTypes.ASCII_STREAM:
return getAsciiStreamInternal(obj, joins);
case JavaSQLTypes.BINARY_STREAM:
return getBinaryStreamInternal(obj, joins);
case JavaSQLTypes.BLOB:
return getBlobInternal(obj, joins);
case JavaSQLTypes.BYTES:
return getBytesInternal(obj, joins);
case JavaSQLTypes.CHAR_STREAM:
return getCharacterStreamInternal(obj, joins);
case JavaSQLTypes.CLOB:
return getClobInternal(obj, joins);
case JavaSQLTypes.SQL_DATE:
return getDateInternal(obj, (Calendar) arg, joins);
case JavaSQLTypes.SQL_OBJECT:
return getSQLObjectInternal(obj, (Map) arg, joins);
case JavaSQLTypes.REF:
return getRefInternal(obj, (Map) arg, joins);
case JavaSQLTypes.TIME:
return getTimeInternal(obj, (Calendar) arg, joins);
case JavaSQLTypes.TIMESTAMP:
return getTimestampInternal(obj, (Calendar) arg, joins);
default:
if (obj instanceof Column) {
Column col = (Column) obj;
if (col.getType() == Types.BLOB
|| col.getType() == Types.VARBINARY) {
return _dict
.getBlobObject(_rs, col.getIndex(), _store);
}
}
return _dict.getObject(_rs, ((Number) obj).intValue(), null);
}
return (_rs.wasNull()) ? null : val;
}