You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ap...@apache.org on 2018/05/25 03:52:56 UTC

[18/20] atlas git commit: ATLAS-2490: updates to make usage of v1/v2 in class names consistent

http://git-wip-us.apache.org/repos/asf/atlas/blob/3d5b4880/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/3d5b4880/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/3d5b4880/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/3d5b4880/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/3d5b4880/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;
-    }
-
-}