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/05/15 21:25:08 UTC

atlas git commit: ATLAS-2632 Tag Propagation : Tag is added to propagatedClassification twice when relationship is updated to BOTH

Repository: atlas
Updated Branches:
  refs/heads/master 0eaefe38f -> 801db28bf


ATLAS-2632 Tag Propagation : Tag is added to propagatedClassification twice when relationship is updated to BOTH


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

Branch: refs/heads/master
Commit: 801db28bf772b111b776a0dda0d305344c2eef4d
Parents: 0eaefe3
Author: Sarath Subramanian <ss...@hortonworks.com>
Authored: Tue May 15 14:24:55 2018 -0700
Committer: Sarath Subramanian <ss...@hortonworks.com>
Committed: Tue May 15 14:24:55 2018 -0700

----------------------------------------------------------------------
 .../atlas/model/instance/AtlasRelationship.java | 21 ++++++++++----------
 .../graph/v1/AtlasRelationshipStoreV1.java      |  2 +-
 .../store/graph/v1/EntityGraphRetriever.java    | 11 +++++-----
 .../ClassificationPropagationTest.java          | 21 ++++++++++----------
 4 files changed, 29 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/801db28b/intg/src/main/java/org/apache/atlas/model/instance/AtlasRelationship.java
----------------------------------------------------------------------
diff --git a/intg/src/main/java/org/apache/atlas/model/instance/AtlasRelationship.java b/intg/src/main/java/org/apache/atlas/model/instance/AtlasRelationship.java
index d04daa5..debaeef 100644
--- a/intg/src/main/java/org/apache/atlas/model/instance/AtlasRelationship.java
+++ b/intg/src/main/java/org/apache/atlas/model/instance/AtlasRelationship.java
@@ -30,12 +30,13 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 import java.io.Serializable;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
 import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
@@ -82,8 +83,8 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
 
     public enum Status { ACTIVE, DELETED }
 
-    private List<AtlasClassification> propagatedClassifications;
-    private List<AtlasClassification> blockedPropagatedClassifications;
+    private Set<AtlasClassification> propagatedClassifications;
+    private Set<AtlasClassification> blockedPropagatedClassifications;
 
     @JsonIgnore
     private static AtomicLong s_nextId = new AtomicLong(System.nanoTime());
