Repository: atlas Updated Branches: refs/heads/branch-1.0 6c7d8e268 -> 703457d8e
ATLAS-2746: Term/Category create shouldn't require UPDATE privilege for simple cases. Change-Id: I914d81dab968c28b1684953d3b077bfa046c96bb (cherry picked from commit 7a1d3dc5e315d5c82a58bdc67533e7deb324db07) Project: http://git-wip-us.apache.org/repos/asf/atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/703457d8 Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/703457d8 Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/703457d8 Branch: refs/heads/branch-1.0 Commit: 703457d8ef056bc2ef34bf0c08966df4748e98ee Parents: 6c7d8e2 Author: apoorvnaik <[email protected]> Authored: Thu Jun 7 09:17:57 2018 -0700 Committer: apoorvnaik <[email protected]> Committed: Fri Jun 8 09:10:12 2018 -0700 ---------------------------------------------------------------------- .../atlas/glossary/GlossaryCategoryUtils.java | 8 --- .../apache/atlas/glossary/GlossaryService.java | 56 ++++++++++---------- .../atlas/glossary/GlossaryTermUtils.java | 9 ---- 3 files changed, 29 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/atlas/blob/703457d8/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 be2f16e..e218c29 100644 --- a/repository/src/main/java/org/apache/atlas/glossary/GlossaryCategoryUtils.java +++ b/repository/src/main/java/org/apache/atlas/glossary/GlossaryCategoryUtils.java @@ -89,15 +89,7 @@ public class GlossaryCategoryUtils extends GlossaryUtils { LOG.debug("Creating new category anchor, category = {}, glossary = {}", storeObject.getGuid(), updatedCategory.getAnchor().getGlossaryGuid()); } - // Derive the qualifiedName String anchorGlossaryGuid = updatedCategory.getAnchor().getGlossaryGuid(); - AtlasGlossary glossary = dataAccess.load(getGlossarySkeleton(anchorGlossaryGuid)); - storeObject.setQualifiedName(storeObject.getName()+ "@" + glossary.getQualifiedName()); - - if (LOG.isDebugEnabled()) { - LOG.debug("Derived qualifiedName = {}", storeObject.getQualifiedName()); - } - createRelationship(defineCategoryAnchorRelation(anchorGlossaryGuid, storeObject.getGuid())); } break; http://git-wip-us.apache.org/repos/asf/atlas/blob/703457d8/repository/src/main/java/org/apache/atlas/glossary/GlossaryService.java ---------------------------------------------------------------------- diff --git a/repository/src/main/java/org/apache/atlas/glossary/GlossaryService.java b/repository/src/main/java/org/apache/atlas/glossary/GlossaryService.java index ff5aa6e..fb26598 100644 --- a/repository/src/main/java/org/apache/atlas/glossary/GlossaryService.java +++ b/repository/src/main/java/org/apache/atlas/glossary/GlossaryService.java @@ -330,15 +330,20 @@ public class GlossaryService { if (Objects.isNull(glossaryTerm.getAnchor())) { throw new AtlasBaseException(AtlasErrorCode.MISSING_MANDATORY_ANCHOR); } - if (StringUtils.isEmpty(glossaryTerm.getQualifiedName())) { - if (StringUtils.isEmpty(glossaryTerm.getName())) { - throw new AtlasBaseException(AtlasErrorCode.GLOSSARY_TERM_QUALIFIED_NAME_CANT_BE_DERIVED); - } + if (StringUtils.isEmpty(glossaryTerm.getName())) { + throw new AtlasBaseException(AtlasErrorCode.GLOSSARY_TERM_QUALIFIED_NAME_CANT_BE_DERIVED); + } - if (isNameInvalid(glossaryTerm.getName())){ - throw new AtlasBaseException(AtlasErrorCode.INVALID_DISPLAY_NAME); - } else { - glossaryTerm.setQualifiedName(glossaryTerm.getName()); + if (isNameInvalid(glossaryTerm.getName())){ + throw new AtlasBaseException(AtlasErrorCode.INVALID_DISPLAY_NAME); + } else { + // Derive the qualifiedName + String anchorGlossaryGuid = glossaryTerm.getAnchor().getGlossaryGuid(); + AtlasGlossary glossary = dataAccess.load(getGlossarySkeleton(anchorGlossaryGuid)); + glossaryTerm.setQualifiedName(glossaryTerm.getName() + "@" + glossary.getQualifiedName()); + + if (LOG.isDebugEnabled()) { + LOG.debug("Derived qualifiedName = {}", glossaryTerm.getQualifiedName()); } } @@ -351,17 +356,7 @@ public class GlossaryService { glossaryTermUtils.processTermRelations(storeObject, glossaryTerm, GlossaryUtils.RelationshipOperation.CREATE); // Re-load term after handling relations - if (StringUtils.equals(storeObject.getQualifiedName(), glossaryTerm.getQualifiedName())) { - storeObject = dataAccess.load(glossaryTerm); - } else { - glossaryTerm.setQualifiedName(storeObject.getQualifiedName()); - - if (termExists(glossaryTerm)) { - throw new AtlasBaseException(AtlasErrorCode.GLOSSARY_TERM_ALREADY_EXISTS, glossaryTerm.getQualifiedName()); - } - - storeObject = dataAccess.save(glossaryTerm); - } + storeObject = dataAccess.load(glossaryTerm); setInfoForRelations(storeObject); if (DEBUG_ENABLED) { @@ -545,15 +540,22 @@ public class GlossaryService { if (Objects.isNull(glossaryCategory.getAnchor())) { throw new AtlasBaseException(AtlasErrorCode.MISSING_MANDATORY_ANCHOR); } - if (StringUtils.isEmpty(glossaryCategory.getQualifiedName())) { - if (StringUtils.isEmpty(glossaryCategory.getName())) { - throw new AtlasBaseException(AtlasErrorCode.GLOSSARY_CATEGORY_QUALIFIED_NAME_CANT_BE_DERIVED); - } - if (isNameInvalid(glossaryCategory.getName())){ - throw new AtlasBaseException(AtlasErrorCode.INVALID_DISPLAY_NAME); - } else { - glossaryCategory.setQualifiedName(glossaryCategory.getName()); + if (StringUtils.isEmpty(glossaryCategory.getName())) { + throw new AtlasBaseException(AtlasErrorCode.GLOSSARY_CATEGORY_QUALIFIED_NAME_CANT_BE_DERIVED); + } + if (isNameInvalid(glossaryCategory.getName())){ + throw new AtlasBaseException(AtlasErrorCode.INVALID_DISPLAY_NAME); + } else { + // Derive the qualifiedName + String anchorGlossaryGuid = glossaryCategory.getAnchor().getGlossaryGuid(); + AtlasGlossary glossary = dataAccess.load(getGlossarySkeleton(anchorGlossaryGuid)); + glossaryCategory.setQualifiedName(glossaryCategory.getName()+ "@" + glossary.getQualifiedName()); + + if (LOG.isDebugEnabled()) { + LOG.debug("Derived qualifiedName = {}", glossaryCategory.getQualifiedName()); } + + } // This might fail for the case when the category's qualifiedName has been updated during a hierarchy change http://git-wip-us.apache.org/repos/asf/atlas/blob/703457d8/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 4d65328..cdc3f07 100644 --- a/repository/src/main/java/org/apache/atlas/glossary/GlossaryTermUtils.java +++ b/repository/src/main/java/org/apache/atlas/glossary/GlossaryTermUtils.java @@ -152,15 +152,6 @@ public class GlossaryTermUtils extends GlossaryUtils { LOG.debug("Creating new term anchor, category = {}, glossary = {}", storeObject.getGuid(), updatedTerm.getAnchor().getGlossaryGuid()); } - // Derive the qualifiedName - String anchorGlossaryGuid = updatedTermAnchor.getGlossaryGuid(); - AtlasGlossary glossary = dataAccess.load(getGlossarySkeleton(anchorGlossaryGuid)); - storeObject.setQualifiedName(storeObject.getName() + "@" + glossary.getQualifiedName()); - - if (LOG.isDebugEnabled()) { - LOG.debug("Derived qualifiedName = {}", storeObject.getQualifiedName()); - } - createRelationship(defineTermAnchorRelation(updatedTermAnchor.getGlossaryGuid(), storeObject.getGuid())); } break;
