private boolean isValidRelationshipType(AtlasType attributeType) { boolean ret = false; if (attributeType != null) { if (attributeType instanceof AtlasArrayType) { attributeType = ((AtlasArrayType) attributeType).getElementType(); } if (attributeType instanceof AtlasObjectIdType || attributeType instanceof AtlasEntityType) { ret = true; } } return ret; }
@Override public AtlasType getTypeForAttribute() { AtlasType elementAttributeType = elementType.getTypeForAttribute(); if (elementAttributeType == elementType) { return this; } else { AtlasType attributeType = new AtlasArrayType(elementAttributeType, minCount, maxCount); if (LOG.isDebugEnabled()) { LOG.debug("getTypeForAttribute(): {} ==> {}", getTypeName(), attributeType.getTypeName()); } return attributeType; } }
@Test public void testArrayTypeDefaultValue() { Collection defValue = intArrayType.createDefaultValue(); assertEquals(defValue.size(), 1); }
Collection objList = (Collection) obj; if (!isValidElementCount(objList.size())) { ret = false; int arrayLen = Array.getLength(obj); if (!isValidElementCount(arrayLen)) { ret = false; ret = false; messages.add(objName + "=" + obj + ": invalid value for type " + getTypeName());
ret = isEmptyArrayValue(val2); } else if (val2 == null) { ret = isEmptyArrayValue(val1); } else { if (val1.getClass().isArray() && val2.getClass().isArray()) { List list1 = getListFromValue(val1); List list2 = getListFromValue(val2);
arrayType.setMinCount(attributeDef.getValuesMinCount()); arrayType.setMaxCount(attributeDef.getValuesMaxCount()); attrType = ((AtlasArrayType) attrType).getElementType(); } else if (attrType instanceof AtlasMapType) { attrType = ((AtlasMapType) attrType).getValueType();
AtlasType elemType = arrayType.getElementType(); String elemTypeName; attrType = new AtlasArrayType(entityType);
public AtlasType getType(String typeName) throws AtlasBaseException { if (LOG.isDebugEnabled()) { LOG.debug("==> AtlasTypeRegistry.getType({})", typeName); } AtlasType ret = registryData.allTypes.getTypeByName(typeName); if (ret == null) { if (typeName.startsWith(ATLAS_TYPE_ARRAY_PREFIX) && typeName.endsWith(ATLAS_TYPE_ARRAY_SUFFIX)) { int startIdx = ATLAS_TYPE_ARRAY_PREFIX.length(); int endIdx = typeName.length() - ATLAS_TYPE_ARRAY_SUFFIX.length(); String elementTypeName = typeName.substring(startIdx, endIdx); ret = new AtlasArrayType(elementTypeName, this); } else if (typeName.startsWith(ATLAS_TYPE_MAP_PREFIX) && typeName.endsWith(ATLAS_TYPE_MAP_SUFFIX)) { int startIdx = ATLAS_TYPE_MAP_PREFIX.length(); int endIdx = typeName.length() - ATLAS_TYPE_MAP_SUFFIX.length(); String[] keyValueTypes = typeName.substring(startIdx, endIdx).split(ATLAS_TYPE_MAP_KEY_VAL_SEP, 2); String keyTypeName = keyValueTypes.length > 0 ? keyValueTypes[0] : null; String valueTypeName = keyValueTypes.length > 1 ? keyValueTypes[1] : null; ret = new AtlasMapType(keyTypeName, valueTypeName, this); } else { throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_NOT_FOUND, typeName); } } if (LOG.isDebugEnabled()) { LOG.debug("<== AtlasTypeRegistry.getType({}): {}", typeName, ret); } return ret; }
@Test public void testArrayTypeGetNormalizedValue() { assertNull(intArrayType.getNormalizedValue(null), "value=" + null); for (Object value : validValues) { if (value == null) { continue; } Collection normalizedValue = intArrayType.getNormalizedValue(value); assertNotNull(normalizedValue, "value=" + value); } for (Object value : invalidValues) { assertNull(intArrayType.getNormalizedValue(value), "value=" + value); } }
Collection objList = (Collection) obj; if (!isValidElementCount(objList.size())) { ret = false; int arrayLen = Array.getLength(obj); if (!isValidElementCount(arrayLen)) { ret = false; ret = false; messages.add(objName + "=" + obj + ": invalid value for type " + getTypeName());
public AtlasType getType(String typeName) throws AtlasBaseException { if (LOG.isDebugEnabled()) { LOG.debug("==> AtlasTypeRegistry.getType({})", typeName); } AtlasType ret = registryData.allTypes.getTypeByName(typeName); if (ret == null) { if (typeName.startsWith(ATLAS_TYPE_ARRAY_PREFIX) && typeName.endsWith(ATLAS_TYPE_ARRAY_SUFFIX)) { int startIdx = ATLAS_TYPE_ARRAY_PREFIX.length(); int endIdx = typeName.length() - ATLAS_TYPE_ARRAY_SUFFIX.length(); String elementTypeName = typeName.substring(startIdx, endIdx); ret = new AtlasArrayType(elementTypeName, this); } else if (typeName.startsWith(ATLAS_TYPE_MAP_PREFIX) && typeName.endsWith(ATLAS_TYPE_MAP_SUFFIX)) { int startIdx = ATLAS_TYPE_MAP_PREFIX.length(); int endIdx = typeName.length() - ATLAS_TYPE_MAP_SUFFIX.length(); String[] keyValueTypes = typeName.substring(startIdx, endIdx).split(ATLAS_TYPE_MAP_KEY_VAL_SEP, 2); String keyTypeName = keyValueTypes.length > 0 ? keyValueTypes[0] : null; String valueTypeName = keyValueTypes.length > 1 ? keyValueTypes[1] : null; ret = new AtlasMapType(keyTypeName, valueTypeName, this); } else { throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_NOT_FOUND, typeName); } } if (LOG.isDebugEnabled()) { LOG.debug("<== AtlasTypeRegistry.getType({}): {}", typeName, ret); } return ret; }
@Test public void testArrayTypeGetNormalizedValue() { assertNull(intArrayType.getNormalizedValue(null), "value=" + null); for (Object value : validValues) { if (value == null) { continue; } Collection normalizedValue = intArrayType.getNormalizedValue(value); assertNotNull(normalizedValue, "value=" + value); } for (Object value : invalidValues) { assertNull(intArrayType.getNormalizedValue(value), "value=" + value); } }
AtlasEntityType getReferencedEntityType(AtlasType type) { if (type instanceof AtlasArrayType) { type = ((AtlasArrayType)type).getElementType(); } if (type instanceof AtlasMapType) { type = ((AtlasMapType)type).getValueType(); } return type instanceof AtlasEntityType ? (AtlasEntityType)type : null; }
@Override public AtlasType getTypeForAttribute() { AtlasType elementAttributeType = elementType.getTypeForAttribute(); if (elementAttributeType == elementType) { return this; } else { AtlasType attributeType = new AtlasArrayType(elementAttributeType, minCount, maxCount); if (LOG.isDebugEnabled()) { LOG.debug("getTypeForAttribute(): {} ==> {}", getTypeName(), attributeType.getTypeName()); } return attributeType; } }
Collection objList = (Collection) obj; if (!isValidElementCount(objList.size())) { ret = false; int arrayLen = Array.getLength(obj); if (!isValidElementCount(arrayLen)) { ret = false; ret = false; messages.add(objName + "=" + obj + ": invalid value for type " + getTypeName());
@Test public void testArrayTypeDefaultValue() { Collection defValue = intArrayType.createDefaultValue(); assertEquals(defValue.size(), 1); }
AtlasEntityType getReferencedEntityType(AtlasType type) { if (type instanceof AtlasArrayType) { type = ((AtlasArrayType)type).getElementType(); } if (type instanceof AtlasMapType) { type = ((AtlasMapType)type).getValueType(); } return type instanceof AtlasEntityType ? (AtlasEntityType)type : null; }
Collection objList = (Collection) obj; if (!isValidElementCount(objList.size())) { ret = false; int arrayLen = Array.getLength(obj); if (!isValidElementCount(arrayLen)) { ret = false; ret = false; messages.add(objName + "=" + obj + ": invalid value for type " + getTypeName());
@Override public Collection fromV2ToV1(Object v2Obj, AtlasType type, ConverterContext ctx) throws AtlasBaseException { Collection ret = null; if (v2Obj != null) { if (v2Obj instanceof List) { ret = new ArrayList(); } else if (v2Obj instanceof Set) { ret = new LinkedHashSet(); } else { throw new AtlasBaseException(AtlasErrorCode.UNEXPECTED_TYPE, "List or Set", v2Obj.getClass().getCanonicalName()); } AtlasArrayType arrType = (AtlasArrayType) type; AtlasType elemType = arrType.getElementType(); AtlasFormatConverter elemConverter = converterRegistry.getConverter(elemType.getTypeCategory()); Collection v2List = (Collection) v2Obj; for (Object v2Elem : v2List) { Object convertedVal = elemConverter.fromV2ToV1(v2Elem, elemType, ctx); ret.add(convertedVal); } } return ret; } }
@Override public Collection fromV1ToV2(Object v1Obj, AtlasType type, ConverterContext ctx) throws AtlasBaseException { Collection ret = null; if (v1Obj != null) { if (v1Obj instanceof Set) { ret = new LinkedHashSet(); } else { ret = new ArrayList(); } AtlasArrayType arrType = (AtlasArrayType) type; AtlasType elemType = arrType.getElementType(); AtlasFormatConverter elemConverter = converterRegistry.getConverter(elemType.getTypeCategory()); if (v1Obj instanceof Collection) { Collection v1List = (Collection) v1Obj; for (Object v1Elem : v1List) { Object convertedVal = elemConverter.fromV1ToV2(v1Elem, elemType, ctx); ret.add(convertedVal); } } else { Object convertedVal = elemConverter.fromV1ToV2(v1Obj, elemType, ctx); ret.add(convertedVal); } } return ret; }