@Override public void validateUpdate(IDataType newType) throws TypeUpdateException { super.validateUpdate(newType); EnumType enumType = (EnumType) newType; for (EnumValue enumValue : values()) { //The old enum value should be part of new enum definition as well if (!enumType.valueMap.containsKey(enumValue.value)) { throw new TypeUpdateException("Value " + enumValue.value + " is missing in new type"); } //The ordinal for old enum value can't change EnumValue newEnumValue = enumType.valueMap.get(enumValue.value); if (enumValue.ordinal != newEnumValue.ordinal) { throw new TypeUpdateException(String.format("Ordinal mismatch %s(%s) != %s(%s)", enumValue.value, enumValue.ordinal, newEnumValue.value, newEnumValue.ordinal)); } } }
public EnumType defineEnumType(EnumTypeDefinition eDef) throws AtlasException { assert eDef.name != null; if (isRegistered(eDef.name)) { throw new AtlasException(String.format("Redefinition of type %s not supported", eDef.name)); } EnumType eT = new EnumType(this, eDef.name, eDef.description, eDef.version, eDef.enumValues); typeCache.put(eT); return eT; }
@Override public EnumValue convert(Object val, Multiplicity m) throws AtlasException { if (val != null) { EnumValue e = null; if (val instanceof EnumValue) { e = valueMap.get(((EnumValue) val).value); } else if (val instanceof Integer || val instanceof BigInt) { e = ordinalMap.get(val); } else if (val instanceof String) { e = valueMap.get(val); } else if (val instanceof Number) { e = ordinalMap.get(((Number) val).intValue()); } if (e == null) { throw new ValueConversionException(this, val); } return e; } return convertNull(m); }
public void updateSignatureHash(MessageDigest digester, Object val) throws AtlasException { if (val != null) { digester.update(fromValue((String) val).toString().getBytes(Charset.forName("UTF-8"))); } }
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];
public void updateSignatureHash(MessageDigest digester, Object val) throws AtlasException { if (val != null) { digester.update(fromValue((String) val).toString().getBytes(Charset.forName("UTF-8"))); } }
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];
@Override public void validateUpdate(IDataType newType) throws TypeUpdateException { super.validateUpdate(newType); EnumType enumType = (EnumType) newType; for (EnumValue enumValue : values()) { //The old enum value should be part of new enum definition as well if (!enumType.valueMap.containsKey(enumValue.value)) { throw new TypeUpdateException("Value " + enumValue.value + " is missing in new type"); } //The ordinal for old enum value can't change EnumValue newEnumValue = enumType.valueMap.get(enumValue.value); if (enumValue.ordinal != newEnumValue.ordinal) { throw new TypeUpdateException(String.format("Ordinal mismatch %s(%s) != %s(%s)", enumValue.value, enumValue.ordinal, newEnumValue.value, newEnumValue.ordinal)); } } }
public EnumType defineEnumType(EnumTypeDefinition eDef) throws AtlasException { assert eDef.name != null; if (isRegistered(eDef.name)) { throw new AtlasException(String.format("Redefinition of type %s not supported", eDef.name)); } EnumType eT = new EnumType(this, eDef.name, eDef.description, eDef.version, eDef.enumValues); typeCache.put(eT); return eT; }
@Override public EnumValue convert(Object val, Multiplicity m) throws AtlasException { if (val != null) { EnumValue e = null; if (val instanceof EnumValue) { e = valueMap.get(((EnumValue) val).value); } else if (val instanceof Integer || val instanceof BigInt) { e = ordinalMap.get(val); } else if (val instanceof String) { e = valueMap.get(val); } else if (val instanceof Number) { e = ordinalMap.get(((Number) val).intValue()); } if (e == null) { throw new ValueConversionException(this, val); } return e; } return convertNull(m); }
Assert.assertEquals(enumType.values().size(), 2);
EnumType eT = new EnumType(this, eDef.name, eDef.description, eDef.version, eDef.enumValues); transientTypes.put(eDef.name, eT);
Assert.assertEquals(enumType.values().size(), 2);
EnumType eT = new EnumType(this, eDef.name, eDef.description, eDef.version, eDef.enumValues); transientTypes.put(eDef.name, eT);