http://git-wip-us.apache.org/repos/asf/atlas/blob/4823c8ed/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStream.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStream.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStream.java
deleted file mode 100644
index d6d6272..0000000
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStream.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.atlas.repository.store.graph.v1;
-
-import org.apache.atlas.model.instance.AtlasEntity;
-import org.apache.atlas.model.instance.AtlasEntity.AtlasEntitiesWithExtInfo;
-import org.apache.atlas.model.instance.AtlasEntity.AtlasEntityWithExtInfo;
-
-import java.util.Iterator;
-
-public class AtlasEntityStream implements EntityStream {
-    protected final AtlasEntitiesWithExtInfo entitiesWithExtInfo;
-    protected final EntityStream             entityStream;
-    private         Iterator<AtlasEntity>    iterator;
-
-
-    public AtlasEntityStream(AtlasEntity entity) {
-        this(new AtlasEntitiesWithExtInfo(entity));
-    }
-
-    public AtlasEntityStream(AtlasEntityWithExtInfo entityWithExtInfo) {
-        this(new AtlasEntitiesWithExtInfo(entityWithExtInfo));
-    }
-
-    public AtlasEntityStream(AtlasEntitiesWithExtInfo entitiesWithExtInfo) {
-        this.entitiesWithExtInfo = entitiesWithExtInfo;
-        this.iterator            = 
this.entitiesWithExtInfo.getEntities().iterator();
-        this.entityStream        = null;
-    }
-
-    public AtlasEntityStream(AtlasEntity entity, EntityStream entityStream) {
-        this.entitiesWithExtInfo = new AtlasEntitiesWithExtInfo(entity);
-        this.iterator            = 
this.entitiesWithExtInfo.getEntities().iterator();
-        this.entityStream        = entityStream;
-    }
-
-    public AtlasEntityStream(AtlasEntityWithExtInfo entityWithExtInfo, 
EntityStream entityStream) {
-        this.entitiesWithExtInfo = new 
AtlasEntitiesWithExtInfo(entityWithExtInfo);
-        this.iterator            = 
this.entitiesWithExtInfo.getEntities().iterator();
-        this.entityStream        = entityStream;
-    }
-
-    @Override
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    @Override
-    public AtlasEntity next() {
-        return iterator.hasNext() ? iterator.next() : null;
-    }
-
-    @Override
-    public void reset() {
-        this.iterator = entitiesWithExtInfo.getEntities().iterator();
-    }
-
-    @Override
-    public AtlasEntity getByGuid(String guid) {
-        return entityStream != null ?  entityStream.getByGuid(guid) : 
entitiesWithExtInfo.getEntity(guid);
-    }
-
-    @Override
-    public String toString() {
-        StringBuffer sb = new StringBuffer("AtlasEntityStream{");
-
-        sb.append("entitiesWithExtInfo=").append(entitiesWithExtInfo);
-        sb.append(", iterator=").append(iterator);
-        sb.append('}');
-
-        return sb.toString();
-    }
-}

