| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.atlas.typesystem.types; |
| |
| import org.apache.atlas.AtlasException; |
| import org.apache.atlas.typesystem.ITypedReferenceableInstance; |
| import org.apache.atlas.typesystem.Referenceable; |
| import org.apache.atlas.typesystem.TypesDef; |
| import org.apache.atlas.typesystem.json.TypesSerialization; |
| import org.apache.atlas.typesystem.types.utils.TypesUtil; |
| import org.testng.Assert; |
| import org.testng.annotations.BeforeMethod; |
| import org.testng.annotations.Test; |
| |
| import com.google.common.collect.ImmutableList; |
| import com.google.common.collect.ImmutableSet; |
| |
| public class ClassTest extends HierarchicalTypeTest<ClassType> { |
| |
| @BeforeMethod |
| public void setup() throws Exception { |
| super.setup(); |
| } |
| |
| @Test |
| public void test1() throws AtlasException { |
| |
| TypeSystem ts = getTypeSystem(); |
| |
| defineDeptEmployeeTypes(ts); |
| Referenceable hrDept = createDeptEg1(ts); |
| ClassType deptType = ts.getDataType(ClassType.class, "Department"); |
| ITypedReferenceableInstance hrDept2 = deptType.convert(hrDept, Multiplicity.REQUIRED); |
| |
| |
| Assert.assertEquals(hrDept2.toString(), "{\n" + |
| "\tid : (type: Department, id: <unassigned>)\n" + |
| "\tname : \thr\n" + |
| "\temployees : \t[{\n" + |
| "\tid : (type: Person, id: <unassigned>)\n" + |
| "\tname : \tJohn\n" + |
| "\tdepartment : (type: Department, id: <unassigned>)\n" + |
| "\tmanager : (type: Manager, id: <unassigned>)\n" + |
| "}, {\n" + |
| "\tid : (type: Manager, id: <unassigned>)\n" + |
| "\tsubordinates : \t[{\n" + |
| "\tid : (type: Person, id: <unassigned>)\n" + |
| "\tname : \tJohn\n" + |
| "\tdepartment : (type: Department, id: <unassigned>)\n" + |
| "\tmanager : (type: Manager, id: <unassigned>)\n" + |
| "}]\n" + |
| "\tname : \tJane\n" + |
| "\tdepartment : (type: Department, id: <unassigned>)\n" + |
| "\tmanager : <null>\n" + |
| "\n" + |
| "\tSecurityClearance : \t{\n" + |
| "\t\tlevel : \t\t1\n" + |
| "\t}}]\n" + |
| "}"); |
| } |
| |
| |
| @Test |
| public void testSerDeWithoutDescription() throws Exception { |
| HierarchicalTypeDefinition<ClassType> clsType = TypesUtil |
| .createClassTypeDef("Random", ImmutableSet.<String>of(), |
| TypesUtil.createRequiredAttrDef("name", DataTypes.STRING_TYPE)); |
| |
| TypesDef typesDef = getTypesDef(clsType); |
| String json = TypesSerialization.toJson(typesDef); |
| System.out.println("json " + json); |
| TypesSerialization.fromJson(json); |
| } |
| |
| @Test |
| public void testSerDeWithDescription() throws Exception { |
| HierarchicalTypeDefinition<ClassType> clsType = TypesUtil |
| .createClassTypeDef("Random", "Random-description", ImmutableSet.<String>of(), |
| TypesUtil.createRequiredAttrDef("name", DataTypes.STRING_TYPE)); |
| TypesDef typesDef = getTypesDef(clsType); |
| String json = TypesSerialization.toJson(typesDef); |
| System.out.println("json " + json); |
| TypesSerialization.fromJson(json); |
| } |
| @Override |
| protected HierarchicalTypeDefinition<ClassType> getTypeDefinition(String name, AttributeDefinition... attributes) { |
| return new HierarchicalTypeDefinition(ClassType.class, name, null, null, attributes); |
| } |
| |
| @Override |
| protected HierarchicalTypeDefinition<ClassType> getTypeDefinition(String name, ImmutableSet<String> superTypes, |
| AttributeDefinition... attributes) { |
| return new HierarchicalTypeDefinition(ClassType.class, name, null, superTypes, attributes); |
| } |
| |
| @Override |
| protected TypesDef getTypesDef(StructTypeDefinition typeDefinition) { |
| return TypesUtil.getTypesDef(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), |
| ImmutableList.<HierarchicalTypeDefinition<TraitType>>of(), |
| ImmutableList.of((HierarchicalTypeDefinition<ClassType>) typeDefinition)); |
| } |
| |
| @Override |
| protected TypesDef getTypesDef(HierarchicalTypeDefinition<ClassType>... typeDefinitions) { |
| return TypesUtil.getTypesDef(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), |
| ImmutableList.<HierarchicalTypeDefinition<TraitType>>of(), ImmutableList.copyOf(typeDefinitions)); |
| } |
| } |