This is an automated email from the ASF dual-hosted git repository.
sarath pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new fb04819 ATLAS-3327-2 Create internal vertex property for
classification names and propagated classification names
fb04819 is described below
commit fb04819d1db18609b1c6a0e4ca4c263651bcb21c
Author: Le Ma <[email protected]>
AuthorDate: Thu Aug 1 14:59:13 2019 -0700
ATLAS-3327-2 Create internal vertex property for classification names and
propagated classification names
(cherry picked from commit 8127189c4eff04fb9ffcf96c0e2989b51052fa0b)
---
.../org/apache/atlas/repository/Constants.java | 1 +
.../repository/graph/GraphBackedSearchIndexer.java | 2 +
.../apache/atlas/repository/graph/GraphHelper.java | 26 +++++-----
.../patches/ClassificationTextPatch.java | 3 +-
.../repository/store/graph/v1/DeleteHandlerV1.java | 46 ++++++++++++++---
.../store/graph/v2/EntityGraphMapper.java | 60 +++++++++++++++-------
.../store/graph/v2/EntityStateChecker.java | 8 +++
.../apache/atlas/web/adapters/TestEntityREST.java | 16 +++---
8 files changed, 113 insertions(+), 49 deletions(-)
diff --git a/common/src/main/java/org/apache/atlas/repository/Constants.java
b/common/src/main/java/org/apache/atlas/repository/Constants.java
index 38a5198..673a85c 100644
--- a/common/src/main/java/org/apache/atlas/repository/Constants.java
+++ b/common/src/main/java/org/apache/atlas/repository/Constants.java
@@ -180,6 +180,7 @@ public final class Constants {
public static final String CLASSIFICATION_EDGE_IS_PROPAGATED_PROPERTY_KEY
= encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "isPropagated");
public static final String CLASSIFICATION_EDGE_STATE_PROPERTY_KEY
= STATE_PROPERTY_KEY;
public static final String CLASSIFICATION_LABEL
= "classifiedAs";
+ public static final String CLASSIFICATION_NAME_DELIMITER
= "|";
public static final String TERM_ASSIGNMENT_LABEL
= "r:AtlasGlossarySemanticAssignment";
public static final String ATTRIBUTE_INDEX_PROPERTY_KEY
= encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "index");
public static final String ATTRIBUTE_KEY_PROPERTY_KEY
= encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "key");
diff --git
a/repository/src/main/java/org/apache/atlas/repository/graph/GraphBackedSearchIndexer.java
b/repository/src/main/java/org/apache/atlas/repository/graph/GraphBackedSearchIndexer.java
index f4f8276..a074e45 100755
---
a/repository/src/main/java/org/apache/atlas/repository/graph/GraphBackedSearchIndexer.java
+++
b/repository/src/main/java/org/apache/atlas/repository/graph/GraphBackedSearchIndexer.java
@@ -319,6 +319,8 @@ public class GraphBackedSearchIndexer implements
SearchIndexer, ActiveStateChang
createCommonVertexIndex(management, CREATED_BY_KEY,
UniqueKind.NONE, String.class, SINGLE, false, false);
createCommonVertexIndex(management, CLASSIFICATION_TEXT_KEY,
UniqueKind.NONE, String.class, SINGLE, false, false);
createCommonVertexIndex(management, MODIFIED_BY_KEY,
UniqueKind.NONE, String.class, SINGLE, false, false);
+ createCommonVertexIndex(management, CLASSIFICATION_NAMES_KEY,
UniqueKind.NONE, String.class, SINGLE, true, false);
+ createCommonVertexIndex(management,
PROPAGATED_CLASSIFICATION_NAMES_KEY, UniqueKind.NONE, String.class, SINGLE,
true, false);
createCommonVertexIndex(management, TRAIT_NAMES_PROPERTY_KEY,
UniqueKind.NONE, String.class, SET, true, true);
createCommonVertexIndex(management,
PROPAGATED_TRAIT_NAMES_PROPERTY_KEY, UniqueKind.NONE, String.class, LIST, true,
true);
diff --git
a/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java
b/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java
index d5361fe..a58c670 100755
---
a/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java
+++
b/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java
@@ -85,6 +85,8 @@ import static
org.apache.atlas.repository.Constants.CLASSIFICATION_ENTITY_GUID;
import static
org.apache.atlas.repository.Constants.CLASSIFICATION_ENTITY_STATUS;
import static org.apache.atlas.repository.Constants.CLASSIFICATION_LABEL;
import static
org.apache.atlas.repository.Constants.CLASSIFICATION_EDGE_NAME_PROPERTY_KEY;
+
+import static
org.apache.atlas.repository.Constants.CLASSIFICATION_NAME_DELIMITER;
import static
org.apache.atlas.repository.Constants.CLASSIFICATION_VERTEX_NAME_KEY;
import static
org.apache.atlas.repository.Constants.CLASSIFICATION_VERTEX_PROPAGATE_KEY;
import static
org.apache.atlas.repository.Constants.CLASSIFICATION_VERTEX_REMOVE_PROPAGATIONS_KEY;
@@ -92,8 +94,6 @@ import static
org.apache.atlas.repository.Constants.CREATED_BY_KEY;
import static org.apache.atlas.repository.Constants.ENTITY_TYPE_PROPERTY_KEY;
import static
org.apache.atlas.repository.Constants.MODIFICATION_TIMESTAMP_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.MODIFIED_BY_KEY;
-import static
org.apache.atlas.repository.Constants.PROPAGATED_CLASSIFICATION_NAMES_KEY;
-import static
org.apache.atlas.repository.Constants.PROPAGATED_TRAIT_NAMES_PROPERTY_KEY;
import static
org.apache.atlas.repository.Constants.RELATIONSHIPTYPE_BLOCKED_PROPAGATED_CLASSIFICATIONS_KEY;
import static
org.apache.atlas.repository.Constants.RELATIONSHIPTYPE_TAG_PROPAGATION_KEY;
import static org.apache.atlas.repository.Constants.STATE_PROPERTY_KEY;
@@ -659,18 +659,6 @@ public final class GraphHelper {
return element.toString();
}
- public static void addToPropagatedClassificationAndTraitNames(AtlasVertex
entityVertex, String classificationName) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Adding property {} = \"{}\" to vertex {}",
PROPAGATED_TRAIT_NAMES_PROPERTY_KEY, classificationName, string(entityVertex));
- }
-
- entityVertex.addListProperty(PROPAGATED_TRAIT_NAMES_PROPERTY_KEY,
classificationName);
-
- String propClsNames =
entityVertex.getProperty(PROPAGATED_CLASSIFICATION_NAMES_KEY, String.class);
- propClsNames = StringUtils.isEmpty(propClsNames)?
classificationName : propClsNames + "|" + classificationName;
- entityVertex.setProperty(PROPAGATED_CLASSIFICATION_NAMES_KEY,
propClsNames);
- }
-
/**
* Remove the specified edge from the graph.
*
@@ -1849,4 +1837,14 @@ public final class GraphHelper {
public static boolean getDefaultRemovePropagations() {
return removePropagations;
}
+
+ public static String getDelimitedClassificationNames(Collection<String>
classificationNames) {
+ String ret = null;
+
+ if (CollectionUtils.isNotEmpty(classificationNames)) {
+ ret = CLASSIFICATION_NAME_DELIMITER +
StringUtils.join(classificationNames, CLASSIFICATION_NAME_DELIMITER)
+ + CLASSIFICATION_NAME_DELIMITER;
+ }
+ return ret;
+ }
}
\ No newline at end of file
diff --git
a/repository/src/main/java/org/apache/atlas/repository/patches/ClassificationTextPatch.java
b/repository/src/main/java/org/apache/atlas/repository/patches/ClassificationTextPatch.java
index 20a6cbf..2af50ba 100644
---
a/repository/src/main/java/org/apache/atlas/repository/patches/ClassificationTextPatch.java
+++
b/repository/src/main/java/org/apache/atlas/repository/patches/ClassificationTextPatch.java
@@ -71,8 +71,7 @@ public class ClassificationTextPatch extends
AtlasPatchHandler {
LOG.debug("processItem(typeName={}, vertexId={})", typeName,
vertexId);
}
- getEntityGraphMapper().updateClassificationText(vertex);
- getEntityGraphMapper().setClassificationNames(vertex);
+ getEntityGraphMapper().updateClassificationTextAndNames(vertex);
if(LOG.isDebugEnabled()) {
LOG.debug("processItem(typeName={}, vertexId={}): Done!",
typeName, vertexId);
diff --git
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/DeleteHandlerV1.java
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/DeleteHandlerV1.java
index 60b3e57..d2544df 100644
---
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/DeleteHandlerV1.java
+++
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/DeleteHandlerV1.java
@@ -62,6 +62,7 @@ import static
org.apache.atlas.model.typedef.AtlasRelationshipDef.PropagateTags.
import static
org.apache.atlas.repository.Constants.CLASSIFICATION_EDGE_NAME_PROPERTY_KEY;
import static
org.apache.atlas.repository.Constants.CLASSIFICATION_ENTITY_STATUS;
import static org.apache.atlas.repository.Constants.CLASSIFICATION_LABEL;
+import static
org.apache.atlas.repository.Constants.CLASSIFICATION_NAME_DELIMITER;
import static
org.apache.atlas.repository.Constants.MODIFICATION_TIMESTAMP_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.MODIFIED_BY_KEY;
import static
org.apache.atlas.repository.Constants.PROPAGATED_CLASSIFICATION_NAMES_KEY;
@@ -450,7 +451,7 @@ public abstract class DeleteHandlerV1 {
graphHelper.addClassificationEdge(propagatedEntityVertex,
classificationVertex, true);
-
addToPropagatedClassificationAndTraitNames(propagatedEntityVertex,
classificationName);
+ addToPropagatedClassificationNames(propagatedEntityVertex,
classificationName);
// record add propagation details to send notifications at the
end
RequestContext context = RequestContext.get();
@@ -614,7 +615,7 @@ public abstract class DeleteHandlerV1 {
graphHelper.removeEdge(propagatedEdge);
-
removeFromPropagatedClassificationAndTraitNames(impactedEntityVertex,
classificationName);
+
removeFromPropagatedClassificationNames(impactedEntityVertex,
classificationName);
} else {
if (LOG.isDebugEnabled()) {
LOG.debug(" --> Not removing propagated
classification edge from [{}] --> [{}][{}] using edge label: [{}], since edge
doesn't exist",
@@ -666,7 +667,7 @@ public abstract class DeleteHandlerV1 {
getTypeName(entityVertex),
GraphHelper.getGuid(entityVertex), CLASSIFICATION_LABEL);
}
- removeFromPropagatedClassificationAndTraitNames(entityVertex,
classificationName);
+ removeFromPropagatedClassificationNames(entityVertex,
classificationName);
deleteEdge(edge, true);
@@ -987,18 +988,47 @@ public abstract class DeleteHandlerV1 {
return Objects.nonNull(entityType) && entityType.isInternalType();
}
- private void removeFromPropagatedClassificationAndTraitNames(AtlasVertex
entityVertex, String classificationName) {
+ private void addToPropagatedClassificationNames(AtlasVertex entityVertex,
String classificationName) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Adding property {} = \"{}\" to vertex {}",
PROPAGATED_TRAIT_NAMES_PROPERTY_KEY, classificationName, string(entityVertex));
+ }
+ entityVertex.addListProperty(PROPAGATED_TRAIT_NAMES_PROPERTY_KEY,
classificationName);
+
+ String propClsNames =
entityVertex.getProperty(PROPAGATED_CLASSIFICATION_NAMES_KEY, String.class);
+
+ propClsNames = StringUtils.isEmpty(propClsNames) ?
CLASSIFICATION_NAME_DELIMITER + classificationName
+ : (propClsNames +
classificationName);
+
+ propClsNames = propClsNames + CLASSIFICATION_NAME_DELIMITER;
+ entityVertex.setProperty(PROPAGATED_CLASSIFICATION_NAMES_KEY,
propClsNames);
+ }
+
+ private void removeFromPropagatedClassificationNames(AtlasVertex
entityVertex, String classificationName) {
if (entityVertex != null &&
StringUtils.isNotEmpty(classificationName)) {
List<String> propagatedTraitNames = getTraitNames(entityVertex,
true);
propagatedTraitNames.remove(classificationName);
- entityVertex.removeProperty(PROPAGATED_TRAIT_NAMES_PROPERTY_KEY);
- entityVertex.removeProperty(PROPAGATED_CLASSIFICATION_NAMES_KEY);
+ setPropagatedClassificationNames(entityVertex,
propagatedTraitNames);
+ }
+ }
+
+ private void setPropagatedClassificationNames(AtlasVertex entityVertex,
List<String> classificationNames) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Adding property {} = \"{}\" to vertex {}",
PROPAGATED_TRAIT_NAMES_PROPERTY_KEY, classificationNames, string(entityVertex));
+ }
- for (String propagatedTraitName : propagatedTraitNames) {
- addToPropagatedClassificationAndTraitNames(entityVertex,
propagatedTraitName);
+ entityVertex.removeProperty(PROPAGATED_TRAIT_NAMES_PROPERTY_KEY);
+ entityVertex.removeProperty(PROPAGATED_CLASSIFICATION_NAMES_KEY);
+
+ if (CollectionUtils.isNotEmpty(classificationNames)) {
+ for (String classificationName : classificationNames) {
+
entityVertex.addListProperty(PROPAGATED_TRAIT_NAMES_PROPERTY_KEY,
classificationName);
}
+
+ String propClsName = CLASSIFICATION_NAME_DELIMITER +
StringUtils.join(classificationNames, CLASSIFICATION_NAME_DELIMITER) +
CLASSIFICATION_NAME_DELIMITER;
+
+ entityVertex.setProperty(PROPAGATED_CLASSIFICATION_NAMES_KEY,
propClsName);
}
}
diff --git
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java
index de46979..f9010fe 100644
---
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java
+++
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java
@@ -81,11 +81,11 @@ import static
org.apache.atlas.model.instance.EntityMutations.EntityOperation.PA
import static
org.apache.atlas.model.instance.EntityMutations.EntityOperation.UPDATE;
import static
org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef.Cardinality.SET;
import static org.apache.atlas.repository.Constants.*;
-import static
org.apache.atlas.repository.graph.GraphHelper.DEFAULT_REMOVE_PROPAGATIONS_ON_ENTITY_DELETE;
import static
org.apache.atlas.repository.graph.GraphHelper.getCollectionElementsUsingRelationship;
import static
org.apache.atlas.repository.graph.GraphHelper.getClassificationEdge;
import static
org.apache.atlas.repository.graph.GraphHelper.getClassificationVertex;
import static
org.apache.atlas.repository.graph.GraphHelper.getDefaultRemovePropagations;
+import static
org.apache.atlas.repository.graph.GraphHelper.getDelimitedClassificationNames;
import static
org.apache.atlas.repository.graph.GraphHelper.getMapElementsProperty;
import static org.apache.atlas.repository.graph.GraphHelper.getStatus;
import static org.apache.atlas.repository.graph.GraphHelper.getTraitLabel;
@@ -1512,7 +1512,7 @@ public class EntityGraphMapper {
LOG.debug("Adding classification [{}] to [{}] using edge
label: [{}]", classificationName, entityType.getTypeName(),
getTraitLabel(classificationName));
}
- addClassificationAndTraitNames(entityVertex,
classificationName);
+ addToClassificationNames(entityVertex, classificationName);
// add a new AtlasVertex for the struct or trait instance
AtlasVertex classificationVertex =
createClassificationVertex(classification);
@@ -1676,47 +1676,67 @@ public class EntityGraphMapper {
traitNames.remove(classificationName);
- updateClassificationAndTraitNames(entityVertex, traitNames);
+ setClassificationNames(entityVertex, traitNames);
updateModificationMetadata(entityVertex);
for (Map.Entry<AtlasVertex, List<AtlasClassification>> entry :
removedClassifications.entrySet()) {
AtlasEntity entity = updateClassificationText(entry.getKey());
-
List<AtlasClassification> deletedClassificationNames =
entry.getValue();
entityChangeNotifier.onClassificationDeletedFromEntity(entity,
deletedClassificationNames);
}
}
- public AtlasEntity updateClassificationText(AtlasVertex vertex) throws
AtlasBaseException {
- String guid =
GraphHelper.getGuid(vertex);
- AtlasEntity entity =
instanceConverter.getAndCacheEntity(guid);
+ private AtlasEntity updateClassificationText(AtlasVertex vertex) throws
AtlasBaseException {
+ String guid = GraphHelper.getGuid(vertex);
+ AtlasEntity entity = instanceConverter.getAndCacheEntity(guid);
vertex.setProperty(CLASSIFICATION_TEXT_KEY,
fullTextMapperV2.getClassificationTextForEntity(entity));
return entity;
}
- public void setClassificationNames(AtlasVertex vertex) {
- List<String> clsNamesList = getTraitNames(vertex, false);
- List<String> propClsNamesList = getTraitNames(vertex, true);
- String clsNames = StringUtils.join(clsNamesList,
CLASSIFICATION_NAME_DELIMITER);
- String propClsNames = StringUtils.join(propClsNamesList,
CLASSIFICATION_NAME_DELIMITER);
+ public void updateClassificationTextAndNames(AtlasVertex vertex) throws
AtlasBaseException {
+ String guid = GraphHelper.getGuid(vertex);
+ AtlasEntity entity = instanceConverter.getAndCacheEntity(guid);
+
+ if (CollectionUtils.isEmpty(entity.getClassifications())) return;
+
+ List<String> classificationNames = new ArrayList<>();
+ List<String> propagatedClassificationNames = new ArrayList<>();
+
+ for (AtlasClassification classification : entity.getClassifications())
{
+ if (isPropagatedClassification(classification, guid)) {
+
propagatedClassificationNames.add(classification.getTypeName());
+ } else {
+ classificationNames.add(classification.getTypeName());
+ }
+ }
- vertex.setProperty(CLASSIFICATION_NAMES_KEY, clsNames);
- vertex.setProperty(PROPAGATED_CLASSIFICATION_NAMES_KEY, propClsNames);
+ vertex.setProperty(CLASSIFICATION_NAMES_KEY,
getDelimitedClassificationNames(classificationNames));
+ vertex.setProperty(PROPAGATED_CLASSIFICATION_NAMES_KEY,
getDelimitedClassificationNames(propagatedClassificationNames));
+ vertex.setProperty(CLASSIFICATION_TEXT_KEY,
fullTextMapperV2.getClassificationTextForEntity(entity));
}
- private void addClassificationAndTraitNames(AtlasVertex entityVertex,
String classificationName) {
+ private boolean isPropagatedClassification(AtlasClassification
classification, String guid) {
+ String classificationEntityGuid = classification.getEntityGuid();
+ return StringUtils.isNotEmpty(classificationEntityGuid) &&
!StringUtils.equals(classificationEntityGuid, guid);
+ }
+
+ private void addToClassificationNames(AtlasVertex entityVertex, String
classificationName) {
AtlasGraphUtilsV2.addEncodedProperty(entityVertex,
TRAIT_NAMES_PROPERTY_KEY, classificationName);
String clsNames = entityVertex.getProperty(CLASSIFICATION_NAMES_KEY,
String.class);
- clsNames = StringUtils.isEmpty(clsNames) ? classificationName :
clsNames + CLASSIFICATION_NAME_DELIMITER + classificationName;
+
+ clsNames = StringUtils.isEmpty(clsNames) ?
CLASSIFICATION_NAME_DELIMITER + classificationName : clsNames +
classificationName;
+
+ clsNames = clsNames + CLASSIFICATION_NAME_DELIMITER;
+
entityVertex.setProperty(CLASSIFICATION_NAMES_KEY, clsNames);
}
- private void updateClassificationAndTraitNames(AtlasVertex entityVertex,
List<String> traitNames) {
+ private void setClassificationNames(AtlasVertex entityVertex, List<String>
traitNames) {
if (entityVertex != null) {
entityVertex.removeProperty(TRAIT_NAMES_PROPERTY_KEY);
entityVertex.removeProperty(CLASSIFICATION_NAMES_KEY);
@@ -1725,7 +1745,11 @@ public class EntityGraphMapper {
AtlasGraphUtilsV2.addEncodedProperty(entityVertex,
TRAIT_NAMES_PROPERTY_KEY, traitName);
}
- entityVertex.setProperty(CLASSIFICATION_NAMES_KEY,
StringUtils.join(traitNames, CLASSIFICATION_NAME_DELIMITER));
+ String clsNames = StringUtils.join(traitNames,
CLASSIFICATION_NAME_DELIMITER);
+
+ clsNames = StringUtils.isEmpty(clsNames) ? clsNames :
CLASSIFICATION_NAME_DELIMITER + clsNames + CLASSIFICATION_NAME_DELIMITER;
+
+ entityVertex.setProperty(CLASSIFICATION_NAMES_KEY, clsNames);
}
}
diff --git
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityStateChecker.java
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityStateChecker.java
index eb594f2..2718a06 100644
---
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityStateChecker.java
+++
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityStateChecker.java
@@ -34,6 +34,7 @@ import org.apache.atlas.type.AtlasClassificationType;
import org.apache.atlas.type.AtlasEntityType;
import org.apache.atlas.type.AtlasTypeRegistry;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@@ -48,6 +49,7 @@ import java.util.List;
import java.util.Map;
import static
org.apache.atlas.repository.Constants.CLASSIFICATION_EDGE_IS_PROPAGATED_PROPERTY_KEY;
+import static
org.apache.atlas.repository.graph.GraphHelper.getDelimitedClassificationNames;
@Component
public final class EntityStateChecker {
@@ -266,10 +268,13 @@ public final class EntityStateChecker {
}
entityVertex.removeProperty(Constants.TRAIT_NAMES_PROPERTY_KEY);
+
entityVertex.removeProperty(Constants.CLASSIFICATION_NAMES_KEY);
for (String classificationName : traitVertexNames) {
AtlasGraphUtilsV2.addEncodedProperty(entityVertex,
Constants.TRAIT_NAMES_PROPERTY_KEY, classificationName);
}
+
+
entityVertex.setProperty(Constants.CLASSIFICATION_NAMES_KEY,
getDelimitedClassificationNames(traitVertexNames));
}
if (propagatedTraitNamesToAdd != null ||
propagatedTraitNamesToRemove != null) {
@@ -282,10 +287,13 @@ public final class EntityStateChecker {
}
entityVertex.removeProperty(Constants.PROPAGATED_TRAIT_NAMES_PROPERTY_KEY);
+
entityVertex.removeProperty(Constants.PROPAGATED_CLASSIFICATION_NAMES_KEY);
for (String classificationName :
propagatedTraitVertexNames) {
AtlasGraphUtilsV2.addEncodedProperty(entityVertex,
Constants.PROPAGATED_TRAIT_NAMES_PROPERTY_KEY, classificationName);
}
+
+
entityVertex.setProperty(Constants.PROPAGATED_CLASSIFICATION_NAMES_KEY,getDelimitedClassificationNames(propagatedTraitVertexNames));
}
AtlasGraphUtilsV2.setEncodedProperty(entityVertex,
Constants.MODIFICATION_TIMESTAMP_PROPERTY_KEY,
RequestContext.get().getRequestTime());
diff --git
a/webapp/src/test/java/org/apache/atlas/web/adapters/TestEntityREST.java
b/webapp/src/test/java/org/apache/atlas/web/adapters/TestEntityREST.java
index cc87959..b747124 100644
--- a/webapp/src/test/java/org/apache/atlas/web/adapters/TestEntityREST.java
+++ b/webapp/src/test/java/org/apache/atlas/web/adapters/TestEntityREST.java
@@ -131,11 +131,12 @@ public class TestEntityREST {
Assert.assertEquals(retrievedClassification, testClassification);
// For ATLAS-3327 to test internal properties are added properly.
- AtlasVertex vertex = AtlasGraphUtilsV2.findByGuid(dbEntity.getGuid());
+ AtlasVertex vertex =
AtlasGraphUtilsV2.findByGuid(dbEntity.getGuid());
+ String expectedClsName = Constants.CLASSIFICATION_NAME_DELIMITER +
TestUtilsV2.CLASSIFICATION + Constants.CLASSIFICATION_NAME_DELIMITER ;
String classificationNames =
vertex.getProperty(Constants.CLASSIFICATION_NAMES_KEY, String.class);
Assert.assertNotNull(classificationNames);
- Assert.assertEquals(classificationNames, TestUtilsV2.CLASSIFICATION);
+ Assert.assertEquals(classificationNames, expectedClsName);
}
@Test(dependsOnMethods = "testGetEntityById")
@@ -167,8 +168,9 @@ public class TestEntityREST {
}
// For ATLAS-3327 to test internal properties are added properly.
- String expectedClsNames = TestUtilsV2.CLASSIFICATION + "|" +
TestUtilsV2.PHI;
- AtlasVertex vertex = AtlasGraphUtilsV2.findByGuid(dbEntity.getGuid());
+ String expectedClsNames = Constants.CLASSIFICATION_NAME_DELIMITER +
TestUtilsV2.CLASSIFICATION +
+ Constants.CLASSIFICATION_NAME_DELIMITER +
TestUtilsV2.PHI + Constants.CLASSIFICATION_NAME_DELIMITER;
+ AtlasVertex vertex =
AtlasGraphUtilsV2.findByGuid(dbEntity.getGuid());
String classificationNames =
vertex.getProperty(Constants.CLASSIFICATION_NAMES_KEY, String.class);
Assert.assertNotNull(classificationNames);
@@ -204,8 +206,8 @@ public class TestEntityREST {
deleteClassification(dbEntity.getGuid(), TestUtilsV2.PHI);
- expectedClsNames = TestUtilsV2.CLASSIFICATION;
- vertex = AtlasGraphUtilsV2.findByGuid(dbEntity.getGuid());
+ expectedClsNames = Constants.CLASSIFICATION_NAME_DELIMITER +
TestUtilsV2.CLASSIFICATION + Constants.CLASSIFICATION_NAME_DELIMITER;
+ vertex = AtlasGraphUtilsV2.findByGuid(dbEntity.getGuid());
classificationNames =
vertex.getProperty(Constants.CLASSIFICATION_NAMES_KEY, String.class);
Assert.assertNotNull(classificationNames);
@@ -257,7 +259,7 @@ public class TestEntityREST {
Assert.assertEquals(classifications, retrievedClassificationsList);
- String expectedClsNames = TestUtilsV2.CLASSIFICATION;
+ String expectedClsNames = Constants.CLASSIFICATION_NAME_DELIMITER +
TestUtilsV2.CLASSIFICATION + Constants.CLASSIFICATION_NAME_DELIMITER;
AtlasVertex vertex =
AtlasGraphUtilsV2.findByGuid(dbEntity.getGuid());
String classificationNames =
vertex.getProperty(Constants.CLASSIFICATION_NAMES_KEY, String.class);