http://git-wip-us.apache.org/repos/asf/atlas/blob/4823c8ed/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStreamForImport.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStreamForImport.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStreamForImport.java
deleted file mode 100644
index 90ae15d..0000000
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStreamForImport.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.atlas.repository.store.graph.v1;
-
-import org.apache.atlas.model.instance.AtlasEntity;
-import org.apache.atlas.model.instance.AtlasEntity.AtlasEntityWithExtInfo;
-
-public class AtlasEntityStreamForImport extends AtlasEntityStream implements 
EntityImportStream {
-    private int currentPosition = 0;
-
-    public AtlasEntityStreamForImport(AtlasEntityWithExtInfo 
entityWithExtInfo, EntityStream entityStream) {
-        super(entityWithExtInfo, entityStream);
-    }
-
-    @Override
-    public AtlasEntityWithExtInfo getNextEntityWithExtInfo() {
-        currentPosition++;
-        AtlasEntity entity = next();
-
-        return entity != null ? new AtlasEntityWithExtInfo(entity, 
super.entitiesWithExtInfo) : null;
-    }
-
-    @Override
-    public AtlasEntity getByGuid(String guid) {
-        AtlasEntity ent = super.entitiesWithExtInfo.getEntity(guid);
-
-        if(ent == null && entityStream != null) {
-            return entityStream.getByGuid(guid);
-        }
-
-        return ent;
-    }
-
-    @Override
-    public int size() {
-        return 1;
-    }
-
-    @Override
-    public void setPosition(int position) {
-        // not applicable for a single entity stream
-    }
-
-    @Override
-    public int getPosition() {
-        return currentPosition;
-    }
-
-    @Override
-    public void setPositionUsingEntityGuid(String guid) {
-    }
-
-    @Override
-    public void onImportComplete(String guid) {
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/atlas/blob/4823c8ed/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEnumDefStoreV1.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEnumDefStoreV1.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEnumDefStoreV1.java
deleted file mode 100644
index dcb36dd..0000000
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEnumDefStoreV1.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.atlas.repository.store.graph.v1;
-
-import org.apache.atlas.AtlasErrorCode;
-import org.apache.atlas.exception.AtlasBaseException;
-import org.apache.atlas.model.typedef.AtlasEnumDef;
-import org.apache.atlas.model.typedef.AtlasEnumDef.AtlasEnumElementDef;
-import org.apache.atlas.repository.Constants;
-import org.apache.atlas.repository.graphdb.AtlasVertex;
-import org.apache.atlas.type.AtlasTypeRegistry;
-import org.apache.atlas.typesystem.types.DataTypes.TypeCategory;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.atlas.authorize.AtlasPrivilege;
-import org.apache.atlas.authorize.AtlasTypeAccessRequest;
-import org.apache.atlas.authorize.AtlasAuthorizationUtils;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * EnumDef store in v1 format.
- */
-class AtlasEnumDefStoreV1 extends AtlasAbstractDefStoreV1<AtlasEnumDef> {
-    private static final Logger LOG = 
LoggerFactory.getLogger(AtlasEnumDefStoreV1.class);
-
-    public AtlasEnumDefStoreV1(AtlasTypeDefGraphStoreV1 typeDefStore, 
AtlasTypeRegistry typeRegistry) {
-        super(typeDefStore, typeRegistry);
-    }
-
-    @Override
-    public AtlasVertex preCreate(AtlasEnumDef enumDef) throws 
AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-          LOG.debug("==> AtlasEnumDefStoreV1.preCreate({})", enumDef);
-        }
-
-        validateType(enumDef);
-
-        AtlasVertex vertex = 
typeDefStore.findTypeVertexByName(enumDef.getName());
-
-        if (vertex != null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_ALREADY_EXISTS, 
enumDef.getName());
-        }
-
-        vertex = typeDefStore.createTypeVertex(enumDef);
-
-        toVertex(enumDef, vertex);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasEnumDefStoreV1.preCreate({}): {}", enumDef, 
vertex);
-        }
-
-        return vertex;
-    }
-
-    @Override
-    public AtlasEnumDef create(AtlasEnumDef enumDef, AtlasVertex 
preCreateResult) throws AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-          LOG.debug("==> AtlasEnumDefStoreV1.create({}, {})", enumDef, 
preCreateResult);
-        }
-
-        AtlasAuthorizationUtils.verifyAccess(new 
AtlasTypeAccessRequest(AtlasPrivilege.TYPE_CREATE, enumDef), "create enum-def 
", enumDef.getName());
-
-        AtlasVertex vertex = (preCreateResult == null) ? preCreate(enumDef) : 
preCreateResult;
-
-        AtlasEnumDef ret = toEnumDef(vertex);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasEntityDefStoreV1.create({}, {}): {}", enumDef, 
preCreateResult, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public List<AtlasEnumDef> getAll() throws AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasEnumDefStoreV1.getAll()");
-        }
-
-        List<AtlasEnumDef> ret = new ArrayList<>();
-
-        Iterator<AtlasVertex> vertices = 
typeDefStore.findTypeVerticesByCategory(TypeCategory.ENUM);
-        while (vertices.hasNext()) {
-            ret.add(toEnumDef(vertices.next()));
-        }
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasEnumDefStoreV1.getAll(): count={}", 
ret.size());
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasEnumDef getByName(String name) throws AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasEnumDefStoreV1.getByName({})", name);
-        }
-
-        AtlasVertex vertex = 
typeDefStore.findTypeVertexByNameAndCategory(name, TypeCategory.ENUM);
-
-        if (vertex == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_NOT_FOUND, 
name);
-        }
-
-        vertex.getProperty(Constants.TYPE_CATEGORY_PROPERTY_KEY, 
TypeCategory.class);
-
-        AtlasEnumDef ret = toEnumDef(vertex);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasEnumDefStoreV1.getByName({}): {}", name, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasEnumDef getByGuid(String guid) throws AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasEnumDefStoreV1.getByGuid({})", guid);
-        }
-
-        AtlasVertex vertex = 
typeDefStore.findTypeVertexByGuidAndCategory(guid, TypeCategory.ENUM);
-
-        if (vertex == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_GUID_NOT_FOUND, 
guid);
-        }
-
-        AtlasEnumDef ret = toEnumDef(vertex);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasEnumDefStoreV1.getByGuid({}): {}", guid, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasEnumDef update(AtlasEnumDef enumDef) throws AtlasBaseException 
{
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasEnumDefStoreV1.update({})", enumDef);
-        }
-
-        validateType(enumDef);
-
-        AtlasEnumDef ret = StringUtils.isNotBlank(enumDef.getGuid()) ? 
updateByGuid(enumDef.getGuid(), enumDef)
-                                                                     : 
updateByName(enumDef.getName(), enumDef);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasEnumDefStoreV1.update({}): {}", enumDef, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasEnumDef updateByName(String name, AtlasEnumDef enumDef) throws 
AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasEnumDefStoreV1.updateByName({}, {})", name, 
enumDef);
-        }
-
-        AtlasEnumDef existingDef = typeRegistry.getEnumDefByName(name);
-
-        AtlasAuthorizationUtils.verifyAccess(new 
AtlasTypeAccessRequest(AtlasPrivilege.TYPE_UPDATE, existingDef), "update 
enum-def ", name);
-
-        validateType(enumDef);
-
-        AtlasVertex vertex = 
typeDefStore.findTypeVertexByNameAndCategory(name, TypeCategory.ENUM);
-
-        if (vertex == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_NOT_FOUND, 
name);
-        }
-
-        typeDefStore.updateTypeVertex(enumDef, vertex);
-
-        toVertex(enumDef, vertex);
-
-        AtlasEnumDef ret = toEnumDef(vertex);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasEnumDefStoreV1.updateByName({}, {}): {}", 
name, enumDef, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasEnumDef updateByGuid(String guid, AtlasEnumDef enumDef) throws 
AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasEnumDefStoreV1.updateByGuid({})", guid);
-        }
-
-        AtlasEnumDef existingDef = typeRegistry.getEnumDefByGuid(guid);
-
-        AtlasAuthorizationUtils.verifyAccess(new 
AtlasTypeAccessRequest(AtlasPrivilege.TYPE_UPDATE, existingDef), "update 
enum-def ", (existingDef != null ? existingDef.getName() : guid));
-
-        validateType(enumDef);
-
-        AtlasVertex vertex = 
typeDefStore.findTypeVertexByGuidAndCategory(guid, TypeCategory.ENUM);
-
-        if (vertex == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_GUID_NOT_FOUND, 
guid);
-        }
-
-        typeDefStore.updateTypeVertex(enumDef, vertex);
-
-        toVertex(enumDef, vertex);
-
-        AtlasEnumDef ret = toEnumDef(vertex);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasEnumDefStoreV1.updateByGuid({}): {}", guid, 
ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasVertex preDeleteByName(String name) throws AtlasBaseException {
-        AtlasVertex vertex = 
typeDefStore.findTypeVertexByNameAndCategory(name, TypeCategory.ENUM);
-
-        if (vertex == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_NOT_FOUND, 
name);
-        }
-
-        AtlasEnumDef existingDef = typeRegistry.getEnumDefByName(name);
-
-        AtlasAuthorizationUtils.verifyAccess(new 
AtlasTypeAccessRequest(AtlasPrivilege.TYPE_DELETE, existingDef), "delete 
enum-def ", (existingDef != null ? existingDef.getName() : name));
-
-        return vertex;
-    }
-
-    @Override
-    public AtlasVertex preDeleteByGuid(String guid) throws AtlasBaseException {
-        AtlasVertex vertex = 
typeDefStore.findTypeVertexByGuidAndCategory(guid, TypeCategory.ENUM);
-
-        if (vertex == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_GUID_NOT_FOUND, 
guid);
-        }
-
-        AtlasEnumDef existingDef = typeRegistry.getEnumDefByGuid(guid);
-
-        AtlasAuthorizationUtils.verifyAccess(new 
AtlasTypeAccessRequest(AtlasPrivilege.TYPE_DELETE, existingDef), "delete 
enum-def ", (existingDef != null ? existingDef.getName() : guid));
-
-        return vertex;
-    }
-
-    private void toVertex(AtlasEnumDef enumDef, AtlasVertex vertex) throws 
AtlasBaseException {
-        if (CollectionUtils.isEmpty(enumDef.getElementDefs())) {
-            throw new 
AtlasBaseException(AtlasErrorCode.MISSING_MANDATORY_ATTRIBUTE, 
enumDef.getName(), "values");
-        }
-
-        List<String> values = new ArrayList<>(enumDef.getElementDefs().size());
-
-        for (AtlasEnumElementDef element : enumDef.getElementDefs()) {
-            // Validate the enum element
-            if (StringUtils.isEmpty(element.getValue()) || null == 
element.getOrdinal()) {
-                throw new 
AtlasBaseException(AtlasErrorCode.MISSING_MANDATORY_ATTRIBUTE, 
enumDef.getName(), "elementValue");
-            }
-
-            String elemKey = AtlasGraphUtilsV1.getTypeDefPropertyKey(enumDef, 
element.getValue());
-
-            AtlasGraphUtilsV1.setProperty(vertex, elemKey, 
element.getOrdinal());
-
-            if (StringUtils.isNotBlank(element.getDescription())) {
-                String descKey = 
AtlasGraphUtilsV1.getTypeDefPropertyKey(elemKey, "description");
-
-                AtlasGraphUtilsV1.setProperty(vertex, descKey, 
element.getDescription());
-            }
-
-            values.add(element.getValue());
-        }
-        AtlasGraphUtilsV1.setProperty(vertex, 
AtlasGraphUtilsV1.getTypeDefPropertyKey(enumDef), values);
-    }
-
-    private AtlasEnumDef toEnumDef(AtlasVertex vertex) {
-        AtlasEnumDef ret = null;
-
-        if (vertex != null && typeDefStore.isTypeVertex(vertex, 
TypeCategory.ENUM)) {
-            ret = toEnumDef(vertex, new AtlasEnumDef(), typeDefStore);
-        }
-
-        return ret;
-    }
-
-    private static AtlasEnumDef toEnumDef(AtlasVertex vertex, AtlasEnumDef 
enumDef, AtlasTypeDefGraphStoreV1 typeDefStore) {
-        AtlasEnumDef ret = enumDef != null ? enumDef : new AtlasEnumDef();
-
-        typeDefStore.vertexToTypeDef(vertex, ret);
-
-        List<AtlasEnumElementDef> elements = new ArrayList<>();
-        List<String> elemValues = 
vertex.getProperty(AtlasGraphUtilsV1.getTypeDefPropertyKey(ret), List.class);
-        for (String elemValue : elemValues) {
-            String elemKey = AtlasGraphUtilsV1.getTypeDefPropertyKey(ret, 
elemValue);
-            String descKey = AtlasGraphUtilsV1.getTypeDefPropertyKey(elemKey, 
"description");
-
-            Integer ordinal = AtlasGraphUtilsV1.getProperty(vertex, elemKey, 
Integer.class);
-            String  desc    = AtlasGraphUtilsV1.getProperty(vertex, descKey, 
String.class);
-
-            elements.add(new AtlasEnumElementDef(elemValue, desc, ordinal));
-        }
-        ret.setElementDefs(elements);
-
-        return ret;
-    }
-}

