Repository: atlas
Updated Branches:
  refs/heads/branch-1.0 1e9c71152 -> bf037c92e


ATLAS-2705 #2

Change-Id: I37796a6596cb284ba885dc05ffacd1dd7bcb6fba
(cherry picked from commit a0269b9ce8c1ebbe056b786f4bc1e3a522ca0e50)


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

Branch: refs/heads/branch-1.0
Commit: e5e45589cbb0f4f96ffe8ae64342a580f36ed9b4
Parents: 1e9c711
Author: apoorvnaik <[email protected]>
Authored: Tue May 22 14:11:26 2018 -0700
Committer: Madhan Neethiraj <[email protected]>
Committed: Tue May 22 23:11:12 2018 -0700

----------------------------------------------------------------------
 .../atlas/glossary/GlossaryCategoryUtils.java   | 16 +++++-----
 .../atlas/glossary/GlossaryTermUtils.java       | 10 +++---
 .../store/graph/AtlasRelationshipStore.java     |  7 +++++
 .../graph/v1/AtlasRelationshipStoreV1.java      | 10 ++++--
 .../store/graph/v1/DeleteHandlerV1.java         | 33 ++++----------------
 5 files changed, 35 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/e5e45589/repository/src/main/java/org/apache/atlas/glossary/GlossaryCategoryUtils.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/glossary/GlossaryCategoryUtils.java 
b/repository/src/main/java/org/apache/atlas/glossary/GlossaryCategoryUtils.java
index 42cdef8..38ce147 100644
--- 
a/repository/src/main/java/org/apache/atlas/glossary/GlossaryCategoryUtils.java
+++ 
b/repository/src/main/java/org/apache/atlas/glossary/GlossaryCategoryUtils.java
@@ -113,7 +113,7 @@ public class GlossaryCategoryUtils extends GlossaryUtils {
                                   
updatedCategory.getAnchor().getGlossaryGuid(),
                                   storeObject.getGuid());
                     }
-                    
relationshipStore.deleteById(storeObject.getAnchor().getRelationGuid());
+                    
relationshipStore.deleteById(storeObject.getAnchor().getRelationGuid(), true);
 
                     // Derive the qualifiedName when anchor changes
                     String        anchorGlossaryGuid = 
updatedCategory.getAnchor().getGlossaryGuid();
@@ -135,7 +135,7 @@ public class GlossaryCategoryUtils extends GlossaryUtils {
                     if (DEBUG_ENABLED) {
                         LOG.debug("Deleting category anchor");
                     }
-                    
relationshipStore.deleteById(storeObject.getAnchor().getRelationGuid());
+                    
relationshipStore.deleteById(storeObject.getAnchor().getRelationGuid(), true);
                 }
                 break;
         }
@@ -174,7 +174,7 @@ public class GlossaryCategoryUtils extends GlossaryUtils {
                         relationshipStore.update(parentRelationship);
                     } else {
                         // Delete link to existing parent and link to new 
parent
-                        
relationshipStore.deleteById(parentRelationship.getGuid());
+                        
relationshipStore.deleteById(parentRelationship.getGuid(), true);
                         
createRelationship(defineCategoryHierarchyLink(newParent, 
storeObject.getGuid()));
                     }
                 }
@@ -209,7 +209,7 @@ public class GlossaryCategoryUtils extends GlossaryUtils {
         if (DEBUG_ENABLED) {
             LOG.debug("Removing category parent, category = {}, parent = {}", 
storeObject.getGuid(), existingParent.getDisplayText());
         }
-        relationshipStore.deleteById(existingParent.getRelationGuid());
+        relationshipStore.deleteById(existingParent.getRelationGuid(), true);
 
         // Parent deleted, qualifiedName needs recomputation
 
@@ -343,7 +343,7 @@ public class GlossaryCategoryUtils extends GlossaryUtils {
                 if (DEBUG_ENABLED) {
                     LOG.debug("Creating term relation with category = {}, 
terms = {}", storeObject.getDisplayName(), term.getDisplayText());
                 }
-                relationshipStore.deleteById(term.getRelationGuid());
+                relationshipStore.deleteById(term.getRelationGuid(), true);
             }
         }
     }
@@ -485,7 +485,7 @@ public class GlossaryCategoryUtils extends GlossaryUtils {
                 if (DEBUG_ENABLED) {
                     LOG.debug("Deleting child, category = {}, child = {}", 
storeObject.getDisplayName(), child.getDisplayText());
                 }
-                relationshipStore.deleteById(child.getRelationGuid());
+                relationshipStore.deleteById(child.getRelationGuid(), true);
             }
         }
     }
@@ -565,9 +565,11 @@ public class GlossaryCategoryUtils extends GlossaryUtils {
                     LOG.debug("Child anchor guid({}) doesn't match parent 
anchor guid({}). Updating child anchor", childAnchorGuid, parentAnchorGuid);
                 }
                 // Remove old glossary relation
-                
relationshipStore.deleteById(child.getAnchor().getRelationGuid());
+                
relationshipStore.deleteById(child.getAnchor().getRelationGuid(), true);
+
                 // Link to new glossary
                 
createRelationship(defineCategoryAnchorRelation(parentAnchorGuid, 
child.getGuid()));
+
                 // Update the child's anchor GUID
                 child.getAnchor().setGlossaryGuid(parentAnchorGuid);
             }