@@ -198,7 +199,7 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
             }
 
             if (CollectionUtils.isNotEmpty((List) propagatedClassifications)) {
-                this.propagatedClassifications = new ArrayList<>();
+                this.propagatedClassifications = new HashSet<>();
 
                 for (Object elem : (List) propagatedClassifications) {
                     if (elem instanceof AtlasClassification) {
@@ -210,7 +211,7 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
             }
 
             if (CollectionUtils.isNotEmpty((List) blockedPropagatedClassifications)) {
-                this.blockedPropagatedClassifications = new ArrayList<>();
+                this.blockedPropagatedClassifications = new HashSet<>();
 
                 for (Object elem : (List) blockedPropagatedClassifications) {
                     if (elem instanceof AtlasClassification) {
@@ -308,19 +309,19 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
         return "-" + Long.toString(s_nextId.getAndIncrement());
     }
 
-    public List<AtlasClassification> getPropagatedClassifications() {
+    public Set<AtlasClassification> getPropagatedClassifications() {
         return propagatedClassifications;
     }
 
-    public void setPropagatedClassifications(List<AtlasClassification> propagatedClassifications) {
+    public void setPropagatedClassifications(Set<AtlasClassification> propagatedClassifications) {
         this.propagatedClassifications = propagatedClassifications;
     }
 
-    public List<AtlasClassification> getBlockedPropagatedClassifications() {
+    public Set<AtlasClassification> getBlockedPropagatedClassifications() {
         return blockedPropagatedClassifications;
     }
 
-    public void setBlockedPropagatedClassifications(List<AtlasClassification> blockedPropagatedClassifications) {
+    public void setBlockedPropagatedClassifications(Set<AtlasClassification> blockedPropagatedClassifications) {
         this.blockedPropagatedClassifications = blockedPropagatedClassifications;
     }
 
@@ -330,7 +331,7 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
 
     private void init(String guid, AtlasObjectId end1, AtlasObjectId end2, String label, PropagateTags propagateTags,
                       Status status, String createdBy, String updatedBy, Date createTime, Date updateTime, Long version,
-                      List<AtlasClassification> propagatedClassifications, List<AtlasClassification> blockedPropagatedClassifications) {
+                      Set<AtlasClassification> propagatedClassifications, Set<AtlasClassification> blockedPropagatedClassifications) {
         setGuid(guid);
         setEnd1(end1);
         setEnd2(end2);

http://git-wip-us.apache.org/repos/asf/atlas/blob/801db28b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipStoreV1.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipStoreV1.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipStoreV1.java
index 9fcba6d..a600b20 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipStoreV1.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipStoreV1.java
@@ -357,7 +357,7 @@ public class AtlasRelationshipStoreV1 implements AtlasRelationshipStore {
         return entityRetriever.mapEdgeToAtlasRelationship(relationshipEdge);
     }
 
-    private void handleBlockedClassifications(AtlasEdge edge, List<AtlasClassification> blockedPropagatedClassifications) throws AtlasBaseException {
+    private void handleBlockedClassifications(AtlasEdge edge, Set<AtlasClassification> blockedPropagatedClassifications) throws AtlasBaseException {
         if (blockedPropagatedClassifications != null) {
             List<AtlasVertex> propagatedClassificationVertices               = getClassificationVertices(edge);
             List<String>      currentClassificationIds                       = getBlockedClassificationIds(edge);

http://git-wip-us.apache.org/repos/asf/atlas/blob/801db28b/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 7ca51e4..0f9f877 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
@@ -65,6 +65,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -1042,11 +1043,11 @@ public final class EntityGraphRetriever {
     }
 
     private void readClassificationsFromEdge(AtlasEdge edge, AtlasRelationshipWithExtInfo relationshipWithExtInfo, boolean extendedInfo) throws AtlasBaseException {
-        List<AtlasVertex>         classificationVertices    = getClassificationVertices(edge);
-        List<String>              blockedClassificationIds  = getBlockedClassificationIds(edge);
-        List<AtlasClassification> propagatedClassifications = new ArrayList<>();
-        List<AtlasClassification> blockedClassifications    = new ArrayList<>();
-        AtlasRelationship         relationship              = relationshipWithExtInfo.getRelationship();
+        List<AtlasVertex>        classificationVertices    = getClassificationVertices(edge);
+        List<String>             blockedClassificationIds  = getBlockedClassificationIds(edge);
+        AtlasRelationship        relationship              = relationshipWithExtInfo.getRelationship();
+        Set<AtlasClassification> propagatedClassifications = new HashSet<>();
+        Set<AtlasClassification> blockedClassifications    = new HashSet<>();
 
         for (AtlasVertex classificationVertex : classificationVertices) {
             String              classificationId = classificationVertex.getIdForDisplay();

http://git-wip-us.apache.org/repos/asf/atlas/blob/801db28b/repository/src/test/java/org/apache/atlas/repository/tagpropagation/ClassificationPropagationTest.java
----------------------------------------------------------------------
diff --git a/repository/src/test/java/org/apache/atlas/repository/tagpropagation/ClassificationPropagationTest.java b/repository/src/test/java/org/apache/atlas/repository/tagpropagation/ClassificationPropagationTest.java
index 56e7b96..151211e 100644
--- a/repository/src/test/java/org/apache/atlas/repository/tagpropagation/ClassificationPropagationTest.java
+++ b/repository/src/test/java/org/apache/atlas/repository/tagpropagation/ClassificationPropagationTest.java
@@ -52,6 +52,7 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -350,8 +351,8 @@ public class ClassificationPropagationTest {
         assertClassificationExistInEntity(EMPLOYEES_UNION_TABLE, PII_tag3.getTypeName(), employees2.getGuid());
 
         AtlasRelationship process3_employee_union_relationship = getRelationship(EMPLOYEES_UNION_PROCESS, EMPLOYEES_UNION_TABLE);
-        List<AtlasClassification> propagatedClassifications    = process3_employee_union_relationship.getPropagatedClassifications();
-        List<AtlasClassification> blockedClassifications       = process3_employee_union_relationship.getBlockedPropagatedClassifications();
+        Set<AtlasClassification> propagatedClassifications     = process3_employee_union_relationship.getPropagatedClassifications();
+        Set<AtlasClassification> blockedClassifications        = process3_employee_union_relationship.getBlockedPropagatedClassifications();
 
         assertNotNull(propagatedClassifications);
         assertClassificationEquals(propagatedClassifications, PII_tag1);
@@ -363,7 +364,7 @@ public class ClassificationPropagationTest {
         PII_tag2.setEntityGuid(employees1.getGuid());
         PII_tag3.setEntityGuid(employees2.getGuid());
 
-        process3_employee_union_relationship.setBlockedPropagatedClassifications(Arrays.asList(PII_tag2, PII_tag3));
+        process3_employee_union_relationship.setBlockedPropagatedClassifications(new HashSet<>(Arrays.asList(PII_tag2, PII_tag3)));
         relationshipStore.update(process3_employee_union_relationship);
 
         process3_employee_union_relationship = getRelationship(EMPLOYEES_UNION_PROCESS, EMPLOYEES_UNION_TABLE);
@@ -383,7 +384,7 @@ public class ClassificationPropagationTest {
         assertClassificationExistInEntity(EMPLOYEES_UNION_TABLE, PII_tag1.getTypeName(), hdfs_path.getGuid());
     }
 
-    private void assertClassificationEquals(List<AtlasClassification> propagatedClassifications, AtlasClassification expected) {
+    private void assertClassificationEquals(Set<AtlasClassification> propagatedClassifications, AtlasClassification expected) {
         String expectedTypeName = expected.getTypeName();
         for (AtlasClassification c : propagatedClassifications) {
             if(c.getTypeName().equals(expectedTypeName)) {
@@ -417,19 +418,19 @@ public class ClassificationPropagationTest {
         AtlasRelationship process3_employee_union_relationship = getRelationship(EMPLOYEES_UNION_PROCESS, EMPLOYEES_UNION_TABLE);
 
         // remove blocked propagated classification entry for PII (from employees2) - allow PII from employees2 to propagate to employee_union
-        process3_employee_union_relationship.setBlockedPropagatedClassifications(Arrays.asList(PII_tag3));
+        process3_employee_union_relationship.setBlockedPropagatedClassifications(new HashSet<>(Arrays.asList(PII_tag3)));
         relationshipStore.update(process3_employee_union_relationship);
 
-        process3_employee_union_relationship                = getRelationship(EMPLOYEES_UNION_PROCESS, EMPLOYEES_UNION_TABLE);
-        List<AtlasClassification> propagatedClassifications = process3_employee_union_relationship.getPropagatedClassifications();
-        List<AtlasClassification> blockedClassifications    = process3_employee_union_relationship.getBlockedPropagatedClassifications();
+        process3_employee_union_relationship               = getRelationship(EMPLOYEES_UNION_PROCESS, EMPLOYEES_UNION_TABLE);
+        Set<AtlasClassification> propagatedClassifications = process3_employee_union_relationship.getPropagatedClassifications();
+        Set<AtlasClassification> blockedClassifications    = process3_employee_union_relationship.getBlockedPropagatedClassifications();
 
         assertClassificationExistInList(propagatedClassifications, PII_tag1);
         assertClassificationExistInList(propagatedClassifications, PII_tag2);
         assertClassificationExistInList(blockedClassifications, PII_tag3);
 
         // remove all blocked propagated classification entry
-        process3_employee_union_relationship.setBlockedPropagatedClassifications(Collections.emptyList());
+        process3_employee_union_relationship.setBlockedPropagatedClassifications(Collections.emptySet());
         relationshipStore.update(process3_employee_union_relationship);
 
         process3_employee_union_relationship = getRelationship(EMPLOYEES_UNION_PROCESS, EMPLOYEES_UNION_TABLE);
@@ -442,7 +443,7 @@ public class ClassificationPropagationTest {
         assertTrue(blockedClassifications.isEmpty());
     }
 
-    private void assertClassificationExistInList(List<AtlasClassification> classifications, AtlasClassification classification) {
+    private void assertClassificationExistInList(Set<AtlasClassification> classifications, AtlasClassification classification) {
         String  classificationName  = classification.getTypeName();
         String  entityGuid          = classification.getEntityGuid();
         boolean foundClassification = false;