Search in sources :

Example 16 with AtlasObjectId

use of org.apache.atlas.model.instance.AtlasObjectId in project incubator-atlas by apache.

the class AtlasEntityStoreV1Test method testArrayOfEntityUpdate.

@Test(dependsOnMethods = "testCreate")
public void testArrayOfEntityUpdate() throws Exception {
    AtlasEntity tableEntity = new AtlasEntity(tblEntity.getEntity());
    List<AtlasObjectId> columns = new ArrayList<>();
    AtlasEntitiesWithExtInfo entitiesInfo = new AtlasEntitiesWithExtInfo(tableEntity);
    AtlasEntity col1 = TestUtilsV2.createColumnEntity(tableEntity);
    col1.setAttribute(TestUtilsV2.NAME, "col1");
    AtlasEntity col2 = TestUtilsV2.createColumnEntity(tableEntity);
    col2.setAttribute(TestUtilsV2.NAME, "col2");
    columns.add(AtlasTypeUtil.getAtlasObjectId(col1));
    columns.add(AtlasTypeUtil.getAtlasObjectId(col2));
    tableEntity.setAttribute(TestUtilsV2.COLUMNS_ATTR_NAME, columns);
    entitiesInfo.addReferredEntity(dbEntity.getEntity());
    entitiesInfo.addReferredEntity(col1);
    entitiesInfo.addReferredEntity(col2);
    init();
    EntityMutationResponse response = entityStore.createOrUpdate(new AtlasEntityStream(entitiesInfo), false);
    AtlasEntityHeader updatedTableHeader = response.getFirstUpdatedEntityByTypeName(tableEntity.getTypeName());
    validateEntity(entitiesInfo, getEntityFromStore(updatedTableHeader));
    //Complete update. Add  array elements - col3,col4
    AtlasEntity col3 = TestUtilsV2.createColumnEntity(tableEntity);
    col3.setAttribute(TestUtilsV2.NAME, "col3");
    AtlasEntity col4 = TestUtilsV2.createColumnEntity(tableEntity);
    col4.setAttribute(TestUtilsV2.NAME, "col4");
    columns.add(AtlasTypeUtil.getAtlasObjectId(col3));
    columns.add(AtlasTypeUtil.getAtlasObjectId(col4));
    tableEntity.setAttribute(TestUtilsV2.COLUMNS_ATTR_NAME, columns);
    entitiesInfo.addReferredEntity(col3);
    entitiesInfo.addReferredEntity(col4);
    init();
    response = entityStore.createOrUpdate(new AtlasEntityStream(entitiesInfo), false);
    updatedTableHeader = response.getFirstUpdatedEntityByTypeName(tableEntity.getTypeName());
    validateEntity(entitiesInfo, getEntityFromStore(updatedTableHeader));
    //Swap elements
    columns.clear();
    columns.add(AtlasTypeUtil.getAtlasObjectId(col4));
    columns.add(AtlasTypeUtil.getAtlasObjectId(col3));
    tableEntity.setAttribute(TestUtilsV2.COLUMNS_ATTR_NAME, columns);
    init();
    response = entityStore.createOrUpdate(new AtlasEntityStream(entitiesInfo), false);
    updatedTableHeader = response.getFirstUpdatedEntityByTypeName(tableEntity.getTypeName());
    AtlasEntity updatedEntity = getEntityFromStore(updatedTableHeader);
    // deleted columns are also included in "columns" attribute
    Assert.assertTrue(((List<AtlasObjectId>) updatedEntity.getAttribute(COLUMNS_ATTR_NAME)).size() >= 2);
    // col1, col2 are deleted
    assertEquals(response.getEntitiesByOperation(EntityMutations.EntityOperation.DELETE).size(), 2);
    //Update array column to null
    tableEntity.setAttribute(COLUMNS_ATTR_NAME, null);
    init();
    response = entityStore.createOrUpdate(new AtlasEntityStream(entitiesInfo), false);
    updatedTableHeader = response.getFirstUpdatedEntityByTypeName(tableEntity.getTypeName());
    validateEntity(entitiesInfo, getEntityFromStore(updatedTableHeader));
    assertEquals(response.getEntitiesByOperation(EntityMutations.EntityOperation.DELETE).size(), 2);
}
Also used : AtlasEntity(org.apache.atlas.model.instance.AtlasEntity) AtlasEntitiesWithExtInfo(org.apache.atlas.model.instance.AtlasEntity.AtlasEntitiesWithExtInfo) EntityMutationResponse(org.apache.atlas.model.instance.EntityMutationResponse) ArrayList(java.util.ArrayList) AtlasEntityHeader(org.apache.atlas.model.instance.AtlasEntityHeader) AtlasObjectId(org.apache.atlas.model.instance.AtlasObjectId) List(java.util.List) ArrayList(java.util.ArrayList) Test(org.testng.annotations.Test) BeforeTest(org.testng.annotations.BeforeTest)

