public boolean deleteEdgeReference(AtlasEdge edge,DataTypes.TypeCategory typeCategory,boolean isComposite,boolean forceDeleteStructTrait) throws AtlasException {
  LOG.debug("Deleting {}",string(edge));
  boolean forceDelete=(typeCategory == DataTypes.TypeCategory.STRUCT || typeCategory == DataTypes.TypeCategory.TRAIT) ? forceDeleteStructTrait : false;
  if (typeCategory == DataTypes.TypeCategory.STRUCT || typeCategory == DataTypes.TypeCategory.TRAIT || (typeCategory == DataTypes.TypeCategory.CLASS && isComposite)) {
    AtlasVertex vertexForDelete=edge.getInVertex();
    deleteEdge(edge,false,forceDelete);
    deleteTypeVertex(vertexForDelete,typeCategory,forceDelete);
  }
 else {
    deleteEdge(edge,true,false);
  }
  return !softDelete || forceDelete;
}

public boolean deleteEdgeReference ( AtlasEdge edge , DataTypes . TypeCategory typeCategory , boolean isComposite , boolean forceDeleteStructTrait ) throws AtlasException { LOG . debug ( "Deleting {}" , string ( edge ) ) ; boolean forceDelete = ( typeCategory == DataTypes . TypeCategory . STRUCT || typeCategory == DataTypes . TypeCategory . TRAIT ) ? forceDeleteStructTrait : false ; if ( typeCategory == DataTypes . TypeCategory . STRUCT || typeCategory == DataTypes . TypeCategory . TRAIT || ( typeCategory == DataTypes . TypeCategory . CLASS && isComposite ) ) { AtlasVertex vertexForDelete = edge . getInVertex ( ) ; deleteEdge ( edge , false , forceDelete ) ; deleteTypeVertex ( vertexForDelete , typeCategory , forceDelete ) ; } else { deleteEdge ( edge , true , false ) ; } return ! softDelete || forceDelete ; }
force delete is used to remove struct / trait in case of entity updates