http://git-wip-us.apache.org/repos/asf/atlas/blob/e5e45589/repository/src/main/java/org/apache/atlas/glossary/GlossaryTermUtils.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/glossary/GlossaryTermUtils.java 
b/repository/src/main/java/org/apache/atlas/glossary/GlossaryTermUtils.java
index 2af4e79..8094019 100644
--- a/repository/src/main/java/org/apache/atlas/glossary/GlossaryTermUtils.java
+++ b/repository/src/main/java/org/apache/atlas/glossary/GlossaryTermUtils.java
@@ -119,7 +119,7 @@ public class GlossaryTermUtils extends GlossaryUtils {
                 }
                 AtlasRelatedObjectId existingTermRelation = 
assignedEntityMap.get(relatedObjectId.getGuid());
                 if (CollectionUtils.isNotEmpty(assignedEntities) && 
isRelationshipGuidSame(existingTermRelation, relatedObjectId)) {
-                    
relationshipStore.deleteById(relatedObjectId.getRelationshipGuid());
+                    
relationshipStore.deleteById(relatedObjectId.getRelationshipGuid(), true);
                 } else {
                     throw new 
AtlasBaseException(AtlasErrorCode.INVALID_TERM_DISSOCIATION, 
relatedObjectId.getRelationshipGuid(), glossaryTerm.getGuid(), 
relatedObjectId.getGuid());
                 }
@@ -176,7 +176,7 @@ public class GlossaryTermUtils extends GlossaryUtils {
                                   updatedTermAnchor.getGlossaryGuid(),
                                   storeObject.getDisplayName());
                     }
-                    
relationshipStore.deleteById(existingAnchor.getRelationGuid());
+                    
relationshipStore.deleteById(existingAnchor.getRelationGuid(), true);
 
                     // Derive the qualifiedName when anchor changes
                     String        anchorGlossaryGuid = 
updatedTermAnchor.getGlossaryGuid();
@@ -195,7 +195,7 @@ public class GlossaryTermUtils extends GlossaryUtils {
                     if (DEBUG_ENABLED) {
                         LOG.debug("Deleting term anchor");
                     }
-                    
relationshipStore.deleteById(existingAnchor.getRelationGuid());
+                    
relationshipStore.deleteById(existingAnchor.getRelationGuid(), true);
                 }
                 break;
         }
@@ -406,7 +406,7 @@ public class GlossaryTermUtils extends GlossaryUtils {
                 if (DEBUG_ENABLED) {
                     LOG.debug("Deleting relation guid = {}, text = {}", 
categorizationHeader.getRelationGuid(), categorizationHeader.getDisplayText());
                 }
-                
relationshipStore.deleteById(categorizationHeader.getRelationGuid());
+                
relationshipStore.deleteById(categorizationHeader.getRelationGuid(), true);
             }
         }
     }