Example 17 with AtlasObjectId

use of org.apache.atlas.model.instance.AtlasObjectId in project incubator-atlas by apache.

the class AtlasEntityStoreV1Test method testCreate.

@Test
public void testCreate() throws Exception {
    init();
    EntityMutationResponse response = entityStore.createOrUpdate(new AtlasEntityStream(deptEntity), false);
    validateMutationResponse(response, EntityOperation.CREATE, 5);
    AtlasEntityHeader dept1 = response.getFirstCreatedEntityByTypeName(TestUtilsV2.DEPARTMENT_TYPE);
    validateEntity(deptEntity, getEntityFromStore(dept1), deptEntity.getEntities().get(0));
    final Map<EntityOperation, List<AtlasEntityHeader>> entitiesMutated = response.getMutatedEntities();
    List<AtlasEntityHeader> entitiesCreated = entitiesMutated.get(EntityOperation.CREATE);
    Assert.assertTrue(entitiesCreated.size() >= deptEntity.getEntities().size());
    for (int i = 0; i < deptEntity.getEntities().size(); i++) {
        AtlasEntity expected = deptEntity.getEntities().get(i);
        AtlasEntity actual = getEntityFromStore(entitiesCreated.get(i));
        validateEntity(deptEntity, actual, expected);
    }
    //Create DB
    init();
    EntityMutationResponse dbCreationResponse = entityStore.createOrUpdate(new AtlasEntityStream(dbEntity), false);
    validateMutationResponse(dbCreationResponse, EntityOperation.CREATE, 1);
    AtlasEntityHeader db1 = dbCreationResponse.getFirstCreatedEntityByTypeName(TestUtilsV2.DATABASE_TYPE);
    validateEntity(dbEntity, getEntityFromStore(db1));
    //Create Table
    //Update DB guid
    AtlasObjectId dbObjectId = (AtlasObjectId) tblEntity.getEntity().getAttribute("database");
    dbObjectId.setGuid(db1.getGuid());
    tblEntity.addReferredEntity(dbEntity.getEntity());
    init();
    EntityMutationResponse tableCreationResponse = entityStore.createOrUpdate(new AtlasEntityStream(tblEntity), false);
    validateMutationResponse(tableCreationResponse, EntityOperation.CREATE, 1);
    AtlasEntityHeader tableEntity = tableCreationResponse.getFirstCreatedEntityByTypeName(TABLE_TYPE);
    validateEntity(tblEntity, getEntityFromStore(tableEntity));
}
Also used : EntityOperation(org.apache.atlas.model.instance.EntityMutations.EntityOperation) AtlasEntity(org.apache.atlas.model.instance.AtlasEntity) EntityMutationResponse(org.apache.atlas.model.instance.EntityMutationResponse) AtlasEntityHeader(org.apache.atlas.model.instance.AtlasEntityHeader) List(java.util.List) ArrayList(java.util.ArrayList) AtlasObjectId(org.apache.atlas.model.instance.AtlasObjectId) Test(org.testng.annotations.Test) BeforeTest(org.testng.annotations.BeforeTest)

Example 18 with AtlasObjectId

use of org.apache.atlas.model.instance.AtlasObjectId in project incubator-atlas by apache.

the class InverseReferenceUpdateHardDeleteV1Test method verify_testInverseReferenceAutoUpdate_Map.

@Override
protected void verify_testInverseReferenceAutoUpdate_Map(AtlasEntity a1, AtlasEntity b1, AtlasEntity b2, AtlasEntity b3) {
    Object value = a1.getAttribute("mapToB");
    assertTrue(value instanceof Map);
    Map<String, AtlasObjectId> refMap = (Map<String, AtlasObjectId>) value;
    assertEquals(refMap.size(), 1);
    AtlasObjectId referencedEntityId = refMap.get("b3");
    assertEquals(referencedEntityId, AtlasTypeUtil.getAtlasObjectId(b3));
    verifyReferenceValue(b1, "mappedFromA", null);
    verifyReferenceValue(b2, "mappedFromA", null);
}
Also used : AtlasObjectId(org.apache.atlas.model.instance.AtlasObjectId) Map(java.util.Map)

Example 19 with AtlasObjectId

use of org.apache.atlas.model.instance.AtlasObjectId in project incubator-atlas by apache.

the class TestUtilsV2 method createDeptEg2.

