You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by sa...@apache.org on 2018/03/26 16:19:53 UTC

atlas git commit: ATLAS-2513: Notifications are not sent about impacted entities when classification is updated at source entity

Repository: atlas
Updated Branches:
  refs/heads/master 59673d48c -> 45d3872b6


ATLAS-2513: Notifications are not sent about impacted entities when classification is updated at source entity


Project: http://git-wip-us.apache.org/repos/asf/atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/45d3872b
Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/45d3872b
Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/45d3872b

Branch: refs/heads/master
Commit: 45d3872b6d5cb58615894541f3ad7f6aa01480b3
Parents: 59673d4
Author: Sarath Subramanian <ss...@hortonworks.com>
Authored: Mon Mar 26 09:19:27 2018 -0700
Committer: Sarath Subramanian <ss...@hortonworks.com>
Committed: Mon Mar 26 09:19:27 2018 -0700

----------------------------------------------------------------------
 .../store/graph/v1/EntityGraphMapper.java       | 37 +++++++++++++++-----
 .../store/graph/v1/EntityGraphRetriever.java    |  7 ++--
 2 files changed, 33 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/45d3872b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphMapper.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphMapper.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphMapper.java
index 57aa41b..c76f640 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphMapper.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphMapper.java
@@ -22,6 +22,7 @@ import org.apache.atlas.AtlasErrorCode;
 import org.apache.atlas.AtlasException;
 import org.apache.atlas.RequestContextV1;
 import org.apache.atlas.exception.AtlasBaseException;
+import org.apache.atlas.model.TimeBoundary;
 import org.apache.atlas.model.TypeCategory;
 import org.apache.atlas.model.instance.AtlasClassification;
 import org.apache.atlas.model.instance.AtlasEntity;
@@ -1479,10 +1480,11 @@ public class EntityGraphMapper {
             throw new AtlasBaseException(AtlasErrorCode.INSTANCE_GUID_NOT_FOUND, guid);
         }
 
-        String                    entityTypeName           = AtlasGraphUtilsV1.getTypeName(entityVertex);
-        AtlasEntityType           entityType               = typeRegistry.getEntityTypeByName(entityTypeName);
-        List<AtlasClassification> updatedClassifications   = new ArrayList<>();
-        List<AtlasVertex>         entitiesToPropagateTo    = new ArrayList<>();
+        String                    entityTypeName         = AtlasGraphUtilsV1.getTypeName(entityVertex);
+        AtlasEntityType           entityType             = typeRegistry.getEntityTypeByName(entityTypeName);
+        List<AtlasClassification> updatedClassifications = new ArrayList<>();
+        List<AtlasVertex>         entitiesToPropagateTo  = new ArrayList<>();
+
         Map<AtlasVertex, List<AtlasClassification>> addedPropagations   = null;
         Map<AtlasVertex, List<String>>              removedPropagations = null;
 
@@ -1508,12 +1510,31 @@ public class EntityGraphMapper {
 
             validateAndNormalizeForUpdate(classification);
 
-            Map<String, Object> classificationAttributes = classification.getAttributes();
+            boolean isClassificationUpdated = false;
+
+            // check for attribute update
+            Map<String, Object> updatedAttributes = classification.getAttributes();
 
-            if (MapUtils.isNotEmpty(classificationAttributes)) {
-                for (String attributeName : classificationAttributes.keySet()) {
-                    currentClassification.setAttribute(attributeName, classificationAttributes.get(attributeName));
+            if (MapUtils.isNotEmpty(updatedAttributes)) {
+                for (String attributeName : updatedAttributes.keySet()) {
+                    currentClassification.setAttribute(attributeName, updatedAttributes.get(attributeName));
                 }
+
+                isClassificationUpdated = true;
+            }
+
+            // check for validity period update
+            List<TimeBoundary> currentValidityPeriods = currentClassification.getValidityPeriods();
+            List<TimeBoundary> updatedValidityPeriods = classification.getValidityPeriods();
+
+            if (!Objects.equals(currentValidityPeriods, updatedValidityPeriods)) {
+                currentClassification.setValidityPeriods(updatedValidityPeriods);
+
+                isClassificationUpdated = true;
+            }
+
+            if (isClassificationUpdated && CollectionUtils.isEmpty(entitiesToPropagateTo)) {
+                entitiesToPropagateTo = graphHelper.getImpactedVertices(guid);
             }
 
             if (LOG.isDebugEnabled()) {

http://git-wip-us.apache.org/repos/asf/atlas/blob/45d3872b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java
index 3885157..8fe635a 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java
@@ -17,6 +17,7 @@
  */
 package org.apache.atlas.repository.store.graph.v1;
 
+import com.fasterxml.jackson.core.type.TypeReference;
 import org.apache.atlas.AtlasErrorCode;
 import org.apache.atlas.exception.AtlasBaseException;
 import org.apache.atlas.model.TimeBoundary;
@@ -100,8 +101,8 @@ public final class EntityGraphRetriever {
     private final String CREATE_TIME    = "createTime";
     private final String QUALIFIED_NAME = "qualifiedName";
 
-    private static final List<TimeBoundary> TIME_BOUNDARIES_LIST = new ArrayList<>();
-    private static final GraphHelper        graphHelper          = GraphHelper.getInstance();
+    private static final TypeReference<List<TimeBoundary>> TIME_BOUNDARIES_LIST_TYPE = new TypeReference<List<TimeBoundary>>() {};
+    private static final GraphHelper graphHelper = GraphHelper.getInstance();
 
     private final AtlasTypeRegistry typeRegistry;
 
@@ -249,7 +250,7 @@ public final class EntityGraphRetriever {
         String strValidityPeriods = AtlasGraphUtilsV1.getProperty(classificationVertex, CLASSIFICATION_VALIDITY_PERIODS_KEY, String.class);
 
         if (strValidityPeriods != null) {
-            ret.setValidityPeriods(AtlasJson.fromJson(strValidityPeriods, TIME_BOUNDARIES_LIST.getClass()));
+            ret.setValidityPeriods(AtlasJson.fromJson(strValidityPeriods, TIME_BOUNDARIES_LIST_TYPE));
         }
 
         mapAttributes(classificationVertex, ret, null);