You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ni...@apache.org on 2020/03/11 06:59:26 UTC
[atlas] 02/02: ATLAS-3647: Fix System attribute search when
IsIncomplete Attribute has 1, null as values.
This is an automated email from the ASF dual-hosted git repository.
nixon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git
commit c6cac0301707e0d5ac983902a0c2aeefb148c872
Author: mayanknj <ma...@freestoneinfotech.com>
AuthorDate: Mon Mar 2 16:55:08 2020 +0530
ATLAS-3647: Fix System attribute search when IsIncomplete Attribute has 1,null as values.
Signed-off-by: nixonrodrigues <ni...@apache.org>
---
.../apache/atlas/discovery/SearchProcessor.java | 38 ++++++++++++++++++++--
1 file changed, 36 insertions(+), 2 deletions(-)
diff --git a/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java b/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
index cd01443..ddd3e60 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
@@ -222,9 +222,43 @@ public abstract class SearchProcessor {
processSearchAttributes(structType, criteria, indexFiltered, graphFiltered, allAttributes);
}
} else if (StringUtils.isNotEmpty(filterCriteria.getAttributeName())) {
- try {
- String attributeName = filterCriteria.getAttributeName();
+ String attributeName = filterCriteria.getAttributeName();
+
+ if (StringUtils.equals(attributeName, Constants.IS_INCOMPLETE_PROPERTY_KEY)) {
+ // when entity is incomplete (i.e. shell entity):
+ // vertex property IS_INCOMPLETE_PROPERTY_KEY will be set to INCOMPLETE_ENTITY_VALUE
+ // when entity is not incomplete (i.e. not a shell entity):
+ // vertex property IS_INCOMPLETE_PROPERTY_KEY will not be set
+
+ String attributeValue = filterCriteria.getAttributeValue();
+
+ switch (filterCriteria.getOperator()) {
+ case EQ:
+ if (attributeValue == null || StringUtils.equals(attributeValue, "0") || StringUtils.equalsIgnoreCase(attributeValue, "false")) {
+ filterCriteria.setOperator(SearchParameters.Operator.IS_NULL);
+ } else {
+ filterCriteria.setOperator(SearchParameters.Operator.EQ);
+ filterCriteria.setAttributeValue(Constants.INCOMPLETE_ENTITY_VALUE.toString());
+ }
+ break;
+ case NEQ:
+ if (attributeValue == null || StringUtils.equals(attributeValue, "0") || StringUtils.equalsIgnoreCase(attributeValue, "false")) {
+ filterCriteria.setOperator(SearchParameters.Operator.EQ);
+ filterCriteria.setAttributeValue(Constants.INCOMPLETE_ENTITY_VALUE.toString());
+ } else {
+ filterCriteria.setOperator(SearchParameters.Operator.IS_NULL);
+ }
+ break;
+
+ case NOT_NULL:
+ filterCriteria.setOperator(SearchParameters.Operator.EQ);
+ filterCriteria.setAttributeValue(Constants.INCOMPLETE_ENTITY_VALUE.toString());
+ break;
+ }
+ }
+
+ try {
if (isIndexSearchable(filterCriteria, structType)) {
indexFiltered.add(attributeName);
} else {