public static AtlasEntitiesWithExtInfo createDeptEg2() {
    AtlasEntitiesWithExtInfo entitiesWithExtInfo = new AtlasEntitiesWithExtInfo();
    /******* Department - HR *******/
    AtlasEntity hrDept = new AtlasEntity(DEPARTMENT_TYPE, "name", "hr");
    AtlasObjectId hrDeptId = AtlasTypeUtil.getAtlasObjectId(hrDept);
    /******* Address Entities *******/
    AtlasStruct janeAddr = new AtlasStruct(ADDRESS_TYPE);
    janeAddr.setAttribute("street", "Great America Parkway");
    janeAddr.setAttribute("city", "Santa Clara");
    AtlasStruct juliusAddr = new AtlasStruct(ADDRESS_TYPE);
    juliusAddr.setAttribute("street", "Madison Ave");
    juliusAddr.setAttribute("city", "Newtonville");
    AtlasStruct maxAddr = new AtlasStruct(ADDRESS_TYPE);
    maxAddr.setAttribute("street", "Ripley St");
    maxAddr.setAttribute("city", "Newton");
    AtlasStruct johnAddr = new AtlasStruct(ADDRESS_TYPE);
    johnAddr.setAttribute("street", "Stewart Drive");
    johnAddr.setAttribute("city", "Sunnyvale");
    /******* Manager - Jane (John and Max subordinates) *******/
    AtlasEntity jane = new AtlasEntity(MANAGER_TYPE);
    AtlasObjectId janeId = AtlasTypeUtil.getAtlasObjectId(jane);
    jane.setAttribute("name", "Jane");
    jane.setAttribute("department", hrDeptId);
    jane.setAttribute("address", janeAddr);
    /******* Manager - Julius (no subordinates) *******/
    AtlasEntity julius = new AtlasEntity(MANAGER_TYPE);
    AtlasObjectId juliusId = AtlasTypeUtil.getAtlasObjectId(julius);
    julius.setAttribute("name", "Julius");
    julius.setAttribute("department", hrDeptId);
    julius.setAttribute("address", juliusAddr);
    julius.setAttribute("subordinates", ImmutableList.of());
    /******* Employee - Max (Manager: Jane, Mentor: Julius) *******/
    AtlasEntity max = new AtlasEntity(EMPLOYEE_TYPE);
    AtlasObjectId maxId = AtlasTypeUtil.getAtlasObjectId(max);
    max.setAttribute("name", "Max");
    max.setAttribute("department", hrDeptId);
    max.setAttribute("address", maxAddr);
    max.setAttribute("manager", janeId);
    max.setAttribute("mentor", juliusId);
    max.setAttribute("birthday", new Date(1979, 3, 15));
    max.setAttribute("hasPets", true);
    max.setAttribute("age", 36);
    max.setAttribute("numberOfCars", 2);
    max.setAttribute("houseNumber", 17);
    max.setAttribute("carMileage", 13);
    max.setAttribute("shares", Long.MAX_VALUE);
    max.setAttribute("salary", Double.MAX_VALUE);
    max.setAttribute("numberOfStarsEstimate", new BigInteger("1000000000000000000000000000000"));
    max.setAttribute("approximationOfPi", new BigDecimal("3.1415926535897932"));
    /******* Employee - John (Manager: Jane, Mentor: Max) *******/
    AtlasEntity john = new AtlasEntity(EMPLOYEE_TYPE);
    AtlasObjectId johnId = AtlasTypeUtil.getAtlasObjectId(john);
    john.setAttribute("name", "John");
    john.setAttribute("department", hrDeptId);
    john.setAttribute("address", johnAddr);
    john.setAttribute("manager", janeId);
    john.setAttribute("mentor", maxId);
    john.setAttribute("birthday", new Date(1950, 5, 15));
    john.setAttribute("hasPets", true);
    john.setAttribute("numberOfCars", 1);
    john.setAttribute("houseNumber", 153);
    john.setAttribute("carMileage", 13364);
    john.setAttribute("shares", 15000);
    john.setAttribute("salary", 123345.678);
    john.setAttribute("age", 50);
    john.setAttribute("numberOfStarsEstimate", new BigInteger("1000000000000000000000"));
    john.setAttribute("approximationOfPi", new BigDecimal("3.141592653589793238462643383279502884197169399375105820974944592307816406286"));
    jane.setAttribute("subordinates", ImmutableList.of(johnId, maxId));
    hrDept.setAttribute("employees", ImmutableList.of(janeId, juliusId, maxId, johnId));
    entitiesWithExtInfo.addEntity(hrDept);
    entitiesWithExtInfo.addEntity(jane);
    entitiesWithExtInfo.addEntity(julius);
    entitiesWithExtInfo.addEntity(max);
    entitiesWithExtInfo.addEntity(john);
    return entitiesWithExtInfo;
}
Also used : AtlasStruct(org.apache.atlas.model.instance.AtlasStruct) AtlasEntity(org.apache.atlas.model.instance.AtlasEntity) AtlasEntitiesWithExtInfo(org.apache.atlas.model.instance.AtlasEntity.AtlasEntitiesWithExtInfo) BigInteger(java.math.BigInteger) AtlasObjectId(org.apache.atlas.model.instance.AtlasObjectId) Date(java.util.Date) BigDecimal(java.math.BigDecimal)

