This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git


The following commit(s) were added to refs/heads/master by this push:
     new aaf0ba2  ATLAS-3187: columns attribute is empty for deleted hive_table 
entity
aaf0ba2 is described below

commit aaf0ba23b418d1b5b128ec4b8854287e878e2b4e
Author: Madhan Neethiraj <mad...@apache.org>
AuthorDate: Thu May 2 08:56:10 2019 -0700

    ATLAS-3187: columns attribute is empty for deleted hive_table entity
---
 .../store/graph/v2/EntityGraphRetriever.java       | 68 ++++++++++++++--------
 1 file changed, 43 insertions(+), 25 deletions(-)

diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
index 3e1e023..14f9916 100644
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
+++ 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
@@ -72,7 +72,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
-import java.util.ListIterator;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
@@ -85,7 +84,7 @@ import static 
org.apache.atlas.glossary.GlossaryUtils.TERM_ASSIGNMENT_ATTR_EXPRE
 import static 
org.apache.atlas.glossary.GlossaryUtils.TERM_ASSIGNMENT_ATTR_SOURCE;
 import static 
org.apache.atlas.glossary.GlossaryUtils.TERM_ASSIGNMENT_ATTR_STATUS;
 import static 
org.apache.atlas.glossary.GlossaryUtils.TERM_ASSIGNMENT_ATTR_STEWARD;
-import static org.apache.atlas.model.instance.AtlasRelationship.Status.ACTIVE;
+import static org.apache.atlas.model.instance.AtlasRelationship.Status.DELETED;
 import static 
org.apache.atlas.model.typedef.AtlasBaseTypeDef.ATLAS_TYPE_BIGDECIMAL;
 import static 
org.apache.atlas.model.typedef.AtlasBaseTypeDef.ATLAS_TYPE_BIGINTEGER;
 import static 
org.apache.atlas.model.typedef.AtlasBaseTypeDef.ATLAS_TYPE_BOOLEAN;
@@ -101,12 +100,9 @@ import static 
org.apache.atlas.repository.Constants.CLASSIFICATION_ENTITY_GUID;
 import static org.apache.atlas.repository.Constants.CLASSIFICATION_LABEL;
 import static 
org.apache.atlas.repository.Constants.CLASSIFICATION_VALIDITY_PERIODS_KEY;
 import static org.apache.atlas.repository.Constants.TERM_ASSIGNMENT_LABEL;
-import static org.apache.atlas.repository.graph.GraphHelper.EDGE_LABEL_PREFIX;
-import static 
org.apache.atlas.repository.graph.GraphHelper.addToPropagatedTraitNames;
 import static 
org.apache.atlas.repository.graph.GraphHelper.getAdjacentEdgesByLabel;
 import static 
org.apache.atlas.repository.graph.GraphHelper.getAllClassificationEdges;
 import static org.apache.atlas.repository.graph.GraphHelper.getAllTraitNames;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getAssociatedEntityVertex;
 import static 
org.apache.atlas.repository.graph.GraphHelper.getBlockedClassificationIds;
 import static 
org.apache.atlas.repository.graph.GraphHelper.getArrayElementsProperty;
 import static 
org.apache.atlas.repository.graph.GraphHelper.getClassificationEntityStatus;
@@ -1108,42 +1104,64 @@ public class EntityGraphRetriever {
             entity.setRelationshipAttribute(attributeName, ret);
 
             if (attributeEndDef.getIsLegacyAttribute() && 
!entity.hasAttribute(attributeName)) {
-                entity.setAttribute(attributeName, toAtlasObjectId(ret));
+                entity.setAttribute(attributeName, toLegacyAttribute(ret));
             }
         }
 
         return ret;
     }
 
-    private Object toAtlasObjectId(Object obj) {
+    private Object toLegacyAttribute(Object obj) {
         final Object ret;
 
         if (obj instanceof AtlasRelatedObjectId) {
-            AtlasRelatedObjectId relatedObjId = (AtlasRelatedObjectId) obj;
-
-            ret = relatedObjId.getRelationshipStatus() == ACTIVE ? new 
AtlasObjectId((AtlasObjectId) obj) : null;
+            ret = toLegacyAttribute((AtlasRelatedObjectId) obj);
         } else if (obj instanceof Collection) {
-            List list = new ArrayList();
+            ret = toLegacyAttribute((Collection) obj);
+        } else if (obj instanceof Map) {
+            ret = toLegacyAttribute((Map) obj);
+        } else {
+            ret = obj;
+        }
 
-            for (Object elem : (Collection) obj) {
-                Object objId = toAtlasObjectId(elem);
+        return ret;
+    }
 
-                if (objId != null) {
-                    list.add(objId);
-                }
-            }
+    private AtlasObjectId toLegacyAttribute(AtlasRelatedObjectId relatedObjId) 
{
+        final AtlasObjectId ret;
 
-            ret = list;
-        } else if (obj instanceof Map) {
-            Map map = new HashMap();
+        if (relatedObjId.getRelationshipStatus() == DELETED && 
relatedObjId.getEntityStatus() == AtlasEntity.Status.ACTIVE) {
+            ret = null;
+        } else {
+            ret = new AtlasObjectId(relatedObjId);
+        }
+
+        return ret;
+    }
+
+    private Collection toLegacyAttribute(Collection collection) {
+        final List ret = new ArrayList();
+
+        for (Object elem : collection) {
+            Object objId = toLegacyAttribute(elem);
 
-            for (Object key : ((Map) obj).keySet()) {
-                map.put(key, toAtlasObjectId(((Map) obj).get(key)));
+            if (objId != null) {
+                ret.add(objId);
             }
+        }
 
-            ret = map;
-        } else {
-            ret = obj;
+        return ret;
+    }
+
+    private Map toLegacyAttribute(Map map) {
+        final Map ret = new HashMap();
+
+        for (Object key : map.keySet()) {
+            Object elem = toLegacyAttribute(map.get(key));
+
+            if (elem != null) {
+                ret.put(key, elem);
+            }
         }
 
         return ret;

Reply via email to