Repository: incubator-atlas Updated Branches: refs/heads/master 04451449d -> 35c776448
ATLAS-1819: V2 API to get entity with classification returns 500 Signed-off-by: Madhan Neethiraj <mad...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/35c77644 Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/35c77644 Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/35c77644 Branch: refs/heads/master Commit: 35c776448cb932723e64fda6b642f65659e83879 Parents: 0445144 Author: rdsolani <rdsol...@gmail.com> Authored: Mon May 22 18:59:42 2017 +0530 Committer: Madhan Neethiraj <mad...@apache.org> Committed: Mon May 22 13:03:48 2017 -0700 ---------------------------------------------------------------------- ...ated-UI-to-exclude-terms-from-tag-UI-e.patch | 147 +++++++++++++++++++ .../store/graph/v1/EntityGraphRetriever.java | 7 +- 2 files changed, 153 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/35c77644/0001-ATLAS-1668-updated-UI-to-exclude-terms-from-tag-UI-e.patch ---------------------------------------------------------------------- diff --git a/0001-ATLAS-1668-updated-UI-to-exclude-terms-from-tag-UI-e.patch b/0001-ATLAS-1668-updated-UI-to-exclude-terms-from-tag-UI-e.patch new file mode 100644 index 0000000..7fe4281 --- /dev/null +++ b/0001-ATLAS-1668-updated-UI-to-exclude-terms-from-tag-UI-e.patch @@ -0,0 +1,147 @@ +From 46485ba13cf8dce280389ba872d357b23ffcebd6 Mon Sep 17 00:00:00 2001 +From: kevalbhatt <kbh...@apache.org> +Date: Fri, 10 Mar 2017 18:14:02 +0530 +Subject: [PATCH] ATLAS-1668: updated UI to exclude terms from tag UI elements + +Signed-off-by: Madhan Neethiraj <mad...@apache.org> +(cherry picked from commit e0145ffd40c08054cea7073239541879447794b4) +--- + .../business_catalog/AddTermToEntityLayoutView.js | 6 +++--- + .../js/views/business_catalog/TreeLayoutView.js | 1 - + .../public/js/views/search/SearchLayoutView.js | 8 ++++++-- + .../public/js/views/search/SearchResultLayoutView.js | 2 +- + .../public/js/views/tag/CreateTagLayoutView.js | 6 +++++- + dashboardv2/public/js/views/tag/TagLayoutView.js | 19 +++++++++---------- + dashboardv2/public/js/views/tag/addTagModalView.js | 3 +++ + 7 files changed, 27 insertions(+), 18 deletions(-) + +diff --git a/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js b/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js +index dd45e488..0212efe1 100644 +--- a/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js ++++ b/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js +@@ -74,9 +74,9 @@ define(['require', + } + var obj = { + termName: termName, +- guid: that.multiple[i].id.id, +- deletedEntity: Enums.entityStateReadOnly[that.multiple[i].id.state], +- entityName: that.multiple[i].model.get('name') ++ guid: that.multiple[i].id, ++ deletedEntity: Enums.entityStateReadOnly[that.multiple[i].model.status], ++ entityName: Utils.getName(that.multiple[i].model) + }; + if (obj.deletedEntity) { + Utils.notifyError({ +diff --git a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js b/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js +index 0bca0df7..998c8f42 100644 +--- a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js ++++ b/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js +@@ -377,7 +377,6 @@ define(['require', + } + var name = Utils.checkTagOrTerm(model.get('name'), true); + if (name.name) { +- // data-name="<space>'<tagName>'" Space is required for DSL search Input + if (that.viewBased) { + parentLi = '<div class="tools"><i class="fa fa-refresh fa-spin-custom taxanomyloader"></i><i class="fa fa-ellipsis-h termPopover"></i></div><i class="fa fa-angle-right toggleArrow" data-id="expandArrow" data-href="' + hrefUrl + '"></i><a href="javascript:void(0)" data-href="' + hrefUrl + '" data-name="`' + model.get('name') + '`">' + name.name + '</a>'; + } else { +diff --git a/dashboardv2/public/js/views/search/SearchLayoutView.js b/dashboardv2/public/js/views/search/SearchLayoutView.js +index d3a90305..e68f8c06 100644 +--- a/dashboardv2/public/js/views/search/SearchLayoutView.js ++++ b/dashboardv2/public/js/views/search/SearchLayoutView.js +@@ -172,11 +172,15 @@ define(['require', + return Utils.getName(model.toJSON(), 'name').toLowerCase(); + } + this.typeHeaders.fullCollection.sort().each(function(model) { ++ var name = Utils.getName(model.toJSON(), 'name'); + if (model.get('category') == 'ENTITY') { +- typeStr += '<option>' + (Utils.getName(model.toJSON(), 'name')) + '</option>'; ++ typeStr += '<option>' + (name) + '</option>'; + } + if (model.get('category') == 'CLASSIFICATION') { +- tagStr += '<option>' + (Utils.getName(model.toJSON(), 'name')) + '</option>'; ++ var checkTagOrTerm = Utils.checkTagOrTerm(name); ++ if (checkTagOrTerm.tag) { ++ tagStr += '<option>' + (name) + '</option>'; ++ } + } + }); + that.ui.typeLov.html(typeStr); +diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js b/dashboardv2/public/js/views/search/SearchResultLayoutView.js +index d2a3b51d..3446a670 100644 +--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js ++++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js +@@ -294,7 +294,7 @@ define(['require', + if (Globals.entityCreate && Globals.entityTypeConfList && Utils.getUrlState.isSearchTab()) { + createEntityTag = "<p>If you do not find the entity in search result below then you can" + '<a href="javascript:void(0)" data-id="createEntity"> create new entity</a></p>'; + } +- that.$('.searchResult').html(resultData + multiAssignDataTag + multiAssignDataTerm + createEntityTag); ++ that.$('.searchResult').html(resultData + multiAssignDataTerm + multiAssignDataTag + createEntityTag); + }, + silent: true, + reset: true +diff --git a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js +index 957a056e..34fa1147 100644 +--- a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js ++++ b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js +@@ -98,7 +98,11 @@ define(['require', + that = this; + this.ui.parentTag.empty(); + this.tagCollection.fullCollection.each(function(val) { +- str += '<option>' + (Utils.getName(val.toJSON())) + '</option>'; ++ var name = Utils.getName(val.toJSON()), ++ checkTagOrTerm = Utils.checkTagOrTerm(name); ++ if (checkTagOrTerm.tag) { ++ str += '<option>' + (name) + '</option>'; ++ } + }); + that.ui.parentTag.html(str); + // IE9 support +diff --git a/dashboardv2/public/js/views/tag/TagLayoutView.js b/dashboardv2/public/js/views/tag/TagLayoutView.js +index e6b20655..5311ad1b 100644 +--- a/dashboardv2/public/js/views/tag/TagLayoutView.js ++++ b/dashboardv2/public/js/views/tag/TagLayoutView.js +@@ -144,18 +144,17 @@ define(['require', + }; + that.collection.fullCollection.sort().each(function(model) { + var name = Utils.getName(model.toJSON(), 'name'); +- if (name.indexOf(".") > -1) { +- return; +- } +- if (searchString) { +- if (name.search(new RegExp(searchString, "i")) != -1) { +- // data-name="<space>'<tagName>'" Space is required for DSL search Input +- str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '" data-name=" `' + name + '`" >' + name + '</a></li>'; ++ var checkTagOrTerm = Utils.checkTagOrTerm(name); ++ if (checkTagOrTerm.tag) { ++ if (searchString) { ++ if (name.search(new RegExp(searchString, "i")) != -1) { ++ str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '" data-name="`' + name + '`" >' + name + '</a></li>'; ++ } else { ++ return; ++ } + } else { +- return; ++ str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '" data-name="`' + name + '`">' + name + '</a></li>'; + } +- } else { +- str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '" data-name=" `' + name + '`">' + name + '</a></li>'; + } + }); + this.ui.tagsParent.empty().html(str); +diff --git a/dashboardv2/public/js/views/tag/addTagModalView.js b/dashboardv2/public/js/views/tag/addTagModalView.js +index 559b2d57..cda5cf6c 100644 +--- a/dashboardv2/public/js/views/tag/addTagModalView.js ++++ b/dashboardv2/public/js/views/tag/addTagModalView.js +@@ -193,6 +193,9 @@ define(['require', + var str = '<option selected="selected" disabled="disabled">-- Select a tag from the dropdown list --</option>'; + this.collection.fullCollection.sort().each(function(obj, key) { + var name = Utils.getName(obj.toJSON(), 'name'); ++ if (name === "TaxonomyTerm") { ++ return; ++ } + // using obj.get('name') insted of name variable because if html is presen in name then escaped name will not found in tagList. + if (_.indexOf(that.tagList, obj.get('name')) === -1) { + str += '<option>' + name + '</option>'; +-- +2.11.0 (Apple Git-81) + http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/35c77644/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java ---------------------------------------------------------------------- diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java index 075b9b6..da6d636 100644 --- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java +++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java @@ -275,6 +275,11 @@ public final class EntityGraphRetriever { } List<AtlasClassification> classifications = getClassifications(instanceVertex, classificationName); + + if(CollectionUtils.isEmpty(classifications)) { + throw new AtlasBaseException(AtlasErrorCode.CLASSIFICATION_NOT_FOUND, classificationName); + } + return classifications.get(0); } @@ -550,4 +555,4 @@ public final class EntityGraphRetriever { private Object getVertexAttribute(AtlasVertex vertex, AtlasAttribute attribute) throws AtlasBaseException { return vertex != null && attribute != null ? mapVertexToAttribute(vertex, attribute, null) : null; } -} \ No newline at end of file +}