public ClassType defineClassType(HierarchicalTypeDefinition<ClassType> classDef) throws AtlasException { defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.<HierarchicalTypeDefinition<TraitType>>of(), ImmutableList.of(classDef)); return getDataType(ClassType.class, classDef.typeName); }
public TraitType defineTraitType(HierarchicalTypeDefinition<TraitType> traitDef) throws AtlasException { defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.of(traitDef), ImmutableList.<HierarchicalTypeDefinition<ClassType>>of()); return getDataType(TraitType.class, traitDef.typeName); }
public TraitType defineTraitType(HierarchicalTypeDefinition<TraitType> traitDef) throws AtlasException { defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.of(traitDef), ImmutableList.<HierarchicalTypeDefinition<ClassType>>of()); return getDataType(TraitType.class, traitDef.typeName); }
public ClassType defineClassType(HierarchicalTypeDefinition<ClassType> classDef) throws AtlasException { defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.<HierarchicalTypeDefinition<TraitType>>of(), ImmutableList.of(classDef)); return getDataType(ClassType.class, classDef.typeName); }
public StructType defineStructType(String name, String description, boolean errorIfExists, AttributeDefinition... attrDefs) throws AtlasException { StructTypeDefinition structDef = new StructTypeDefinition(name, description, attrDefs); defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.of(structDef), ImmutableList.<HierarchicalTypeDefinition<TraitType>>of(), ImmutableList.<HierarchicalTypeDefinition<ClassType>>of()); return getDataType(StructType.class, structDef.typeName); }
public StructType defineStructType(String name, String description, boolean errorIfExists, AttributeDefinition... attrDefs) throws AtlasException { StructTypeDefinition structDef = new StructTypeDefinition(name, description, attrDefs); defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.of(structDef), ImmutableList.<HierarchicalTypeDefinition<TraitType>>of(), ImmutableList.<HierarchicalTypeDefinition<ClassType>>of()); return getDataType(StructType.class, structDef.typeName); }
public Map<String, IDataType> defineTypes(TypesDef typesDef) throws AtlasException { ImmutableList<EnumTypeDefinition> enumDefs = ImmutableList.copyOf(typesDef.enumTypesAsJavaList()); ImmutableList<StructTypeDefinition> structDefs = ImmutableList.copyOf(typesDef.structTypesAsJavaList()); ImmutableList<HierarchicalTypeDefinition<TraitType>> traitDefs = ImmutableList.copyOf(typesDef.traitTypesAsJavaList()); ImmutableList<HierarchicalTypeDefinition<ClassType>> classDefs = ImmutableList.copyOf(typesDef.classTypesAsJavaList()); return defineTypes(enumDefs, structDefs, traitDefs, classDefs); }
public Map<String, IDataType> defineTypes(TypesDef typesDef) throws AtlasException { ImmutableList<EnumTypeDefinition> enumDefs = ImmutableList.copyOf(typesDef.enumTypesAsJavaList()); ImmutableList<StructTypeDefinition> structDefs = ImmutableList.copyOf(typesDef.structTypesAsJavaList()); ImmutableList<HierarchicalTypeDefinition<TraitType>> traitDefs = ImmutableList.copyOf(typesDef.traitTypesAsJavaList()); ImmutableList<HierarchicalTypeDefinition<ClassType>> classDefs = ImmutableList.copyOf(typesDef.classTypesAsJavaList()); return defineTypes(enumDefs, structDefs, traitDefs, classDefs); }
@Test public void testDuplicateNewTypenames() throws Exception { TypeSystem typeSystem = getTypeSystem(); HierarchicalTypeDefinition<TraitType> trait1 = TypesUtil .createTraitTypeDef(random(), "description", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("type", DataTypes.STRING_TYPE)); // create another trait with the same name HierarchicalTypeDefinition<TraitType> trait2 = TypesUtil .createTraitTypeDef(trait1.typeName, "description", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("type", DataTypes.STRING_TYPE)); try { typeSystem.defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.of(trait1, trait2), ImmutableList.<HierarchicalTypeDefinition<ClassType>>of()); } catch(AtlasException e) { fail("Exception unexpected"); } }
@Test public void testDuplicateNewTypenames() throws Exception { TypeSystem typeSystem = getTypeSystem(); HierarchicalTypeDefinition<TraitType> trait1 = TypesUtil .createTraitTypeDef(random(), "description", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("type", DataTypes.STRING_TYPE)); // create another trait with the same name HierarchicalTypeDefinition<TraitType> trait2 = TypesUtil .createTraitTypeDef(trait1.typeName, "description", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("type", DataTypes.STRING_TYPE)); try { typeSystem.defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.of(trait1, trait2), ImmutableList.<HierarchicalTypeDefinition<ClassType>>of()); } catch(AtlasException e) { fail("Exception unexpected"); } }
@Test public void testTrait() throws AtlasException { TypeSystem ts = getTypeSystem(); HierarchicalTypeDefinition<TraitType> securityClearanceTypeDef = createTraitTypeDef("SecurityClearance2", ImmutableSet.<String>of(), createRequiredAttrDef("level", DataTypes.INT_TYPE)); ts.defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.of(securityClearanceTypeDef), ImmutableList.<HierarchicalTypeDefinition<ClassType>>of()); Struct s = new Struct("SecurityClearance2"); s.set("level", 1); TraitType tType = ts.getDataType(TraitType.class, "SecurityClearance2"); ITypedInstance t = tType.convert(s, Multiplicity.REQUIRED); String jsonStr = Serialization$.MODULE$.toJson(t); ITypedInstance t2 = Serialization$.MODULE$.traitFromJson(jsonStr); Assert.assertEquals(t.toString(), t2.toString()); } }
@Test public void testGetTraitsNames() throws Exception { HierarchicalTypeDefinition<TraitType> classificationTraitDefinition = TypesUtil .createTraitTypeDef("Classification", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("tag", DataTypes.STRING_TYPE)); HierarchicalTypeDefinition<TraitType> piiTrait = TypesUtil.createTraitTypeDef("PII", ImmutableSet.<String>of()); HierarchicalTypeDefinition<TraitType> phiTrait = TypesUtil.createTraitTypeDef("PHI", ImmutableSet.<String>of()); HierarchicalTypeDefinition<TraitType> pciTrait = TypesUtil.createTraitTypeDef("PCI", ImmutableSet.<String>of()); HierarchicalTypeDefinition<TraitType> soxTrait = TypesUtil.createTraitTypeDef("SOX", ImmutableSet.<String>of()); HierarchicalTypeDefinition<TraitType> secTrait = TypesUtil.createTraitTypeDef("SEC", ImmutableSet.<String>of()); HierarchicalTypeDefinition<TraitType> financeTrait = TypesUtil.createTraitTypeDef("Finance", ImmutableSet.<String>of()); getTypeSystem().defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.of(classificationTraitDefinition, piiTrait, phiTrait, pciTrait, soxTrait, secTrait, financeTrait), ImmutableList.<HierarchicalTypeDefinition<ClassType>>of()); final ImmutableList<String> traitsNames = getTypeSystem().getTypeNamesByCategory(DataTypes.TypeCategory.TRAIT); Assert.assertEquals(traitsNames.size(), 7); List traits = Arrays.asList(new String[]{"Classification", "PII", "PHI", "PCI", "SOX", "SEC", "Finance",}); Assert.assertFalse(Collections.disjoint(traitsNames, traits)); }
@Test public void testTrait() throws AtlasException { TypeSystem ts = getTypeSystem(); HierarchicalTypeDefinition<TraitType> securityClearanceTypeDef = createTraitTypeDef("SecurityClearance2", ImmutableSet.<String>of(), createRequiredAttrDef("level", DataTypes.INT_TYPE)); ts.defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.of(securityClearanceTypeDef), ImmutableList.<HierarchicalTypeDefinition<ClassType>>of()); Struct s = new Struct("SecurityClearance2"); s.set("level", 1); TraitType tType = ts.getDataType(TraitType.class, "SecurityClearance2"); ITypedInstance t = tType.convert(s, Multiplicity.REQUIRED); String jsonStr = Serialization$.MODULE$.toJson(t); ITypedInstance t2 = Serialization$.MODULE$.traitFromJson(jsonStr); Assert.assertEquals(t.toString(), t2.toString()); } }
@Test public void testGetTraitsNames() throws Exception { HierarchicalTypeDefinition<TraitType> classificationTraitDefinition = TypesUtil .createTraitTypeDef("Classification", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("tag", DataTypes.STRING_TYPE)); HierarchicalTypeDefinition<TraitType> piiTrait = TypesUtil.createTraitTypeDef("PII", ImmutableSet.<String>of()); HierarchicalTypeDefinition<TraitType> phiTrait = TypesUtil.createTraitTypeDef("PHI", ImmutableSet.<String>of()); HierarchicalTypeDefinition<TraitType> pciTrait = TypesUtil.createTraitTypeDef("PCI", ImmutableSet.<String>of()); HierarchicalTypeDefinition<TraitType> soxTrait = TypesUtil.createTraitTypeDef("SOX", ImmutableSet.<String>of()); HierarchicalTypeDefinition<TraitType> secTrait = TypesUtil.createTraitTypeDef("SEC", ImmutableSet.<String>of()); HierarchicalTypeDefinition<TraitType> financeTrait = TypesUtil.createTraitTypeDef("Finance", ImmutableSet.<String>of()); getTypeSystem().defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.of(classificationTraitDefinition, piiTrait, phiTrait, pciTrait, soxTrait, secTrait, financeTrait), ImmutableList.<HierarchicalTypeDefinition<ClassType>>of()); final ImmutableList<String> traitsNames = getTypeSystem().getTypeNamesByCategory(DataTypes.TypeCategory.TRAIT); Assert.assertEquals(traitsNames.size(), 7); List traits = Arrays.asList(new String[]{"Classification", "PII", "PHI", "PCI", "SOX", "SEC", "Finance",}); Assert.assertFalse(Collections.disjoint(traitsNames, traits)); }
protected void defineDeptEmployeeTypes(TypeSystem ts) throws AtlasException { HierarchicalTypeDefinition<ClassType> deptTypeDef = TypesUtil .createClassTypeDef("Department", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("name", DataTypes.STRING_TYPE), new AttributeDefinition("employees", String.format("array<%s>", "Person"), Multiplicity.COLLECTION, true, "department")); HierarchicalTypeDefinition<ClassType> personTypeDef = TypesUtil .createClassTypeDef("Person", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("name", DataTypes.STRING_TYPE), new AttributeDefinition("department", "Department", Multiplicity.REQUIRED, false, "employees"), new AttributeDefinition("manager", "Manager", Multiplicity.OPTIONAL, false, "subordinates")); HierarchicalTypeDefinition<ClassType> managerTypeDef = TypesUtil .createClassTypeDef("Manager", ImmutableSet.of("Person"), new AttributeDefinition("subordinates", String.format("array<%s>", "Person"), Multiplicity.COLLECTION, false, "manager")); HierarchicalTypeDefinition<TraitType> securityClearanceTypeDef = TypesUtil .createTraitTypeDef("SecurityClearance", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("level", DataTypes.INT_TYPE)); ts.defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.of(securityClearanceTypeDef), ImmutableList.of(deptTypeDef, personTypeDef, managerTypeDef)); ImmutableList.of(ts.getDataType(HierarchicalType.class, "SecurityClearance"), ts.getDataType(ClassType.class, "Department"), ts.getDataType(ClassType.class, "Person"), ts.getDataType(ClassType.class, "Manager")); }
protected void defineDeptEmployeeTypes(TypeSystem ts) throws AtlasException { HierarchicalTypeDefinition<ClassType> deptTypeDef = TypesUtil .createClassTypeDef("Department", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("name", DataTypes.STRING_TYPE), new AttributeDefinition("employees", String.format("array<%s>", "Person"), Multiplicity.COLLECTION, true, "department")); HierarchicalTypeDefinition<ClassType> personTypeDef = TypesUtil .createClassTypeDef("Person", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("name", DataTypes.STRING_TYPE), new AttributeDefinition("department", "Department", Multiplicity.REQUIRED, false, "employees"), new AttributeDefinition("manager", "Manager", Multiplicity.OPTIONAL, false, "subordinates")); HierarchicalTypeDefinition<ClassType> managerTypeDef = TypesUtil .createClassTypeDef("Manager", ImmutableSet.of("Person"), new AttributeDefinition("subordinates", String.format("array<%s>", "Person"), Multiplicity.COLLECTION, false, "manager")); HierarchicalTypeDefinition<TraitType> securityClearanceTypeDef = TypesUtil .createTraitTypeDef("SecurityClearance", ImmutableSet.<String>of(), TypesUtil.createRequiredAttrDef("level", DataTypes.INT_TYPE)); ts.defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), ImmutableList.of(securityClearanceTypeDef), ImmutableList.of(deptTypeDef, personTypeDef, managerTypeDef)); ImmutableList.of(ts.getDataType(HierarchicalType.class, "SecurityClearance"), ts.getDataType(ClassType.class, "Department"), ts.getDataType(ClassType.class, "Person"), ts.getDataType(ClassType.class, "Manager")); }
@Test public void testTypeCategory() throws AtlasException { TypeSystem ts = getTypeSystem(); ts.reset(); StructTypeDefinition struct_A = createStructTypeDef("struct_A", createRequiredAttrDef("s_A", DataTypes.STRING_TYPE)); StructTypeDefinition struct_B = createStructTypeDef("struct_B", createRequiredAttrDef("s_B", DataTypes.STRING_TYPE)); HierarchicalTypeDefinition<TraitType> trait_A = createTraitTypeDef("trait_A", null, createRequiredAttrDef("t_A", DataTypes.STRING_TYPE)); HierarchicalTypeDefinition<TraitType> trait_B = createTraitTypeDef("trait_B", ImmutableSet.of("trait_A"), createRequiredAttrDef("t_B", DataTypes.STRING_TYPE)); HierarchicalTypeDefinition<TraitType> trait_C = createTraitTypeDef("trait_C", ImmutableSet.of("trait_A"), createRequiredAttrDef("t_C", DataTypes.STRING_TYPE)); HierarchicalTypeDefinition<TraitType> trait_D = createTraitTypeDef("trait_D", ImmutableSet.of("trait_B", "trait_C"), createRequiredAttrDef("t_D", DataTypes.STRING_TYPE)); HierarchicalTypeDefinition<ClassType> class_A = createClassTypeDef("class_A", null, createRequiredAttrDef("c_A", DataTypes.STRING_TYPE)); HierarchicalTypeDefinition<ClassType> class_B = createClassTypeDef("class_B", ImmutableSet.of("class_A"), createRequiredAttrDef("c_B", DataTypes.STRING_TYPE)); HierarchicalTypeDefinition<ClassType> class_C = createClassTypeDef("class_C", ImmutableSet.of("class_B"), createRequiredAttrDef("c_C", DataTypes.STRING_TYPE)); ts.defineTypes(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.of(struct_A, struct_B), ImmutableList.of(trait_A, trait_B, trait_C, trait_D), ImmutableList.of(class_A, class_B, class_C)); final ImmutableList<String> structNames = ts.getTypeNamesByCategory(DataTypes.TypeCategory.STRUCT); final ImmutableList<String> traitNames = ts.getTypeNamesByCategory(DataTypes.TypeCategory.TRAIT); final ImmutableList<String> classNames = ts.getTypeNamesByCategory(DataTypes.TypeCategory.CLASS); Assert.assertEquals(structNames.size(), 2); Assert.assertEquals(traitNames.size(), 4); Assert.assertEquals(classNames.size(), 3); }
@Test public void testUTFNames() throws Exception { TypeSystem ts = getTypeSystem(); String enumType = random(); EnumTypeDefinition orgLevelEnum = new EnumTypeDefinition(enumType, new EnumValue(random(), 1), new EnumValue(random(), 2)); String structName = random(); String attrType = random(); StructTypeDefinition structType = createStructTypeDef(structName, createRequiredAttrDef(attrType, DataTypes.STRING_TYPE)); String className = random(); HierarchicalTypeDefinition<ClassType> classType = createClassTypeDef(className, ImmutableSet.<String>of(), createRequiredAttrDef(attrType, DataTypes.STRING_TYPE)); String traitName = random(); HierarchicalTypeDefinition<TraitType> traitType = createTraitTypeDef(traitName, ImmutableSet.<String>of(), createRequiredAttrDef(attrType, DataTypes.INT_TYPE)); ts.defineTypes(ImmutableList.of(orgLevelEnum), ImmutableList.of(structType), ImmutableList.of(traitType), ImmutableList.of(classType)); }
@Test public void testUTFNames() throws Exception { TypeSystem ts = getTypeSystem(); String enumType = random(); EnumTypeDefinition orgLevelEnum = new EnumTypeDefinition(enumType, new EnumValue(random(), 1), new EnumValue(random(), 2)); String structName = random(); String attrType = random(); StructTypeDefinition structType = createStructTypeDef(structName, createRequiredAttrDef(attrType, DataTypes.STRING_TYPE)); String className = random(); HierarchicalTypeDefinition<ClassType> classType = createClassTypeDef(className, ImmutableSet.<String>of(), createRequiredAttrDef(attrType, DataTypes.STRING_TYPE)); String traitName = random(); HierarchicalTypeDefinition<TraitType> traitType = createTraitTypeDef(traitName, ImmutableSet.<String>of(), createRequiredAttrDef(attrType, DataTypes.INT_TYPE)); ts.defineTypes(ImmutableList.of(orgLevelEnum), ImmutableList.of(structType), ImmutableList.of(traitType), ImmutableList.of(classType)); }
EnumTypeDefinition etd = new EnumTypeDefinition(newName(), new EnumValue("A", 1)); TypesDef typesDef = getTypesDef(etd); ts.defineTypes(typesDef);