in typesystem/src/main/java/org/apache/atlas/typesystem/persistence/StructInstance.java [182:238]
public Object get(String attrName) throws AtlasException {
AttributeInfo i = fieldMapping.fields.get(attrName);
if (i == null) {
throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName()));
}
int pos = fieldMapping.fieldPos.get(attrName);
int nullPos = fieldMapping.fieldNullPos.get(attrName);
if (nullFlags[nullPos]) {
if ( i.dataType().getTypeCategory() == DataTypes.TypeCategory.PRIMITIVE) {
return ((DataTypes.PrimitiveType) i.dataType()).nullValue();
} else {
return null;
}
}
if (i.dataType() == DataTypes.BOOLEAN_TYPE) {
return bools[pos];
} else if (i.dataType() == DataTypes.BYTE_TYPE) {
return bytes[pos];
} else if (i.dataType() == DataTypes.SHORT_TYPE) {
return shorts[pos];
} else if (i.dataType() == DataTypes.INT_TYPE) {
return ints[pos];
} else if (i.dataType() == DataTypes.LONG_TYPE) {
return longs[pos];
} else if (i.dataType() == DataTypes.FLOAT_TYPE) {
return floats[pos];
} else if (i.dataType() == DataTypes.DOUBLE_TYPE) {
return doubles[pos];
} else if (i.dataType() == DataTypes.BIGINTEGER_TYPE) {
return bigIntegers[pos];
} else if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) {
return bigDecimals[pos];
} else if (i.dataType() == DataTypes.DATE_TYPE) {
return dates[pos];
} else if (i.dataType() == DataTypes.STRING_TYPE) {
return strings[pos];
} else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ENUM) {
return ((EnumType) i.dataType()).fromOrdinal(ints[pos]);
} else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) {
return arrays[pos];
} else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) {
return maps[pos];
} else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.STRUCT
|| i.dataType().getTypeCategory() == DataTypes.TypeCategory.TRAIT) {
return structs[pos];
} else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.CLASS) {
if (ids[pos] != null) {
return ids[pos];
} else {
return referenceables[pos];
}
} else {
throw new AtlasException(String.format("Unknown datatype %s", i.dataType()));
}
}