Example 20 with AtlasObjectId

use of org.apache.atlas.model.instance.AtlasObjectId in project incubator-atlas by apache.

the class DeleteHandlerV1 method deleteEntities.

/**
     * Deletes the specified entity vertices.
     * Deletes any traits, composite entities, and structs owned by each entity.
     * Also deletes all the references from/to the entity.
     *
     * @param instanceVertices
     * @throws AtlasException
     */
public void deleteEntities(Collection<AtlasVertex> instanceVertices) throws AtlasBaseException {
    RequestContextV1 requestContext = RequestContextV1.get();
    Set<AtlasVertex> deletionCandidateVertices = new HashSet<>();
    for (AtlasVertex instanceVertex : instanceVertices) {
        String guid = AtlasGraphUtilsV1.getIdFromVertex(instanceVertex);
        AtlasEntity.Status state = AtlasGraphUtilsV1.getState(instanceVertex);
        if (state == AtlasEntity.Status.DELETED) {
            LOG.debug("Skipping deletion of {} as it is already deleted", guid);
            continue;
        }
        String typeName = AtlasGraphUtilsV1.getTypeName(instanceVertex);
        AtlasObjectId objId = new AtlasObjectId(guid, typeName);
        if (requestContext.getDeletedEntityIds().contains(objId)) {
            LOG.debug("Skipping deletion of {} as it is already deleted", guid);
            continue;
        }
        // Get GUIDs and vertices for all deletion candidates.
        Set<GraphHelper.VertexInfo> compositeVertices = getOwnedVertices(instanceVertex);
        // and gather deletion candidate vertices.
        for (GraphHelper.VertexInfo vertexInfo : compositeVertices) {
            requestContext.recordEntityDelete(new AtlasObjectId(vertexInfo.getGuid(), vertexInfo.getTypeName()));
            deletionCandidateVertices.add(vertexInfo.getVertex());
        }
    }
    // Delete traits and vertices.
    for (AtlasVertex deletionCandidateVertex : deletionCandidateVertices) {
        deleteAllTraits(deletionCandidateVertex);
        deleteTypeVertex(deletionCandidateVertex, false);
    }
}
Also used : AtlasVertex(org.apache.atlas.repository.graphdb.AtlasVertex) RequestContextV1(org.apache.atlas.RequestContextV1) AtlasEntity(org.apache.atlas.model.instance.AtlasEntity) GraphHelper(org.apache.atlas.repository.graph.GraphHelper) AtlasObjectId(org.apache.atlas.model.instance.AtlasObjectId) HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet)

Aggregations

AtlasObjectId (org.apache.atlas.model.instance.AtlasObjectId)46 AtlasEntity (org.apache.atlas.model.instance.AtlasEntity)27 Test (org.testng.annotations.Test)17 Map (java.util.Map)15 EntityMutationResponse (org.apache.atlas.model.instance.EntityMutationResponse)15 AtlasEntityHeader (org.apache.atlas.model.instance.AtlasEntityHeader)13 ArrayList (java.util.ArrayList)12 HashMap (java.util.HashMap)11 AtlasBaseException (org.apache.atlas.exception.AtlasBaseException)11 AtlasVertex (org.apache.atlas.repository.graphdb.AtlasVertex)11 BeforeTest (org.testng.annotations.BeforeTest)11 AtlasEntityType (org.apache.atlas.type.AtlasEntityType)10 AtlasEntitiesWithExtInfo (org.apache.atlas.model.instance.AtlasEntity.AtlasEntitiesWithExtInfo)7 List (java.util.List)6 AtlasEntityWithExtInfo (org.apache.atlas.model.instance.AtlasEntity.AtlasEntityWithExtInfo)5 AtlasStruct (org.apache.atlas.model.instance.AtlasStruct)5 RequestContextV1 (org.apache.atlas.RequestContextV1)4 AtlasExportRequest (org.apache.atlas.model.impexp.AtlasExportRequest)4 TestUtils.randomString (org.apache.atlas.TestUtils.randomString)3 AtlasEntityDef (org.apache.atlas.model.typedef.AtlasEntityDef)3