@@ -466,7 +466,7 @@ public class GlossaryTermUtils extends GlossaryUtils {
                 if (DEBUG_ENABLED) {
                     LOG.debug("Deleting term relation = {}, terms = {}", 
relation, termHeader.getDisplayText());
                 }
-                relationshipStore.deleteById(termHeader.getRelationGuid());
+                relationshipStore.deleteById(termHeader.getRelationGuid(), 
true);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/atlas/blob/e5e45589/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasRelationshipStore.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasRelationshipStore.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasRelationshipStore.java
index 072ea94..4468951 100644
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasRelationshipStore.java
+++ 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasRelationshipStore.java
@@ -71,4 +71,11 @@ public interface AtlasRelationshipStore {
      * @param guid relationship instance guid
      */
     void deleteById(String guid) throws AtlasBaseException;
+
+    /**
+     * Delete a relationship instance using guid.
+     * @param guid relationship instance guid
+     * @param forceDelete force delete the relationship edge
+     */
+    void deleteById(String guid, boolean forceDelete) throws 
AtlasBaseException;
 }

http://git-wip-us.apache.org/repos/asf/atlas/blob/e5e45589/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipStoreV1.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipStoreV1.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipStoreV1.java
index a600b20..b683c6b 100644
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipStoreV1.java
+++ 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasRelationshipStoreV1.java
@@ -234,8 +234,14 @@ public class AtlasRelationshipStoreV1 implements 
AtlasRelationshipStore {
     @Override
     @GraphTransaction
     public void deleteById(String guid) throws AtlasBaseException {
+        deleteById(guid, false);
+    }
+
+    @Override
+    @GraphTransaction
+    public void deleteById(String guid, boolean forceDelete) throws 
AtlasBaseException {
         if (LOG.isDebugEnabled()) {
-            LOG.debug("==> deleteById({})", guid);
+            LOG.debug("==> deleteById({}, {})", guid, forceDelete);
         }
 
         if (StringUtils.isEmpty(guid)) {
@@ -252,7 +258,7 @@ public class AtlasRelationshipStoreV1 implements 
AtlasRelationshipStore {
             throw new 
AtlasBaseException(AtlasErrorCode.RELATIONSHIP_ALREADY_DELETED, guid);
         }
 
-        deleteHandler.deleteRelationships(Collections.singleton(edge));
+        deleteHandler.deleteRelationships(Collections.singleton(edge), 
forceDelete);
 
         // notify entities for added/removed classification propagation
         entityChangeNotifier.notifyPropagatedEntities();

http://git-wip-us.apache.org/repos/asf/atlas/blob/e5e45589/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/DeleteHandlerV1.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/DeleteHandlerV1.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/DeleteHandlerV1.java
index b4d26d0..69a4758 100644
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/DeleteHandlerV1.java
+++ 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/DeleteHandlerV1.java
@@ -52,11 +52,7 @@ import org.slf4j.LoggerFactory;
 
 import java.util.*;
 
-import static org.apache.atlas.model.TypeCategory.ARRAY;
-import static org.apache.atlas.model.TypeCategory.CLASSIFICATION;
-import static org.apache.atlas.model.TypeCategory.MAP;
-import static org.apache.atlas.model.TypeCategory.OBJECT_ID_TYPE;
-import static org.apache.atlas.model.TypeCategory.STRUCT;
+import static org.apache.atlas.model.TypeCategory.*;
 import static org.apache.atlas.model.instance.AtlasEntity.Status.ACTIVE;
 import static org.apache.atlas.model.instance.AtlasEntity.Status.DELETED;
 import static 
org.apache.atlas.model.typedef.AtlasRelationshipDef.PropagateTags.ONE_TO_TWO;
@@ -64,25 +60,7 @@ import static 
org.apache.atlas.repository.Constants.CLASSIFICATION_EDGE_NAME_PRO
 import static org.apache.atlas.repository.Constants.CLASSIFICATION_LABEL;
 import static 
org.apache.atlas.repository.Constants.PROPAGATED_TRAIT_NAMES_PROPERTY_KEY;
 import static 
org.apache.atlas.repository.Constants.RELATIONSHIP_GUID_PROPERTY_KEY;
-import static org.apache.atlas.repository.Constants.TRAIT_NAMES_PROPERTY_KEY;
-import static 
org.apache.atlas.repository.graph.GraphHelper.addToPropagatedTraitNames;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getAssociatedEntityVertex;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getClassificationEdge;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getClassificationEdges;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getClassificationEntityGuid;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getClassificationName;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getClassificationVertices;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getCollectionElementsUsingRelationship;
-import static org.apache.atlas.repository.graph.GraphHelper.getGuid;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getMapValuesUsingRelationship;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getPropagatedClassificationEdge;
-import static org.apache.atlas.repository.graph.GraphHelper.getPropagatedEdges;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getPropagationEnabledClassificationVertices;
-import static 
org.apache.atlas.repository.graph.GraphHelper.getRelationshipGuid;
-import static org.apache.atlas.repository.graph.GraphHelper.getTraitNames;
-import static org.apache.atlas.repository.graph.GraphHelper.getTypeName;
-import static org.apache.atlas.repository.graph.GraphHelper.string;
-import static 
org.apache.atlas.repository.graph.GraphHelper.updateModificationMetadata;
+import static org.apache.atlas.repository.graph.GraphHelper.*;
 import static 
org.apache.atlas.repository.store.graph.v1.AtlasGraphUtilsV1.getIdFromEdge;
 import static 
org.apache.atlas.repository.store.graph.v1.AtlasGraphUtilsV1.getQualifiedAttributePropertyKey;
 import static 
org.apache.atlas.repository.store.graph.v1.AtlasGraphUtilsV1.getState;
@@ -150,16 +128,17 @@ public abstract class DeleteHandlerV1 {
      * @throws AtlasBaseException
      */
     public void deleteRelationship(AtlasEdge edge) throws AtlasBaseException {
-        deleteRelationships(Collections.singleton(edge));
+        deleteRelationships(Collections.singleton(edge), false);
     }
 
     /**
      * Deletes the specified relationship edges.
      *
      * @param edges
+     * @param forceDelete
      * @throws AtlasBaseException
      */
-    public void deleteRelationships(Collection<AtlasEdge> edges) throws 
AtlasBaseException {
+    public void deleteRelationships(Collection<AtlasEdge> edges, final boolean 
forceDelete) throws AtlasBaseException {
         for (AtlasEdge edge : edges) {
             boolean isInternal = isInternalType(edge.getInVertex()) && 
isInternalType(edge.getOutVertex());
 
@@ -171,7 +150,7 @@ public abstract class DeleteHandlerV1 {
                 continue;
             }
 
-            deleteEdge(edge, isInternal);
+            deleteEdge(edge, isInternal || forceDelete);
         }
     }
 

Reply via email to