You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by gr...@apache.org on 2018/11/01 12:02:10 UTC

atlas git commit: ATLAS-2936: Ability to store provenance type

Repository: atlas
Updated Branches:
  refs/heads/master 75947444b -> 7e4788ed0


ATLAS-2936: Ability to store provenance type


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

Branch: refs/heads/master
Commit: 7e4788ed00c6a0ef4e8c89f0486b8073a56409e4
Parents: 7594744
Author: grahamwallis <gr...@uk.ibm.com>
Authored: Thu Nov 1 11:17:45 2018 +0000
Committer: grahamwallis <gr...@uk.ibm.com>
Committed: Thu Nov 1 11:17:45 2018 +0000

----------------------------------------------------------------------
 .../org/apache/atlas/repository/Constants.java  |   8 ++
 .../atlas/model/instance/AtlasEntity.java       |  75 ++++++++------
 .../atlas/model/instance/AtlasRelationship.java | 100 +++++++++++--------
 .../atlas/repository/graph/GraphHelper.java     |   4 +
 .../graph/v2/AtlasRelationshipStoreV2.java      |   4 +
 .../store/graph/v2/EntityGraphMapper.java       |   4 +
 .../store/graph/v2/EntityGraphRetriever.java    |  11 +-
 7 files changed, 134 insertions(+), 72 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/7e4788ed/common/src/main/java/org/apache/atlas/repository/Constants.java
----------------------------------------------------------------------
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 ed2ca4c..1cfe940 100644
--- a/common/src/main/java/org/apache/atlas/repository/Constants.java
+++ b/common/src/main/java/org/apache/atlas/repository/Constants.java
@@ -103,6 +103,14 @@ public final class Constants {
      */
     public static final String IS_PROXY_KEY           = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "isProxy");
 
+    /**
+     * The provenanceType field is used to record the provenance of an instance of an entity or relationship - this
+     * indicates how the instance was created. This corresponds to the InstanceProvenanceType enum defined in ODPi.
+     * To avoid creating a hard dependency on the ODPi class, the value is stored as an int corresponding to the
+     * ordinal in the ODPi enum.
+     */
+    public static final String PROVENANCE_TYPE_KEY    = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "provenanceType");
+
     public static final String TIMESTAMP_PROPERTY_KEY = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "timestamp");
 
     public static final String MODIFICATION_TIMESTAMP_PROPERTY_KEY = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "modificationTimestamp");

http://git-wip-us.apache.org/repos/asf/atlas/blob/7e4788ed/intg/src/main/java/org/apache/atlas/model/instance/AtlasEntity.java
----------------------------------------------------------------------
diff --git a/intg/src/main/java/org/apache/atlas/model/instance/AtlasEntity.java b/intg/src/main/java/org/apache/atlas/model/instance/AtlasEntity.java
index 066b0d0..18018d7 100644
--- a/intg/src/main/java/org/apache/atlas/model/instance/AtlasEntity.java
+++ b/intg/src/main/java/org/apache/atlas/model/instance/AtlasEntity.java
@@ -59,30 +59,32 @@ import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_
 public class AtlasEntity extends AtlasStruct implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    public static final String KEY_GUID        = "guid";
-    public static final String KEY_HOME_ID     = "homeId";
-    public static final String KEY_IS_PROXY    = "isProxy";
-    public static final String KEY_STATUS      = "status";
-    public static final String KEY_CREATED_BY  = "createdBy";
-    public static final String KEY_UPDATED_BY  = "updatedBy";
-    public static final String KEY_CREATE_TIME = "createTime";
-    public static final String KEY_UPDATE_TIME = "updateTime";
-    public static final String KEY_VERSION     = "version";
+    public static final String KEY_GUID               = "guid";
+    public static final String KEY_HOME_ID            = "homeId";
+    public static final String KEY_IS_PROXY           = "isProxy";
+    public static final String KEY_PROVENANCE_TYPE    = "provenanceType";
+    public static final String KEY_STATUS             = "status";
+    public static final String KEY_CREATED_BY         = "createdBy";
+    public static final String KEY_UPDATED_BY         = "updatedBy";
+    public static final String KEY_CREATE_TIME        = "createTime";
+    public static final String KEY_UPDATE_TIME        = "updateTime";
+    public static final String KEY_VERSION            = "version";
 
     /**
      * Status of the entity - can be active or deleted. Deleted entities are not removed from Atlas store.
      */
     public enum Status { ACTIVE, DELETED }
 
