Repository: atlas
Updated Branches:
  refs/heads/branch-0.8 77a94d2e6 -> 9a8d31b8e


ATLAS-2620: updated entity-lookup REST API to use basic-search implementation

(cherry picked from commit 3f7c5811faa9c9c9b61f9e6760904aeafb221224)


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

Branch: refs/heads/branch-0.8
Commit: 9a8d31b8ef0b7c1b71dcb9b69aef249b55aedcd8
Parents: 77a94d2
Author: Madhan Neethiraj <mad...@apache.org>
Authored: Thu Apr 26 16:19:47 2018 -0700
Committer: Madhan Neethiraj <mad...@apache.org>
Committed: Thu Apr 26 18:24:56 2018 -0700

----------------------------------------------------------------------
 .../apache/atlas/web/rest/DiscoveryREST.java    | 51 ++++++++++++++++++--
 1 file changed, 46 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/9a8d31b8/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
----------------------------------------------------------------------
diff --git a/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java 
b/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
index ee68d63..1989230 100644
--- a/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
+++ b/webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
@@ -17,14 +17,19 @@
  */
 package org.apache.atlas.web.rest;
 
+import org.apache.atlas.AtlasClient;
 import org.apache.atlas.AtlasErrorCode;
 import org.apache.atlas.SortOrder;
 import org.apache.atlas.discovery.AtlasDiscoveryService;
 import org.apache.atlas.exception.AtlasBaseException;
 import org.apache.atlas.model.discovery.AtlasSearchResult;
 import org.apache.atlas.model.discovery.SearchParameters;
+import org.apache.atlas.model.discovery.SearchParameters.FilterCriteria;
 import org.apache.atlas.model.profile.AtlasUserSavedSearch;
 import org.apache.atlas.repository.Constants;
+import org.apache.atlas.type.AtlasEntityType;
+import org.apache.atlas.type.AtlasStructType;
+import org.apache.atlas.type.AtlasTypeRegistry;
 import org.apache.atlas.utils.AtlasPerfTracer;
 import org.apache.atlas.web.util.Servlets;
 import org.apache.commons.collections.CollectionUtils;
@@ -63,13 +68,15 @@ public class DiscoveryREST {
     private final int                maxFullTextQueryLength;
     private final int                maxDslQueryLength;
 
+    private final AtlasTypeRegistry     typeRegistry;
     private final AtlasDiscoveryService atlasDiscoveryService;
 
     @Inject
-    public DiscoveryREST(AtlasDiscoveryService atlasDiscoveryService, 
Configuration configuration) {
-        this.atlasDiscoveryService = atlasDiscoveryService;
-        maxFullTextQueryLength = 
configuration.getInt(Constants.MAX_FULLTEXT_QUERY_STR_LENGTH, 4096);
-        maxDslQueryLength = 
configuration.getInt(Constants.MAX_DSL_QUERY_STR_LENGTH, 4096);
+    public DiscoveryREST(AtlasTypeRegistry typeRegistry, AtlasDiscoveryService 
atlasDiscoveryService, Configuration configuration) {
+        this.typeRegistry           = typeRegistry;
+        this.atlasDiscoveryService  = atlasDiscoveryService;
+        this.maxFullTextQueryLength = 
configuration.getInt(Constants.MAX_FULLTEXT_QUERY_STR_LENGTH, 4096);
+        this.maxDslQueryLength      = 
configuration.getInt(Constants.MAX_DSL_QUERY_STR_LENGTH, 4096);
     }
 
     /**
@@ -251,7 +258,41 @@ public class DiscoveryREST {
                         String.format("attrName : %s, attrValue: %s for 
attribute search.", attrName, attrValuePrefix));
             }
 
-            return atlasDiscoveryService.searchUsingBasicQuery(null, typeName, 
null, attrName, attrValuePrefix, true, limit, offset);
+            if (StringUtils.isEmpty(attrName)) {
+                AtlasEntityType entityType = 
typeRegistry.getEntityTypeByName(typeName);
+
+                if (entityType != null) {
+                    String[] defaultAttrNames = new String[] { 
AtlasClient.QUALIFIED_NAME, AtlasClient.NAME };
+
+                    for (String defaultAttrName : defaultAttrNames) {
+                        AtlasStructType.AtlasAttribute attribute = 
entityType.getAttribute(defaultAttrName);
+
+                        if (attribute != null) {
+                            attrName = defaultAttrName;
+
+                            break;
+                        }
+                    }
+                }
+
+                if (StringUtils.isEmpty(attrName)) {
+                    attrName = AtlasClient.QUALIFIED_NAME;
+                }
+            }
+
+            SearchParameters searchParams = new SearchParameters();
+            FilterCriteria   attrFilter   = new FilterCriteria();
+
+            attrFilter.setAttributeName(StringUtils.isEmpty(attrName) ? 
AtlasClient.QUALIFIED_NAME : attrName);
+            attrFilter.setOperator(SearchParameters.Operator.STARTS_WITH);
+            attrFilter.setAttributeValue(attrValuePrefix);
+
+            searchParams.setTypeName(typeName);
+            searchParams.setEntityFilters(attrFilter);
+            searchParams.setOffset(offset);
+            searchParams.setLimit(limit);
+
+            return searchWithParameters(searchParams);
         } finally {
             AtlasPerfTracer.log(perf);
         }

Reply via email to