Repository: atlas
Updated Branches:
  refs/heads/master 1ff791cfc -> 3f330194c


ATLAS-2321: fix V1 REST API for search to correctly handle empty results (#2)


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

Branch: refs/heads/master
Commit: 3f330194c765cd0fef7e894397ebe9bd2aa5b247
Parents: 3815933
Author: Madhan Neethiraj <mad...@apache.org>
Authored: Thu Jan 4 13:21:47 2018 -0800
Committer: Madhan Neethiraj <mad...@apache.org>
Committed: Thu Jan 4 14:15:43 2018 -0800

----------------------------------------------------------------------
 .../web/resources/MetadataDiscoveryResource.java | 19 ++++---------------
 1 file changed, 4 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/3f330194/webapp/src/main/java/org/apache/atlas/web/resources/MetadataDiscoveryResource.java
----------------------------------------------------------------------
diff --git 
a/webapp/src/main/java/org/apache/atlas/web/resources/MetadataDiscoveryResource.java
 
b/webapp/src/main/java/org/apache/atlas/web/resources/MetadataDiscoveryResource.java
index d8f3df3..252cc0e 100755
--- 
a/webapp/src/main/java/org/apache/atlas/web/resources/MetadataDiscoveryResource.java
+++ 
b/webapp/src/main/java/org/apache/atlas/web/resources/MetadataDiscoveryResource.java
@@ -23,7 +23,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.base.Preconditions;
 import org.apache.atlas.AtlasClient;
 import org.apache.atlas.AtlasConfiguration;
-import org.apache.atlas.classification.InterfaceAudience;
 import org.apache.atlas.discovery.AtlasDiscoveryService;
 import org.apache.atlas.model.discovery.AtlasSearchResult;
 import org.apache.atlas.query.QueryParams;
@@ -49,9 +48,6 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Response;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
 
 /**
  * Jersey Resource for metadata operations.
@@ -65,13 +61,9 @@ public class MetadataDiscoveryResource {
     private static final Logger LOG = 
LoggerFactory.getLogger(MetadataDiscoveryResource.class);
     private static final Logger PERF_LOG = 
AtlasPerfTracer.getPerfLogger("rest.MetadataDiscoveryResource");
     private static final String QUERY_TYPE_DSL = "dsl";
-    private static final String QUERY_TYPE_GREMLIN = "gremlin";
     private static final String QUERY_TYPE_FULLTEXT = "full-text";
     private static final String LIMIT_OFFSET_DEFAULT = "-1";
 
-    private final  boolean       gremlinSearchEnabled;
-    private static Configuration applicationProperties          = null;
-    private static final String  ENABLE_GREMLIN_SEARCH_PROPERTY = 
"atlas.search.gremlin.enable";
     private final AtlasDiscoveryService atlasDiscoveryService;
 
     /**
@@ -83,8 +75,6 @@ public class MetadataDiscoveryResource {
     @Inject
     public MetadataDiscoveryResource(AtlasDiscoveryService 
atlasDiscoveryService, Configuration configuration) {
         this.atlasDiscoveryService = atlasDiscoveryService;
-        applicationProperties  = configuration;
-        gremlinSearchEnabled   = applicationProperties != null && 
applicationProperties.getBoolean(ENABLE_GREMLIN_SEARCH_PROPERTY, false);
     }
 
     /**
@@ -156,7 +146,7 @@ public class MetadataDiscoveryResource {
             dslQuery = ParamChecker.notEmpty(dslQuery, "dslQuery cannot be 
null");
             QueryParams queryParams = validateQueryParams(limit, offset);
             AtlasSearchResult result = 
atlasDiscoveryService.searchUsingDslQuery(dslQuery, queryParams.limit(), 
queryParams.offset());
-            final String jsonResultStr = 
AtlasType.toJson(result.getEntities());
+            final String jsonResultStr = result.getEntities() == null ? null : 
AtlasType.toJson(result.getEntities());
 
             ObjectNode response = new 
DSLJSONResponseBuilder().results(jsonResultStr).query(dslQuery).build();
 
@@ -229,10 +219,9 @@ public class MetadataDiscoveryResource {
             query = ParamChecker.notEmpty(query, "query cannot be null or 
empty");
             QueryParams queryParams = validateQueryParams(limit, offset);
             AtlasSearchResult result = 
atlasDiscoveryService.searchUsingFullTextQuery(query, false, 
queryParams.limit(), queryParams.offset());
-            final String jsonResultStr = 
AtlasType.toJson(result.getEntities());
-            ArrayNode rowsJsonArr = 
AtlasJson.parseToV1ArrayNode(jsonResultStr);
+            final String jsonResultStr = result.getFullTextResult() == null ? 
null : AtlasType.toJson(result.getFullTextResult());
 
-            ObjectNode response = new 
FullTextJSonResponseBuilder().results(rowsJsonArr).query(query).build();
+            ObjectNode response = new 
FullTextJSonResponseBuilder().results(jsonResultStr).query(query).build();
             return Response.ok(response).build();
         } catch (IllegalArgumentException e) {
             LOG.error("Unable to get entity list for query {}", query, e);
@@ -332,7 +321,7 @@ public class MetadataDiscoveryResource {
         }
 
         public FullTextJSonResponseBuilder results(String dslResults) throws 
IOException {
-            return results(AtlasJson.parseToV1ArrayNode(dslResults));
+            return results(StringUtils.isEmpty(dslResults) ? 
AtlasJson.createV1ArrayNode() : AtlasJson.parseToV1ArrayNode(dslResults));
         }
 
         public FullTextJSonResponseBuilder() {

Reply via email to