-    private String  guid       = null;
-    private String  homeId     = null;
-    private Boolean isProxy    = Boolean.FALSE;
-    private Status  status     = Status.ACTIVE;
-    private String  createdBy  = null;
-    private String  updatedBy  = null;
-    private Date    createTime = null;
-    private Date    updateTime = null;
-    private Long    version    = 0L;
+    private String  guid           = null;
+    private String  homeId         = null;
+    private Boolean isProxy        = Boolean.FALSE;
+    private Integer provenanceType = 0;
+    private Status  status         = Status.ACTIVE;
+    private String  createdBy      = null;
+    private String  updatedBy      = null;
+    private Date    createTime     = null;
+    private Date    updateTime     = null;
+    private Long    version        = 0L;
 
     private Map<String, Object>             relationshipAttributes;
     private List<AtlasClassification>       classifications;
@@ -119,15 +121,16 @@ public class AtlasEntity extends AtlasStruct implements Serializable {
         super(map);
 
         if (map != null) {
-            Object oGuid      = map.get(KEY_GUID);
-            Object homeId     = map.get(KEY_HOME_ID);
-            Object isProxy    = map.get(KEY_IS_PROXY);
-            Object status     = map.get(KEY_STATUS);
-            Object createdBy  = map.get(KEY_CREATED_BY);
-            Object updatedBy  = map.get(KEY_UPDATED_BY);
-            Object createTime = map.get(KEY_CREATE_TIME);
-            Object updateTime = map.get(KEY_UPDATE_TIME);
-            Object version    = map.get(KEY_VERSION);
+            Object oGuid             = map.get(KEY_GUID);
+            Object homeId            = map.get(KEY_HOME_ID);
+            Object isProxy           = map.get(KEY_IS_PROXY);
+            Object provenanceType    = map.get(KEY_PROVENANCE_TYPE);
+            Object status            = map.get(KEY_STATUS);
+            Object createdBy         = map.get(KEY_CREATED_BY);
+            Object updatedBy         = map.get(KEY_UPDATED_BY);
+            Object createTime        = map.get(KEY_CREATE_TIME);
+            Object updateTime        = map.get(KEY_UPDATE_TIME);
+            Object version           = map.get(KEY_VERSION);
 
             if (oGuid != null) {
                 setGuid(oGuid.toString());
@@ -144,6 +147,10 @@ public class AtlasEntity extends AtlasStruct implements Serializable {
                 setIsProxy(Boolean.FALSE);
             }
 
+            if (provenanceType instanceof Number) {
+                setProvenanceType(((Number) version).intValue());
+            }
+
             if (status != null) {
                 setStatus(Status.valueOf(status.toString()));
             }
@@ -177,6 +184,7 @@ public class AtlasEntity extends AtlasStruct implements Serializable {
             setGuid(other.getGuid());
             setHomeId(other.getHomeId());
             setIsProxy(other.isProxy());
+            setProvenanceType(other.getProvenanceType());
             setStatus(other.getStatus());
             setCreatedBy(other.getCreatedBy());
             setUpdatedBy(other.getUpdatedBy());
@@ -211,6 +219,14 @@ public class AtlasEntity extends AtlasStruct implements Serializable {
         this.isProxy = isProxy;
     }
 
+    public Integer getProvenanceType() {
+        return provenanceType;
+    }
+
+    public void setProvenanceType(Integer provenanceType) {
+        this.provenanceType = provenanceType;
+    }
+
     public Status getStatus() {
         return status;
     }
@@ -328,6 +344,7 @@ public class AtlasEntity extends AtlasStruct implements Serializable {
         setGuid(nextInternalId());
         setHomeId(null);
         setIsProxy(Boolean.FALSE);
+        setProvenanceType(0);
         setStatus(null);
         setCreatedBy(null);
         setUpdatedBy(null);
@@ -352,6 +369,7 @@ public class AtlasEntity extends AtlasStruct implements Serializable {
         sb.append("guid='").append(guid).append('\'');
         sb.append(", homeId='").append(homeId).append('\'');
         sb.append(", isProxy='").append(isProxy).append('\'');
+        sb.append(", provenanceType=").append(provenanceType);
         sb.append(", status=").append(status);
         sb.append(", createdBy='").append(createdBy).append('\'');
         sb.append(", updatedBy='").append(updatedBy).append('\'');
@@ -382,6 +400,7 @@ public class AtlasEntity extends AtlasStruct implements Serializable {
         return Objects.equals(guid, that.guid) &&
                 Objects.equals(homeId, that.homeId) &&
                 Objects.equals(isProxy, that.isProxy) &&
+                Objects.equals(provenanceType, that.provenanceType) &&
                 status == that.status &&
                 Objects.equals(createdBy, that.createdBy) &&
                 Objects.equals(updatedBy, that.updatedBy) &&
@@ -394,7 +413,7 @@ public class AtlasEntity extends AtlasStruct implements Serializable {
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), guid, homeId, isProxy, status, createdBy, updatedBy, createTime, updateTime, version,
+        return Objects.hash(super.hashCode(), guid, homeId, isProxy, provenanceType, status, createdBy, updatedBy, createTime, updateTime, version,
                             relationshipAttributes, classifications);
     }
 

http://git-wip-us.apache.org/repos/asf/atlas/blob/7e4788ed/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 bc79dad..8681cfd 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
@@ -54,34 +54,36 @@ import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_
 public class AtlasRelationship extends AtlasStruct implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    public static final String KEY_GUID           = "guid";
-    public static final String KEY_HOME_ID        = "homeId";
-    public static final String KEY_STATUS         = "status";
-    public static final String KEY_CREATED_BY     = "createdBy";
-    public static final String KEY_UPDATED_BY     = "updatedBy";
-    public static final String KEY_CREATE_TIME    = "createTime";
-    public static final String KEY_UPDATE_TIME    = "updateTime";
-    public static final String KEY_VERSION        = "version";
-    public static final String KEY_END1           = "end1";
-    public static final String KEY_END2           = "end2";
-    public static final String KEY_LABEL          = "label";
-    public static final String KEY_PROPAGATE_TAGS = "propagateTags";
+    public static final String KEY_GUID             = "guid";
+    public static final String KEY_HOME_ID          = "homeId";
+    public static final String KEY_PROVENANCE_TYPE = "provenanceType";
+    public static final String KEY_STATUS           = "status";
+    public static final String KEY_CREATED_BY       = "createdBy";
+    public static final String KEY_UPDATED_BY       = "updatedBy";
+    public static final String KEY_CREATE_TIME      = "createTime";
+    public static final String KEY_UPDATE_TIME      = "updateTime";
+    public static final String KEY_VERSION          = "version";
+    public static final String KEY_END1             = "end1";
+    public static final String KEY_END2             = "end2";
+    public static final String KEY_LABEL            = "label";
+    public static final String KEY_PROPAGATE_TAGS   = "propagateTags";
 
     public static final String KEY_BLOCKED_PROPAGATED_CLASSIFICATIONS = "blockedPropagatedClassifications";
     public static final String KEY_PROPAGATED_CLASSIFICATIONS         = "propagatedClassifications";
 
-    private String        guid          = null;
-    private String        homeId        = null;
-    private AtlasObjectId end1          = null;
-    private AtlasObjectId end2          = null;
-    private String        label         = null;
-    private PropagateTags propagateTags = PropagateTags.NONE;
-    private Status        status        = Status.ACTIVE;
-    private String        createdBy     = null;
-    private String        updatedBy     = null;
-    private Date          createTime    = null;
-    private Date          updateTime    = null;
-    private Long          version       = 0L;
+    private String        guid           = null;
+    private String        homeId         = null;
+    private Integer       provenanceType = null;
+    private AtlasObjectId end1           = null;
+    private AtlasObjectId end2           = null;
+    private String        label          = null;
+    private PropagateTags propagateTags  = PropagateTags.NONE;
+    private Status        status         = Status.ACTIVE;
+    private String        createdBy      = null;
+    private String        updatedBy      = null;
+    private Date          createTime     = null;
+    private Date          updateTime     = null;
+    private Long          version        = 0L;
 
     public enum Status { ACTIVE, DELETED }
 
@@ -110,13 +112,13 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
     public AtlasRelationship(String typeName, AtlasObjectId end1, AtlasObjectId end2) {
         super(typeName);
 
-        init(nextInternalId(), null, end1, end2, null, null, null, null, null, null, null, 0L, null, null);
+        init(nextInternalId(), null, 0, end1, end2, null, null, null, null, null, null, null, 0L, null, null);
     }
 
     public AtlasRelationship(String typeName, AtlasObjectId end1, AtlasObjectId end2, Map<String, Object> attributes) {
         super(typeName, attributes);
 
-        init(nextInternalId(), null, end1, end2, null, null, null, null, null, null, null, 0L, null, null);
+        init(nextInternalId(), null, 0, end1, end2, null, null, null, null, null, null, null, 0L, null, null);
     }
 
     public AtlasRelationship(String typeName, String attrName, Object attrValue) {
@@ -133,18 +135,19 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
         super(map);
 
         if (map != null) {
-            Object oGuid         = map.get(KEY_GUID);
-            Object homeId        = map.get(KEY_HOME_ID);
-            Object oEnd1         = map.get(KEY_END1);
-            Object oEnd2         = map.get(KEY_END2);
-            Object label         = map.get(KEY_LABEL);
-            Object propagateTags = map.get(KEY_PROPAGATE_TAGS);
-            Object status        = map.get(KEY_STATUS);
-            Object createdBy     = map.get(KEY_CREATED_BY);
-            Object updatedBy     = map.get(KEY_UPDATED_BY);
-            Object createTime    = map.get(KEY_CREATE_TIME);
-            Object updateTime    = map.get(KEY_UPDATE_TIME);
-            Object version       = map.get(KEY_VERSION);
+            Object oGuid          = map.get(KEY_GUID);
+            Object homeId         = map.get(KEY_HOME_ID);
+            Object provenanceType = map.get(KEY_PROVENANCE_TYPE);
+            Object oEnd1          = map.get(KEY_END1);
+            Object oEnd2          = map.get(KEY_END2);
+            Object label          = map.get(KEY_LABEL);
+            Object propagateTags  = map.get(KEY_PROPAGATE_TAGS);
+            Object status         = map.get(KEY_STATUS);
+            Object createdBy      = map.get(KEY_CREATED_BY);
+            Object updatedBy      = map.get(KEY_UPDATED_BY);
+            Object createTime     = map.get(KEY_CREATE_TIME);
+            Object updateTime     = map.get(KEY_UPDATE_TIME);
+            Object version        = map.get(KEY_VERSION);
 
             Object propagatedClassifications        = map.get(KEY_PROPAGATED_CLASSIFICATIONS);
             Object blockedPropagatedClassifications = map.get(KEY_BLOCKED_PROPAGATED_CLASSIFICATIONS);
@@ -157,6 +160,10 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
                 setHomeId(homeId.toString());
             }
 
+            if (provenanceType instanceof Number) {
+                setProvenanceType(((Number) provenanceType).intValue());
+            }
+
             if (oEnd1 != null) {
                 if (oEnd1 instanceof AtlasObjectId) {
                     setEnd1((AtlasObjectId) oEnd1);
@@ -235,7 +242,7 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
         super(other);
 
         if (other != null) {
-            init(other.guid, other.homeId, other.end1, other.end2, other.label, other.propagateTags, other.status, other.createdBy, other.updatedBy,
+            init(other.guid, other.homeId, other.provenanceType, other.end1, other.end2, other.label, other.propagateTags, other.status, other.createdBy, other.updatedBy,
                  other.createTime, other.updateTime, other.version, other.propagatedClassifications, other.blockedPropagatedClassifications);
         }
     }
@@ -256,6 +263,12 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
         this.homeId = homeId;
     }
 
+    public Integer getProvenanceType() {
+        return provenanceType;
+    }
+
+    public void setProvenanceType(Integer provenanceType) { this.provenanceType = provenanceType; }
+
     public Status getStatus() {
         return status;
     }
@@ -341,14 +354,15 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
     }
 
     private void init() {
-        init(nextInternalId(), null, null, null, null, null, null,  null, null, null, null, 0L, null, null);
+        init(nextInternalId(), null, 0 ,null, null, null, null, null,  null, null, null, null, 0L, null, null);
     }
 
-    private void init(String guid, String homeId, AtlasObjectId end1, AtlasObjectId end2, String label, PropagateTags propagateTags,
+    private void init(String guid, String homeId, Integer provenanceType, AtlasObjectId end1, AtlasObjectId end2, String label, PropagateTags propagateTags,
                       Status status, String createdBy, String updatedBy, Date createTime, Date updateTime, Long version,
                       Set<AtlasClassification> propagatedClassifications, Set<AtlasClassification> blockedPropagatedClassifications) {
         setGuid(guid);
         setHomeId(homeId);
+        setProvenanceType(provenanceType);
         setEnd1(end1);
         setEnd2(end2);
         setLabel(label);
@@ -373,6 +387,7 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
         super.toString(sb);
         sb.append("guid='").append(guid).append('\'');
         sb.append(", homeId='").append(homeId).append('\'');
+        sb.append(", provenanceType=").append(provenanceType);
         sb.append(", end1=").append(end1);
         sb.append(", end2=").append(end2);
         sb.append(", label='").append(label).append('\'');
@@ -403,6 +418,7 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
         AtlasRelationship that = (AtlasRelationship) o;
         return Objects.equals(guid, that.guid) &&
                 Objects.equals(homeId, that.homeId) &&
+                Objects.equals(provenanceType, that.provenanceType) &&
                 Objects.equals(end1, that.end1) &&
                 Objects.equals(end2, that.end2) &&
                 Objects.equals(label, that.label) &&
@@ -419,7 +435,7 @@ public class AtlasRelationship extends AtlasStruct implements Serializable {
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), guid, homeId, end1, end2, label, propagateTags, status, createdBy, updatedBy,
+        return Objects.hash(super.hashCode(), guid, homeId, provenanceType, end1, end2, label, propagateTags, status, createdBy, updatedBy,
                             createTime, updateTime, version, propagatedClassifications, blockedPropagatedClassifications);
     }
 

http://git-wip-us.apache.org/repos/asf/atlas/blob/7e4788ed/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java
----------------------------------------------------------------------
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 b4189d2..45bf8dc 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
@@ -1086,6 +1086,10 @@ public final class GraphHelper {
         return element.getProperty(Constants.IS_PROXY_KEY, Boolean.class);
     }
 
+    public static Integer getProvenanceType(AtlasElement element) {
+        return element.getProperty(Constants.PROVENANCE_TYPE_KEY, Integer.class);
+    }
+
     public static String getTypeName(AtlasElement element) {
         return element.getProperty(ENTITY_TYPE_PROPERTY_KEY, String.class);
     }

http://git-wip-us.apache.org/repos/asf/atlas/blob/7e4788ed/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasRelationshipStoreV2.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasRelationshipStoreV2.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasRelationshipStoreV2.java
index 512fff4..21617dc 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasRelationshipStoreV2.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasRelationshipStoreV2.java
@@ -74,6 +74,9 @@ import static org.apache.atlas.repository.Constants.ENTITY_TYPE_PROPERTY_KEY;
 import static org.apache.atlas.repository.Constants.RELATIONSHIPTYPE_TAG_PROPAGATION_KEY;
 import static org.apache.atlas.repository.Constants.RELATIONSHIP_GUID_PROPERTY_KEY;
 import static org.apache.atlas.repository.Constants.VERSION_PROPERTY_KEY;
+import static org.apache.atlas.repository.Constants.PROVENANCE_TYPE_KEY;
+
+
 import static org.apache.atlas.repository.graph.GraphHelper.getBlockedClassificationIds;
 import static org.apache.atlas.repository.graph.GraphHelper.getClassificationEntityGuid;
 import static org.apache.atlas.repository.graph.GraphHelper.getClassificationName;
@@ -748,6 +751,7 @@ public class AtlasRelationshipStoreV2 implements AtlasRelationshipStore {
             AtlasGraphUtilsV2.setEncodedProperty(ret, ENTITY_TYPE_PROPERTY_KEY, relationship.getTypeName());
             AtlasGraphUtilsV2.setEncodedProperty(ret, RELATIONSHIP_GUID_PROPERTY_KEY, guid);
             AtlasGraphUtilsV2.setEncodedProperty(ret, VERSION_PROPERTY_KEY, getRelationshipVersion(relationship));
+            AtlasGraphUtilsV2.setEncodedProperty(ret, PROVENANCE_TYPE_KEY, relationship.getProvenanceType());
             AtlasGraphUtilsV2.setEncodedProperty(ret, RELATIONSHIPTYPE_TAG_PROPAGATION_KEY, tagPropagation.name());
 
             // blocked propagated classifications

http://git-wip-us.apache.org/repos/asf/atlas/blob/7e4788ed/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java
----------------------------------------------------------------------
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 c08f4c4..0452954 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
@@ -165,6 +165,10 @@ public class EntityGraphMapper {
         if (entity.isProxy() != null) {
             AtlasGraphUtilsV2.setEncodedProperty(vertex, IS_PROXY_KEY, entity.isProxy());
         }
+
+        if (entity.getProvenanceType() != null) {
+            AtlasGraphUtilsV2.setEncodedProperty(vertex, PROVENANCE_TYPE_KEY, entity.getProvenanceType());
+        }
     }
 
     public EntityMutationResponse mapAttributesAndClassifications(EntityMutationContext context, final boolean isPartialUpdate, final boolean replaceClassifications) throws AtlasBaseException {

http://git-wip-us.apache.org/repos/asf/atlas/blob/7e4788ed/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
----------------------------------------------------------------------
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 cdf69e3..c8a760b 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
@@ -525,6 +525,8 @@ public final class EntityGraphRetriever {
 
         entity.setIsProxy(GraphHelper.isProxy(entityVertex));
 
+        entity.setProvenanceType(GraphHelper.getProvenanceType(entityVertex));
+
         return entity;
     }
 
@@ -1166,12 +1168,17 @@ public final class EntityGraphRetriever {
         relationship.setUpdateTime(new Date(GraphHelper.getModifiedTime(edge)));
 
         Long version = GraphHelper.getVersion(edge);
-
         if (version == null) {
             version = Long.valueOf(1L);
         }
-
         relationship.setVersion(version);
+
+        Integer provenanceType = GraphHelper.getProvenanceType(edge);
+        if (provenanceType == null) {
+            provenanceType = Integer.valueOf(0);
+        }
+        relationship.setProvenanceType(provenanceType);
+
         relationship.setStatus(GraphHelper.getEdgeStatus(edge));
 
         AtlasVertex end1Vertex = edge.getOutVertex();