in pig/src/main/java/com/twitter/elephantbird/pig/util/ThriftToPig.java [115:151]
public static Object toPigObject(Field field, Object value, boolean lazy) {
if (value == null) {
return null;
}
switch (field.getType()) {
case TType.BOOL:
return Integer.valueOf((Boolean)value ? 1 : 0);
case TType.BYTE :
return Integer.valueOf((Byte)value);
case TType.I16 :
return Integer.valueOf((Short)value);
case TType.STRING:
return stringTypeToPig(value);
case TType.STRUCT:
if (lazy) {
return new LazyTuple(field.gettStructDescriptor(), (TBase<?, ?>)value);
} else {
return toTuple(field.gettStructDescriptor(), (TBase<?, ?>)value);
}
case TType.MAP:
return toPigMap(field, (Map<Object, Object>)value, lazy);
case TType.SET:
return toPigBag(field.getSetElemField(), (Collection<Object>)value, lazy);
case TType.LIST:
return toPigBag(field.getListElemField(), (Collection<Object>)value, lazy);
case TType.ENUM:
if (useEnumId) {
return field.getEnumValueOf(value.toString()).getValue();
} else {
return value.toString();
}
default:
// standard types : I32, I64, DOUBLE, etc.
return value;
}
}