private AttributeInfo constructAttributeInfo(AttributeDefinition attrDef) throws AtlasException { AttributeInfo info = new AttributeInfo(this, attrDef, null); if (transientTypes.keySet().contains(attrDef.dataTypeName)) { recursiveRefs.add(info); } if (info.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) { DataTypes.ArrayType arrType = (DataTypes.ArrayType) info.dataType(); if (transientTypes.keySet().contains(arrType.getElemType().getName())) { recursiveArrayTypes.add(arrType); } } if (info.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) { DataTypes.MapType mapType = (DataTypes.MapType) info.dataType(); if (transientTypes.keySet().contains(mapType.getKeyType().getName())) { recursiveMapTypes.add(mapType); } else if (transientTypes.keySet().contains(mapType.getValueType().getName())) { recursiveMapTypes.add(mapType); } } if (info.multiplicity.upper > 1 && !(info.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP || info.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY)) { throw new AtlasException( String.format("A multiplicty of more than one requires a collection type for attribute '%s'", info.name)); } return info; }
private AttributeInfo constructAttributeInfo(AttributeDefinition attrDef) throws AtlasException { AttributeInfo info = new AttributeInfo(this, attrDef, null); if (transientTypes.keySet().contains(attrDef.dataTypeName)) { recursiveRefs.add(info); } if (info.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) { DataTypes.ArrayType arrType = (DataTypes.ArrayType) info.dataType(); if (transientTypes.keySet().contains(arrType.getElemType().getName())) { recursiveArrayTypes.add(arrType); } } if (info.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) { DataTypes.MapType mapType = (DataTypes.MapType) info.dataType(); if (transientTypes.keySet().contains(mapType.getKeyType().getName())) { recursiveMapTypes.add(mapType); } else if (transientTypes.keySet().contains(mapType.getValueType().getName())) { recursiveMapTypes.add(mapType); } } if (info.multiplicity.upper > 1 && !(info.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP || info.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY)) { throw new AtlasException( String.format("A multiplicty of more than one requires a collection type for attribute '%s'", info.name)); } return info; }
void processValue(IDataType dT, Object val) throws AtlasException { if (val != null) { if (dT.getTypeCategory() == DataTypes.TypeCategory.ARRAY) { IDataType elemType = ((DataTypes.ArrayType) dT).getElemType(); processCollection(elemType, val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.MAP) { IDataType keyType = ((DataTypes.MapType) dT).getKeyType(); IDataType valueType = ((DataTypes.MapType) dT).getValueType(); processMap(keyType, valueType, val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.STRUCT || dT.getTypeCategory() == DataTypes.TypeCategory.TRAIT) { processStruct(val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.CLASS) { processReferenceableInstance(val); } } }
void traverseValue(IDataType dT, Object val) throws AtlasException { if (val != null) { if (dT.getTypeCategory() == DataTypes.TypeCategory.ARRAY) { IDataType elemType = ((DataTypes.ArrayType) dT).getElemType(); visitCollection(elemType, val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.MAP) { IDataType keyType = ((DataTypes.MapType) dT).getKeyType(); IDataType valueType = ((DataTypes.MapType) dT).getValueType(); visitMap(keyType, valueType, val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.STRUCT || dT.getTypeCategory() == DataTypes.TypeCategory.TRAIT) { visitStruct(val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.CLASS) { visitReferenceableInstance(val); } } }
void processValue(IDataType dT, Object val) throws AtlasException { if (val != null) { if (dT.getTypeCategory() == DataTypes.TypeCategory.ARRAY) { IDataType elemType = ((DataTypes.ArrayType) dT).getElemType(); processCollection(elemType, val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.MAP) { IDataType keyType = ((DataTypes.MapType) dT).getKeyType(); IDataType valueType = ((DataTypes.MapType) dT).getValueType(); processMap(keyType, valueType, val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.STRUCT || dT.getTypeCategory() == DataTypes.TypeCategory.TRAIT) { processStruct(val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.CLASS) { processReferenceableInstance(val); } } }
void traverseValue(IDataType dT, Object val) throws AtlasException { if (val != null) { if (dT.getTypeCategory() == DataTypes.TypeCategory.ARRAY) { IDataType elemType = ((DataTypes.ArrayType) dT).getElemType(); visitCollection(elemType, val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.MAP) { IDataType keyType = ((DataTypes.MapType) dT).getKeyType(); IDataType valueType = ((DataTypes.MapType) dT).getValueType(); visitMap(keyType, valueType, val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.STRUCT || dT.getTypeCategory() == DataTypes.TypeCategory.TRAIT) { visitStruct(val); } else if (dT.getTypeCategory() == DataTypes.TypeCategory.CLASS) { visitReferenceableInstance(val); } } }
@Override public void updateSignatureHash(MessageDigest digester, Object val) throws AtlasException { IDataType elemType = getElemType(); List vals = (List) val; for (Object listElem : vals) { elemType.updateSignatureHash(digester, listElem); } } }
private void setupRecursiveTypes() throws AtlasException { for (AttributeInfo info : recursiveRefs) { info.setDataType(dataType(info.dataType().getName())); } for (DataTypes.ArrayType arrType : recursiveArrayTypes) { arrType.setElemType(dataType(arrType.getElemType().getName())); } for (DataTypes.MapType mapType : recursiveMapTypes) { mapType.setKeyType(dataType(mapType.getKeyType().getName())); mapType.setValueType(dataType(mapType.getValueType().getName())); } }
@Override public void updateSignatureHash(MessageDigest digester, Object val) throws AtlasException { IDataType elemType = getElemType(); List vals = (List) val; for (Object listElem : vals) { elemType.updateSignatureHash(digester, listElem); } } }
private void setupRecursiveTypes() throws AtlasException { for (AttributeInfo info : recursiveRefs) { info.setDataType(dataType(info.dataType().getName())); } for (DataTypes.ArrayType arrType : recursiveArrayTypes) { arrType.setElemType(dataType(arrType.getElemType().getName())); } for (DataTypes.MapType mapType : recursiveMapTypes) { mapType.setKeyType(dataType(mapType.getKeyType().getName())); mapType.setValueType(dataType(mapType.getValueType().getName())); } }