http://git-wip-us.apache.org/repos/asf/atlas/blob/4823c8ed/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
deleted file mode 100644
index 3e6f819..0000000
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
+++ /dev/null
@@ -1,514 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.atlas.repository.store.graph.v1;
-
-
-import org.apache.atlas.ApplicationProperties;
-import org.apache.atlas.AtlasErrorCode;
-import org.apache.atlas.SortOrder;
-import org.apache.atlas.discovery.SearchProcessor;
-import org.apache.atlas.exception.AtlasBaseException;
-import org.apache.atlas.model.TypeCategory;
-import org.apache.atlas.model.instance.AtlasEntity;
-import org.apache.atlas.model.typedef.AtlasBaseTypeDef;
-import org.apache.atlas.repository.Constants;
-import org.apache.atlas.repository.graph.AtlasGraphProvider;
-import org.apache.atlas.repository.graph.GraphHelper;
-import org.apache.atlas.repository.graphdb.AtlasEdge;
-import org.apache.atlas.repository.graphdb.AtlasElement;
-import org.apache.atlas.repository.graphdb.AtlasGraphQuery;
-import org.apache.atlas.repository.graphdb.AtlasIndexQuery;
-import org.apache.atlas.repository.graphdb.AtlasVertex;
-import org.apache.atlas.type.AtlasEntityType;
-import org.apache.atlas.type.AtlasStructType;
-import org.apache.atlas.type.AtlasStructType.AtlasAttribute;
-import org.apache.atlas.type.AtlasType;
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static 
org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_DEFAULT;
-import static 
org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_PROPERTY;
-import static org.apache.atlas.repository.graphdb.AtlasGraphQuery.SortOrder.*;
-
-/**
- * Utility methods for Graph.
- */
-public class AtlasGraphUtilsV1 {
-    private static final Logger LOG = 
LoggerFactory.getLogger(AtlasGraphUtilsV1.class);
-
-    public static final String PROPERTY_PREFIX             = 
Constants.INTERNAL_PROPERTY_KEY_PREFIX + "type.";
-    public static final String SUPERTYPE_EDGE_LABEL        = PROPERTY_PREFIX + 
".supertype";
-    public static final String ENTITYTYPE_EDGE_LABEL       = PROPERTY_PREFIX + 
".entitytype";
-    public static final String RELATIONSHIPTYPE_EDGE_LABEL = PROPERTY_PREFIX + 
".relationshipType";
-    public static final String VERTEX_TYPE                 = "typeSystem";
-
-    private static boolean USE_INDEX_QUERY_TO_FIND_ENTITY_BY_UNIQUE_ATTRIBUTES 
= false;
-    private static String  INDEX_SEARCH_PREFIX;
-
-    static {
-        try {
-            Configuration conf = ApplicationProperties.get();
-
-            USE_INDEX_QUERY_TO_FIND_ENTITY_BY_UNIQUE_ATTRIBUTES = 
conf.getBoolean("atlas.use.index.query.to.find.entity.by.unique.attributes", 
USE_INDEX_QUERY_TO_FIND_ENTITY_BY_UNIQUE_ATTRIBUTES);
-            INDEX_SEARCH_PREFIX                                 = 
conf.getString(INDEX_SEARCH_VERTEX_PREFIX_PROPERTY, 
INDEX_SEARCH_VERTEX_PREFIX_DEFAULT);
-        } catch (Exception excp) {
-            LOG.error("Error reading configuration", excp);
-        } finally {
-            
LOG.info("atlas.use.index.query.to.find.entity.by.unique.attributes=" + 
USE_INDEX_QUERY_TO_FIND_ENTITY_BY_UNIQUE_ATTRIBUTES);
-        }
-    }
-
-    public static String getTypeDefPropertyKey(AtlasBaseTypeDef typeDef) {
-        return getTypeDefPropertyKey(typeDef.getName());
-    }
-
-    public static String getTypeDefPropertyKey(AtlasBaseTypeDef typeDef, 
String child) {
-        return getTypeDefPropertyKey(typeDef.getName(), child);
-    }
-
-    public static String getTypeDefPropertyKey(String typeName) {
-        return PROPERTY_PREFIX + typeName;
-    }
-
-    public static String getTypeDefPropertyKey(String typeName, String child) {
-        return PROPERTY_PREFIX + typeName + "." + child;
-    }
-
-    public static String getIdFromVertex(AtlasVertex vertex) {
-        return vertex.getProperty(Constants.GUID_PROPERTY_KEY, String.class);
-    }
-
-    public static String getIdFromEdge(AtlasEdge edge) {
-        return edge.getProperty(Constants.GUID_PROPERTY_KEY, String.class);
-    }
-
-    public static String getTypeName(AtlasElement element) {
-        return element.getProperty(Constants.ENTITY_TYPE_PROPERTY_KEY, 
String.class);
-    }
-
-    public static String getEdgeLabel(String fromNode, String toNode) {
-        return PROPERTY_PREFIX + "edge." + fromNode + "." + toNode;
-    }
-
-    public static String getEdgeLabel(String property) {
-        return GraphHelper.EDGE_LABEL_PREFIX + property;
-    }
-
-    public static String getAttributeEdgeLabel(AtlasStructType fromType, 
String attributeName) throws AtlasBaseException {
-        return getEdgeLabel(getQualifiedAttributePropertyKey(fromType, 
attributeName));
-    }
-
-    public static String getQualifiedAttributePropertyKey(AtlasStructType 
fromType, String attributeName) throws AtlasBaseException {
-        switch (fromType.getTypeCategory()) {
-         case ENTITY:
-         case STRUCT:
-         case CLASSIFICATION:
-             return fromType.getQualifiedAttributeName(attributeName);
-        default:
-            throw new AtlasBaseException(AtlasErrorCode.UNKNOWN_TYPE, 
fromType.getTypeCategory().name());
-        }
-    }
-
-    public static boolean isEntityVertex(AtlasVertex vertex) {
-        return StringUtils.isNotEmpty(getIdFromVertex(vertex)) && 
StringUtils.isNotEmpty(getTypeName(vertex));
-    }
-
-    public static boolean isReference(AtlasType type) {
-        return isReference(type.getTypeCategory());
-    }
-
-    public static boolean isReference(TypeCategory typeCategory) {
-        return typeCategory == TypeCategory.STRUCT ||
-               typeCategory == TypeCategory.ENTITY ||
-               typeCategory == TypeCategory.OBJECT_ID_TYPE;
-    }
-
-    public static String encodePropertyKey(String key) {
-        String ret = AtlasStructType.AtlasAttribute.encodePropertyKey(key);
-
-        return ret;
-    }
-
-    public static String decodePropertyKey(String key) {
-        String ret = AtlasStructType.AtlasAttribute.decodePropertyKey(key);
-
-        return ret;
-    }
-
-    /**
-     * Adds an additional value to a multi-property.
-     *
-     * @param propertyName
-     * @param value
-     */
-    public static AtlasVertex addProperty(AtlasVertex vertex, String 
propertyName, Object value) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> addProperty({}, {}, {})", toString(vertex), 
propertyName, value);
-        }
-        propertyName = encodePropertyKey(propertyName);
-        vertex.addProperty(propertyName, value);
-        return vertex;
-    }
-
-    public static <T extends AtlasElement> void setProperty(T element, String 
propertyName, Object value) {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> setProperty({}, {}, {})", toString(element), 
propertyName, value);
-        }
-
-        propertyName = encodePropertyKey(propertyName);
-
-        Object existingValue = element.getProperty(propertyName, Object.class);
-
-        if (value == null || (value instanceof Collection && 
((Collection)value).isEmpty())) {
-            if (existingValue != null) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Removing property {} from {}", propertyName, 
toString(element));
-                }
-
-                element.removeProperty(propertyName);
-            }
-        } else {
-            if (!value.equals(existingValue)) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Setting property {} in {}", propertyName, 
toString(element));
-                }
-
-                if ( value instanceof Date) {
-                    Long encodedValue = ((Date) value).getTime();
-                    element.setProperty(propertyName, encodedValue);
-                } else {
-                    element.setProperty(propertyName, value);
-                }
-            }
-        }
-    }
-
-    public static <T extends AtlasElement, O> O getProperty(T element, String 
propertyName, Class<O> returnType) {
-        Object property = element.getProperty(encodePropertyKey(propertyName), 
returnType);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("getProperty({}, {}) ==> {}", toString(element), 
propertyName, returnType.cast(property));
-        }
-
-        return returnType.cast(property);
-    }
-
-    public static AtlasVertex getVertexByUniqueAttributes(AtlasEntityType 
entityType, Map<String, Object> attrValues) throws AtlasBaseException {
-        AtlasVertex vertex = findByUniqueAttributes(entityType, attrValues);
-
-        if (vertex == null) {
-            throw new 
AtlasBaseException(AtlasErrorCode.INSTANCE_BY_UNIQUE_ATTRIBUTE_NOT_FOUND, 
entityType.getTypeName(),
-                                         attrValues.toString());
-        }
-
-        return vertex;
-    }
-
-    public static String getGuidByUniqueAttributes(AtlasEntityType entityType, 
Map<String, Object> attrValues) throws AtlasBaseException {
-        AtlasVertex vertexByUniqueAttributes = 
getVertexByUniqueAttributes(entityType, attrValues);
-        return getIdFromVertex(vertexByUniqueAttributes);
-    }
-
-    public static AtlasVertex findByUniqueAttributes(AtlasEntityType 
entityType, Map<String, Object> attrValues) {
-        AtlasVertex vertex = null;
-
-        final Map<String, AtlasAttribute> uniqueAttributes = 
entityType.getUniqAttributes();
-
-        if (MapUtils.isNotEmpty(uniqueAttributes) && 
MapUtils.isNotEmpty(attrValues)) {
-            for (AtlasAttribute attribute : uniqueAttributes.values()) {
-                Object attrValue = attrValues.get(attribute.getName());
-
-                if (attrValue == null) {
-                    continue;
-                }
-
-                if (canUseIndexQuery(entityType, attribute.getName())) {
-                    vertex = 
AtlasGraphUtilsV1.getAtlasVertexFromIndexQuery(entityType, attribute, 
attrValue);
-                } else {
-                    vertex = 
AtlasGraphUtilsV1.findByTypeAndPropertyName(entityType.getTypeName(), 
attribute.getVertexPropertyName(), attrValue);
-
-                    // if no instance of given typeName is found, try to find 
an instance of type's sub-type
-                    if (vertex == null && 
!entityType.getAllSubTypes().isEmpty()) {
-                        vertex = 
AtlasGraphUtilsV1.findBySuperTypeAndPropertyName(entityType.getTypeName(), 
attribute.getVertexPropertyName(), attrValue);
-                    }
-                }
-
-                if (vertex != null) {
-                    if (LOG.isDebugEnabled()) {
-                        LOG.debug("findByUniqueAttributes(type={}, 
attrName={}, attrValue={}: found vertex {}",
-                                  entityType.getTypeName(), 
attribute.getName(), attrValue, vertex);
-                    }
-
-                    break;
-                }
-            }
-        }
-
-        return vertex;
-    }
-
-    public static AtlasVertex findByGuid(String guid) {
-        AtlasGraphQuery query = AtlasGraphProvider.getGraphInstance().query()
-                                                  
.has(Constants.GUID_PROPERTY_KEY, guid);
-
-        Iterator<AtlasVertex> results = query.vertices().iterator();
-
-        AtlasVertex vertex = results.hasNext() ? results.next() : null;
-
-        return vertex;
-    }
-
-    public static String getTypeNameFromGuid(String guid) {
-        String ret = null;
-
-        if (StringUtils.isNotEmpty(guid)) {
-            AtlasVertex vertex = AtlasGraphUtilsV1.findByGuid(guid);
-
-            ret = (vertex != null) ? AtlasGraphUtilsV1.getTypeName(vertex) : 
null;
-        }
-
-        return ret;
-    }
-
-    public static boolean typeHasInstanceVertex(String typeName) throws 
AtlasBaseException {
-        AtlasGraphQuery query = AtlasGraphProvider.getGraphInstance()
-                .query()
-                .has(Constants.TYPE_NAME_PROPERTY_KEY, 
AtlasGraphQuery.ComparisionOperator.EQUAL, typeName);
-
-        Iterator<AtlasVertex> results = query.vertices().iterator();
-
-        boolean hasInstanceVertex = results != null && results.hasNext();
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("typeName {} has instance vertex {}", typeName, 
hasInstanceVertex);
-        }
-
-        return hasInstanceVertex;
-    }
-
-    public static AtlasVertex findByTypeAndPropertyName(String typeName, 
String propertyName, Object attrVal) {
-        AtlasGraphQuery query = AtlasGraphProvider.getGraphInstance().query()
-                                                    
.has(Constants.ENTITY_TYPE_PROPERTY_KEY, typeName)
-                                                    
.has(Constants.STATE_PROPERTY_KEY, AtlasEntity.Status.ACTIVE.name())
-                                                    .has(propertyName, 
attrVal);
-
-        Iterator<AtlasVertex> results = query.vertices().iterator();
-
-        AtlasVertex vertex = results.hasNext() ? results.next() : null;
-
-        return vertex;
-    }
-
-    public static AtlasVertex findBySuperTypeAndPropertyName(String typeName, 
String propertyName, Object attrVal) {
-        AtlasGraphQuery query = AtlasGraphProvider.getGraphInstance().query()
-                                                    
.has(Constants.SUPER_TYPES_PROPERTY_KEY, typeName)
-                                                    
.has(Constants.STATE_PROPERTY_KEY, AtlasEntity.Status.ACTIVE.name())
-                                                    .has(propertyName, 
attrVal);
-
-        Iterator<AtlasVertex> results = query.vertices().iterator();
-
-        AtlasVertex vertex = results.hasNext() ? results.next() : null;
-
-        return vertex;
-    }
-
-    public static List<String> findEntityGUIDsByType(String typename, 
SortOrder sortOrder) {
-        AtlasGraphQuery query = AtlasGraphProvider.getGraphInstance().query()
-                                                  
.has(Constants.ENTITY_TYPE_PROPERTY_KEY, typename);
-        if (sortOrder != null) {
-            AtlasGraphQuery.SortOrder qrySortOrder = sortOrder == 
SortOrder.ASCENDING ? ASC : DESC;
-            query.orderBy(Constants.QUALIFIED_NAME, qrySortOrder);
-        }
-
-        Iterator<AtlasVertex> results = query.vertices().iterator();
-        ArrayList<String> ret = new ArrayList<>();
-
-        if (!results.hasNext()) {
-            return Collections.emptyList();
-        }
-
-        while (results.hasNext()) {
-            ret.add(getIdFromVertex(results.next()));
-        }
-
-        return ret;
-    }
-
-    public static List<String> findEntityGUIDsByType(String typename) {
-        return findEntityGUIDsByType(typename, null);
-    }
-
-    public static boolean relationshipTypeHasInstanceEdges(String typeName) 
throws AtlasBaseException {
-        AtlasGraphQuery query = AtlasGraphProvider.getGraphInstance()
-                .query()
-                .has(Constants.TYPE_NAME_PROPERTY_KEY, 
AtlasGraphQuery.ComparisionOperator.EQUAL, typeName);
-
-        Iterator<AtlasEdge> results = query.edges().iterator();
-
-        boolean hasInstanceEdges = results != null && results.hasNext();
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("relationshipType {} has instance edges {}", typeName, 
hasInstanceEdges);
-        }
-
-        return hasInstanceEdges;
-    }
-
-    private static String toString(AtlasElement element) {
-        if (element instanceof AtlasVertex) {
-            return toString((AtlasVertex) element);
-        } else if (element instanceof AtlasEdge) {
-            return toString((AtlasEdge)element);
-        }
-
-        return element.toString();
-    }
-
-    public static String toString(AtlasVertex vertex) {
-        if(vertex == null) {
-            return "vertex[null]";
-        } else {
-            if (LOG.isDebugEnabled()) {
-                return getVertexDetails(vertex);
-            } else {
-                return String.format("vertex[id=%s]", 
vertex.getId().toString());
-            }
-        }
-    }
-
-
-    public static String toString(AtlasEdge edge) {
-        if(edge == null) {
-            return "edge[null]";
-        } else {
-            if (LOG.isDebugEnabled()) {
-                return getEdgeDetails(edge);
-            } else {
-                return String.format("edge[id=%s]", edge.getId().toString());
-            }
-        }
-    }
-
-    public static String getVertexDetails(AtlasVertex vertex) {
-        return String.format("vertex[id=%s type=%s guid=%s]",
-                vertex.getId().toString(), getTypeName(vertex), 
getIdFromVertex(vertex));
-    }
-
-    public static String getEdgeDetails(AtlasEdge edge) {
-        return String.format("edge[id=%s label=%s from %s -> to %s]", 
edge.getId(), edge.getLabel(),
-                toString(edge.getOutVertex()), toString(edge.getInVertex()));
-    }
-
-    public static AtlasEntity.Status getState(AtlasElement element) {
-        String state = getStateAsString(element);
-        return state == null ? null : AtlasEntity.Status.valueOf(state);
-    }
-
-    public static String getStateAsString(AtlasElement element) {
-        return element.getProperty(Constants.STATE_PROPERTY_KEY, String.class);
-    }
-
-    private static boolean canUseIndexQuery(AtlasEntityType entityType, String 
attributeName) {
-        boolean ret = false;
-
-        if (USE_INDEX_QUERY_TO_FIND_ENTITY_BY_UNIQUE_ATTRIBUTES) {
-            final String typeAndSubTypesQryStr = 
entityType.getTypeAndAllSubTypesQryStr();
-
-            ret = typeAndSubTypesQryStr.length() <= 
SearchProcessor.MAX_QUERY_STR_LENGTH_TYPES;
-
-            if (ret) {
-                Set<String> indexSet = 
AtlasGraphProvider.getGraphInstance().getVertexIndexKeys();
-                try {
-                    ret = 
indexSet.contains(entityType.getQualifiedAttributeName(attributeName));
-                }
-                catch (AtlasBaseException ex) {
-                    ret = false;
-                }
-            }
-        }
-
-        return ret;
-    }
-
-    private static AtlasVertex getAtlasVertexFromIndexQuery(AtlasEntityType 
entityType, AtlasAttribute attribute, Object attrVal) {
-        String          propertyName = attribute.getVertexPropertyName();
-        AtlasIndexQuery query        = getIndexQuery(entityType, propertyName, 
attrVal.toString());
-
-        for (Iterator<AtlasIndexQuery.Result> iter = query.vertices(); 
iter.hasNext(); ) {
-            AtlasIndexQuery.Result result = iter.next();
-            AtlasVertex            vertex = result.getVertex();
-
-            // skip non-entity vertices, if any got returned
-            if (vertex == null || 
!vertex.getPropertyKeys().contains(Constants.GUID_PROPERTY_KEY)) {
-                continue;
-            }
-
-            // verify the typeName
-            String typeNameInVertex = getTypeName(vertex);
-
-            if 
(!entityType.getTypeAndAllSubTypes().contains(typeNameInVertex)) {
-                LOG.warn("incorrect vertex type from index-query: 
expected='{}'; found='{}'", entityType.getTypeName(), typeNameInVertex);
-
-                continue;
-            }
-
-            if (attrVal.getClass() == String.class) {
-                String s         = (String) attrVal;
-                String vertexVal = vertex.getProperty(propertyName, 
String.class);
-
-                if (!s.equalsIgnoreCase(vertexVal)) {
-                    LOG.warn("incorrect match from index-query for property 
{}: expected='{}'; found='{}'", propertyName, s, vertexVal);
-
-                    continue;
-                }
-            }
-
-            return vertex;
-        }
-
-        return null;
-    }
-
-    private static AtlasIndexQuery getIndexQuery(AtlasEntityType entityType, 
String propertyName, String value) {
-        StringBuilder sb = new StringBuilder();
-
-        sb.append(INDEX_SEARCH_PREFIX + 
"\"").append(Constants.TYPE_NAME_PROPERTY_KEY).append("\":").append(entityType.getTypeAndAllSubTypesQryStr())
-                .append(" AND ")
-                .append(INDEX_SEARCH_PREFIX + 
"\"").append(propertyName).append("\":").append(AtlasAttribute.escapeIndexQueryValue(value))
-                .append(" AND ")
-                .append(INDEX_SEARCH_PREFIX + 
"\"").append(Constants.STATE_PROPERTY_KEY).append("\":ACTIVE");
-
-        return 
AtlasGraphProvider.getGraphInstance().indexQuery(Constants.VERTEX_INDEX, 
sb.toString());
-    }
-
-    public static String getIndexSearchPrefix() {
-        return INDEX_SEARCH_PREFIX;
-    }
-}

http://git-wip-us.apache.org/repos/asf/atlas/blob/4823c8ed/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipDefStoreV1.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipDefStoreV1.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipDefStoreV1.java
deleted file mode 100644
index e287c0d..0000000
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipDefStoreV1.java
+++ /dev/null
@@ -1,508 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.atlas.repository.store.graph.v1;
-
-import org.apache.atlas.ApplicationProperties;
-import org.apache.atlas.AtlasErrorCode;
-import org.apache.atlas.AtlasException;
-import org.apache.atlas.exception.AtlasBaseException;
-import org.apache.atlas.model.typedef.AtlasRelationshipDef;
-import 
org.apache.atlas.model.typedef.AtlasRelationshipDef.RelationshipCategory;
-import org.apache.atlas.model.typedef.AtlasRelationshipDef.PropagateTags;
-import org.apache.atlas.model.typedef.AtlasRelationshipEndDef;
-import org.apache.atlas.query.AtlasDSL;
-import org.apache.atlas.repository.Constants;
-import org.apache.atlas.repository.graphdb.AtlasEdge;
-import org.apache.atlas.repository.graphdb.AtlasVertex;
-import org.apache.atlas.type.AtlasRelationshipType;
-import org.apache.atlas.type.AtlasType;
-import org.apache.atlas.type.AtlasTypeRegistry;
-import org.apache.atlas.typesystem.types.DataTypes.TypeCategory;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.atlas.authorize.AtlasPrivilege;
-import org.apache.atlas.authorize.AtlasTypeAccessRequest;
-import org.apache.atlas.authorize.AtlasAuthorizationUtils;
-import javax.inject.Inject;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * RelationshipDef store in v1 format.
- */
-public class AtlasRelationshipDefStoreV1 extends 
AtlasAbstractDefStoreV1<AtlasRelationshipDef> {
-    private static final Logger LOG = 
LoggerFactory.getLogger(AtlasRelationshipDefStoreV1.class);
-
-    @Inject
-    public AtlasRelationshipDefStoreV1(AtlasTypeDefGraphStoreV1 typeDefStore, 
AtlasTypeRegistry typeRegistry) {
-        super(typeDefStore, typeRegistry);
-    }
-
-    @Override
-    public AtlasVertex preCreate(AtlasRelationshipDef relationshipDef) throws 
AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasRelationshipDefStoreV1.preCreate({})", 
relationshipDef);
-        }
-
-        validateType(relationshipDef);
-
-        AtlasType type = typeRegistry.getType(relationshipDef.getName());
-
-        if (type.getTypeCategory() != 
org.apache.atlas.model.TypeCategory.RELATIONSHIP) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, 
relationshipDef.getName(), TypeCategory.RELATIONSHIP.name());
-        }
-
-        AtlasVertex relationshipDefVertex = 
typeDefStore.findTypeVertexByName(relationshipDef.getName());
-
-        if (relationshipDefVertex != null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_ALREADY_EXISTS, 
relationshipDef.getName());
-        }
-
-        relationshipDefVertex = typeDefStore.createTypeVertex(relationshipDef);
-
-        updateVertexPreCreate(relationshipDef, (AtlasRelationshipType) type, 
relationshipDefVertex);
-
-        final AtlasRelationshipEndDef endDef1        = 
relationshipDef.getEndDef1();
-        final AtlasRelationshipEndDef endDef2        = 
relationshipDef.getEndDef2();
-        final String                  type1          = endDef1.getType();
-        final String                  type2          = endDef2.getType();
-        final String                  name1          = endDef1.getName();
-        final String                  name2          = endDef2.getName();
-        final AtlasVertex             end1TypeVertex = 
typeDefStore.findTypeVertexByName(type1);
-        final AtlasVertex             end2TypeVertex = 
typeDefStore.findTypeVertexByName(type2);
-
-        if (end1TypeVertex == null) {
-            throw new 
AtlasBaseException(AtlasErrorCode.RELATIONSHIPDEF_END_TYPE_NAME_NOT_FOUND, 
relationshipDef.getName(), type1);
-        }
-
-        if (end2TypeVertex == null) {
-            throw new 
AtlasBaseException(AtlasErrorCode.RELATIONSHIPDEF_END_TYPE_NAME_NOT_FOUND, 
relationshipDef.getName(), type2);
-        }
-
-        // create an edge between the relationshipDef and each of the 
entityDef vertices.
-        AtlasEdge edge1 = typeDefStore.getOrCreateEdge(relationshipDefVertex, 
end1TypeVertex, AtlasGraphUtilsV1.RELATIONSHIPTYPE_EDGE_LABEL);
-
-        /*
-        Where edge1 and edge2 have the same names and types we do not need a 
second edge.
-        We are not invoking the equals method on the AtlasRelationshipedDef, 
as we only want 1 edge even if propagateTags or other properties are different.
-        */
-
-        if (type1.equals(type2) && name1.equals(name2)) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("AtlasRelationshipDefStoreV1.preCreate({}): created 
relationshipDef vertex {}," +
-                        " and one edge as {}, because end1 and end2 have the 
same type and name", relationshipDef, relationshipDefVertex, edge1);
-            }
-
-        } else {
-            AtlasEdge edge2 = 
typeDefStore.getOrCreateEdge(relationshipDefVertex, end2TypeVertex, 
AtlasGraphUtilsV1.RELATIONSHIPTYPE_EDGE_LABEL);
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("AtlasRelationshipDefStoreV1.preCreate({}): created 
relationshipDef vertex {}," +
-                        " edge1 as {}, edge2 as {} ", relationshipDef, 
relationshipDefVertex, edge1, edge2);
-            }
-
-        }
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasRelationshipDefStoreV1.preCreate({}): {}", 
relationshipDef, relationshipDefVertex);
-        }
-        return relationshipDefVertex;
-    }
-
-    @Override
-    public AtlasRelationshipDef create(AtlasRelationshipDef relationshipDef, 
AtlasVertex preCreateResult)
-            throws AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasRelationshipDefStoreV1.create({}, {})", 
relationshipDef, preCreateResult);
-        }
-
-        AtlasAuthorizationUtils.verifyAccess(new 
AtlasTypeAccessRequest(AtlasPrivilege.TYPE_CREATE, relationshipDef), "create 
relationship-def ", relationshipDef.getName());
-
-        AtlasVertex vertex = (preCreateResult == null) ? 
preCreate(relationshipDef) : preCreateResult;
-
-        AtlasRelationshipDef ret = toRelationshipDef(vertex);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasRelationshipDefStoreV1.create({}, {}): {}", 
relationshipDef, preCreateResult, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public List<AtlasRelationshipDef> getAll() throws AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasRelationshipDefStoreV1.getAll()");
-        }
-
-        List<AtlasRelationshipDef> ret = new ArrayList<>();
-        Iterator<AtlasVertex> vertices = 
typeDefStore.findTypeVerticesByCategory(TypeCategory.RELATIONSHIP);
-
-        while (vertices.hasNext()) {
-            ret.add(toRelationshipDef(vertices.next()));
-        }
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasRelationshipDefStoreV1.getAll(): count={}", 
ret.size());
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasRelationshipDef getByName(String name) throws 
AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasRelationshipDefStoreV1.getByName({})", name);
-        }
-
-        AtlasVertex vertex = 
typeDefStore.findTypeVertexByNameAndCategory(name, TypeCategory.RELATIONSHIP);
-
-        if (vertex == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_NOT_FOUND, 
name);
-        }
-
-        vertex.getProperty(Constants.TYPE_CATEGORY_PROPERTY_KEY, 
TypeCategory.class);
-
-        AtlasRelationshipDef ret = toRelationshipDef(vertex);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasRelationshipDefStoreV1.getByName({}): {}", 
name, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasRelationshipDef getByGuid(String guid) throws 
AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasRelationshipDefStoreV1.getByGuid({})", guid);
-        }
-
-        AtlasVertex vertex = 
typeDefStore.findTypeVertexByGuidAndCategory(guid, TypeCategory.RELATIONSHIP);
-
-        if (vertex == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_GUID_NOT_FOUND, 
guid);
-        }
-
-        AtlasRelationshipDef ret = toRelationshipDef(vertex);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasRelationshipDefStoreV1.getByGuid({}): {}", 
guid, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasRelationshipDef update(AtlasRelationshipDef relationshipDef) 
throws AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasRelationshipDefStoreV1.update({})", 
relationshipDef);
-        }
-
-        validateType(relationshipDef);
-
-        AtlasRelationshipDef ret = 
StringUtils.isNotBlank(relationshipDef.getGuid())
-                ? updateByGuid(relationshipDef.getGuid(), relationshipDef)
-                : updateByName(relationshipDef.getName(), relationshipDef);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasRelationshipDefStoreV1.update({}): {}", 
relationshipDef, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasRelationshipDef updateByName(String name, AtlasRelationshipDef 
relationshipDef)
-            throws AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasRelationshipDefStoreV1.updateByName({}, {})", 
name, relationshipDef);
-        }
-
-        AtlasRelationshipDef existingDef = 
typeRegistry.getRelationshipDefByName(name);
-
-        AtlasAuthorizationUtils.verifyAccess(new 
AtlasTypeAccessRequest(AtlasPrivilege.TYPE_UPDATE, existingDef), "update 
relationship-def ", name);
-
-        validateType(relationshipDef);
-
-        AtlasType type = typeRegistry.getType(relationshipDef.getName());
-
-        if (type.getTypeCategory() != 
org.apache.atlas.model.TypeCategory.RELATIONSHIP) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, 
relationshipDef.getName(), TypeCategory.RELATIONSHIP.name());
-        }
-
-        AtlasVertex vertex = 
typeDefStore.findTypeVertexByNameAndCategory(name, TypeCategory.RELATIONSHIP);
-
-        if (vertex == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_NOT_FOUND, 
name);
-        }
-
-        preUpdateCheck(relationshipDef, (AtlasRelationshipType) type, vertex);
-
-        AtlasRelationshipDef ret = toRelationshipDef(vertex);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasRelationshipDefStoreV1.updateByName({}, {}): 
{}", name, relationshipDef, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasRelationshipDef updateByGuid(String guid, AtlasRelationshipDef 
relationshipDef)
-            throws AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasRelationshipDefStoreV1.updateByGuid({})", 
guid);
-        }
-
-        AtlasRelationshipDef existingDef = 
typeRegistry.getRelationshipDefByGuid(guid);
-
-        AtlasAuthorizationUtils.verifyAccess(new 
AtlasTypeAccessRequest(AtlasPrivilege.TYPE_UPDATE, existingDef), "update 
relationship-Def ", (existingDef != null ? existingDef.getName() : guid));
-
-        validateType(relationshipDef);
-
-        AtlasType type = typeRegistry.getTypeByGuid(guid);
-
-        if (type.getTypeCategory() != 
org.apache.atlas.model.TypeCategory.RELATIONSHIP) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, 
relationshipDef.getName(), TypeCategory.RELATIONSHIP.name());
-        }
-
-        AtlasVertex vertex = 
typeDefStore.findTypeVertexByGuidAndCategory(guid, TypeCategory.RELATIONSHIP);
-
-        if (vertex == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_GUID_NOT_FOUND, 
guid);
-        }
-
-        preUpdateCheck(relationshipDef, (AtlasRelationshipType) type, vertex);
-        // updates should not effect the edges between the types as we do not 
allow updates that change the endpoints.
-
-        AtlasRelationshipDef ret = toRelationshipDef(vertex);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasRelationshipDefStoreV1.updateByGuid({}): {}", 
guid, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasVertex preDeleteByName(String name) throws AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasRelationshipDefStoreV1.preDeleteByName({})", 
name);
-        }
-
-        AtlasRelationshipDef existingDef = 
typeRegistry.getRelationshipDefByName(name);
-
-        AtlasAuthorizationUtils.verifyAccess(new 
AtlasTypeAccessRequest(AtlasPrivilege.TYPE_DELETE, existingDef), "delete 
relationship-def ", name);
-
-        AtlasVertex ret = typeDefStore.findTypeVertexByNameAndCategory(name, 
TypeCategory.RELATIONSHIP);
-
-        if (ret == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_NOT_FOUND, 
name);
-        }
-
-        if (AtlasGraphUtilsV1.relationshipTypeHasInstanceEdges(name)) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_HAS_REFERENCES, 
name);
-        }
-
-        typeDefStore.deleteTypeVertexOutEdges(ret);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasRelationshipDefStoreV1.preDeleteByName({}): 
{}", name, ret);
-        }
-
-        return ret;
-    }
-
-    @Override
-    public AtlasVertex preDeleteByGuid(String guid) throws AtlasBaseException {
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("==> AtlasRelationshipDefStoreV1.preDeleteByGuid({})", 
guid);
-        }
-
-        AtlasRelationshipDef existingDef = 
typeRegistry.getRelationshipDefByGuid(guid);
-
-        AtlasAuthorizationUtils.verifyAccess(new 
AtlasTypeAccessRequest(AtlasPrivilege.TYPE_DELETE, existingDef), "delete 
relationship-def ", (existingDef != null ? existingDef.getName() : guid));
-
-        AtlasVertex ret = typeDefStore.findTypeVertexByGuidAndCategory(guid, 
TypeCategory.RELATIONSHIP);
-
-        if (ret == null) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_GUID_NOT_FOUND, 
guid);
-        }
-
-        String typeName = AtlasGraphUtilsV1.getProperty(ret, 
Constants.TYPENAME_PROPERTY_KEY, String.class);
-
-        if (AtlasGraphUtilsV1.relationshipTypeHasInstanceEdges(typeName)) {
-            throw new AtlasBaseException(AtlasErrorCode.TYPE_HAS_REFERENCES, 
typeName);
-        }
-
-        typeDefStore.deleteTypeVertexOutEdges(ret);
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("<== AtlasRelationshipDefStoreV1.preDeleteByGuid({}): 
{}", guid, ret);
-        }
-
-        return ret;
-    }
-
-    private void updateVertexPreCreate(AtlasRelationshipDef relationshipDef, 
AtlasRelationshipType relationshipType,
-                                       AtlasVertex vertex) throws 
AtlasBaseException {
-        AtlasRelationshipEndDef end1 = relationshipDef.getEndDef1();
-        AtlasRelationshipEndDef end2 = relationshipDef.getEndDef2();
-
-        // check whether the names added on the relationship Ends are reserved 
if required.
-        final boolean allowReservedKeywords;
-        try {
-            allowReservedKeywords = 
ApplicationProperties.get().getBoolean(ALLOW_RESERVED_KEYWORDS, true);
-        } catch (AtlasException e) {
-            throw new AtlasBaseException(e);
-        }
-
-        if (!allowReservedKeywords) {
-            if (AtlasDSL.Parser.isKeyword(end1.getName())) {
-                throw new 
AtlasBaseException(AtlasErrorCode.RELATIONSHIPDEF_END1_NAME_INVALID, 
end1.getName());
-            }
-
-            if (AtlasDSL.Parser.isKeyword(end2.getName())) {
-                throw new 
AtlasBaseException(AtlasErrorCode.RELATIONSHIPDEF_END2_NAME_INVALID, 
end2.getName());
-            }
-        }
-
-        AtlasStructDefStoreV1.updateVertexPreCreate(relationshipDef, 
relationshipType, vertex, typeDefStore);
-        // Update ends
-        setVertexPropertiesFromRelationshipDef(relationshipDef, vertex);
-    }
-
-    private void preUpdateCheck(AtlasRelationshipDef newRelationshipDef, 
AtlasRelationshipType relationshipType,
-                                AtlasVertex vertex) throws AtlasBaseException {
-        // We will not support an update to endpoints or category key
-        AtlasRelationshipDef existingRelationshipDef = 
toRelationshipDef(vertex);
-
-        preUpdateCheck(newRelationshipDef, existingRelationshipDef);
-        // we do allow change to tag propagation and the addition of new 
attributes.
-
-        AtlasStructDefStoreV1.updateVertexPreUpdate(newRelationshipDef, 
relationshipType, vertex, typeDefStore);
-
-        setVertexPropertiesFromRelationshipDef(newRelationshipDef, vertex);
-    }
-
-    /**
-     * Check ends are the same and relationshipCategory is the same.
-     *
-     * We do this by comparing 2 relationshipDefs to avoid exposing the 
AtlasVertex to unit testing.
-     *
-     * @param newRelationshipDef
-     * @param existingRelationshipDef
-     * @throws AtlasBaseException
-     */
-    public static void preUpdateCheck(AtlasRelationshipDef newRelationshipDef, 
AtlasRelationshipDef existingRelationshipDef) throws AtlasBaseException {
-        // do not allow renames of the Def.
-        String existingName = existingRelationshipDef.getName();
-        String newName      = newRelationshipDef.getName();
-
-        if (!existingName.equals(newName)) {
-            throw new 
AtlasBaseException(AtlasErrorCode.RELATIONSHIPDEF_INVALID_NAME_UPDATE,
-                    newRelationshipDef.getGuid(),existingName, newName);
-        }
-
-        RelationshipCategory existingRelationshipCategory = 
existingRelationshipDef.getRelationshipCategory();
-        RelationshipCategory newRelationshipCategory      = 
newRelationshipDef.getRelationshipCategory();
-
-        if ( !existingRelationshipCategory.equals(newRelationshipCategory)){
-            throw new 
AtlasBaseException(AtlasErrorCode.RELATIONSHIPDEF_INVALID_CATEGORY_UPDATE,
-                    
newRelationshipDef.getName(),newRelationshipCategory.name(),
-                    existingRelationshipCategory.name() );
-        }
-
-        AtlasRelationshipEndDef existingEnd1 = 
existingRelationshipDef.getEndDef1();
-        AtlasRelationshipEndDef newEnd1      = newRelationshipDef.getEndDef1();
-
-        if ( !newEnd1.equals(existingEnd1) ) {
-            throw new 
AtlasBaseException(AtlasErrorCode.RELATIONSHIPDEF_INVALID_END1_UPDATE,
-                                         newRelationshipDef.getName(), 
newEnd1.toString(), existingEnd1.toString());
-        }
-
-        AtlasRelationshipEndDef existingEnd2 = 
existingRelationshipDef.getEndDef2();
-        AtlasRelationshipEndDef newEnd2      = newRelationshipDef.getEndDef2();
-
-        if ( !newEnd2.equals(existingEnd2) ) {
-                throw new 
AtlasBaseException(AtlasErrorCode.RELATIONSHIPDEF_INVALID_END2_UPDATE,
-                                         newRelationshipDef.getName(), 
newEnd2.toString(), existingEnd2.toString());
-        }
-    }
-
-    public static void 
setVertexPropertiesFromRelationshipDef(AtlasRelationshipDef relationshipDef, 
AtlasVertex vertex) {
-        vertex.setProperty(Constants.RELATIONSHIPTYPE_END1_KEY, 
AtlasType.toJson(relationshipDef.getEndDef1()));
-        vertex.setProperty(Constants.RELATIONSHIPTYPE_END2_KEY, 
AtlasType.toJson(relationshipDef.getEndDef2()));
-        // default the relationship category to association if it has not been 
specified.
-        String relationshipCategory = RelationshipCategory.ASSOCIATION.name();
-        if (relationshipDef.getRelationshipCategory()!=null) {
-            relationshipCategory 
=relationshipDef.getRelationshipCategory().name();
-        }
-        // Update RelationshipCategory
-        vertex.setProperty(Constants.RELATIONSHIPTYPE_CATEGORY_KEY, 
relationshipCategory);
-
-        if (relationshipDef.getPropagateTags() == null) {
-            vertex.setProperty(Constants.RELATIONSHIPTYPE_TAG_PROPAGATION_KEY, 
AtlasRelationshipDef.PropagateTags.NONE.name());
-        } else {
-            vertex.setProperty(Constants.RELATIONSHIPTYPE_TAG_PROPAGATION_KEY, 
relationshipDef.getPropagateTags().name());
-        }
-    }
-
-    private AtlasRelationshipDef toRelationshipDef(AtlasVertex vertex) throws 
AtlasBaseException {
-        AtlasRelationshipDef ret = null;
-
-        if (vertex != null && typeDefStore.isTypeVertex(vertex, 
TypeCategory.RELATIONSHIP)) {
-            String name         = 
vertex.getProperty(Constants.TYPENAME_PROPERTY_KEY, String.class);
-            String description  = 
vertex.getProperty(Constants.TYPEDESCRIPTION_PROPERTY_KEY, String.class);
-            String version      = 
vertex.getProperty(Constants.TYPEVERSION_PROPERTY_KEY, String.class);
-            String end1Str = 
vertex.getProperty(Constants.RELATIONSHIPTYPE_END1_KEY, String.class);
-            String end2Str = 
vertex.getProperty(Constants.RELATIONSHIPTYPE_END2_KEY, String.class);
-            String relationStr  = 
vertex.getProperty(Constants.RELATIONSHIPTYPE_CATEGORY_KEY, String.class);
-            String propagateStr = 
vertex.getProperty(Constants.RELATIONSHIPTYPE_TAG_PROPAGATION_KEY, 
String.class);
-
-            // set the ends
-            AtlasRelationshipEndDef endDef1 = AtlasType.fromJson(end1Str, 
AtlasRelationshipEndDef.class);
-            AtlasRelationshipEndDef endDef2 = AtlasType.fromJson(end2Str, 
AtlasRelationshipEndDef.class);
-
-            // set the relationship Category
-            RelationshipCategory relationshipCategory = null;
-            for (RelationshipCategory value : RelationshipCategory.values()) {
-                if (value.name().equals(relationStr)) {
-                    relationshipCategory = value;
-                }
-            }
-
-            // set the propagateTags
-            PropagateTags propagateTags = null;
-            for (PropagateTags value : PropagateTags.values()) {
-                if (value.name().equals(propagateStr)) {
-                    propagateTags = value;
-                }
-            }
-
-            ret = new AtlasRelationshipDef(name, description, version, 
relationshipCategory,  propagateTags, endDef1, endDef2);
-
-            // add in the attributes
-            AtlasStructDefStoreV1.toStructDef(vertex, ret, typeDefStore);
-        }
-
-        return ret;
-    }
-
-}

Reply via email to