diff options
author | Henrik <henrik.hoiness@online.no> | 2018-07-30 14:08:13 +0200 |
---|---|---|
committer | Henrik <henrik.hoiness@online.no> | 2018-07-30 14:08:13 +0200 |
commit | f6cbbf8862da1ba9972cf6509c754afa4037c74d (patch) | |
tree | c2a774c28043f3a2b8a57871b5d6edb1bf0a0eac /container-search/src/main/java/com/yahoo/search/handler | |
parent | 0a5e370b59373d8147e2a8e682bc3296eec0d639 (diff) |
Solved queryProfile always being null when using JSON-query. QueryProfile was set before getting the JSON-payload with queryProfileName
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/handler')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java index 3bfaee658f9..1ca8feed451 100644 --- a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java +++ b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java @@ -283,12 +283,14 @@ public class SearchHandler extends LoggingRequestHandler { private HttpSearchResponse handleBody(HttpRequest request){ - // Find query profile - String queryProfileName = request.getProperty("queryProfile"); - CompiledQueryProfile queryProfile = queryProfileRegistry.findQueryProfile(queryProfileName); + boolean benchmarkOutput = VespaHeaders.benchmarkOutput(request); - Query query = queryFromRequest(request, queryProfile); + Query query = queryFromRequest(request); + + // Get query profile + String queryProfileName = query.getRequestMap().getOrDefault("queryProfile", null); + CompiledQueryProfile queryProfile = queryProfileRegistry.findQueryProfile(queryProfileName); boolean benchmarkCoverage = VespaHeaders.benchmarkCoverage(benchmarkOutput, request.getJDiscRequest().headers()); @@ -558,7 +560,8 @@ public class SearchHandler extends LoggingRequestHandler { return searchChainRegistry; } - private Query queryFromRequest(HttpRequest request, CompiledQueryProfile queryProfile){ + private Query queryFromRequest(HttpRequest request){ + if (request.getMethod() == com.yahoo.jdisc.http.HttpRequest.Method.POST && JSON_CONTENT_TYPE.equals(request.getHeader(com.yahoo.jdisc.http.HttpHeaders.Names.CONTENT_TYPE))) { Inspector inspector; @@ -576,10 +579,17 @@ public class SearchHandler extends LoggingRequestHandler { // Create request-mapping Map<String, String> requestMap = new HashMap<>(); createRequestMapping(inspector, requestMap, ""); + + String queryProfileName = requestMap.getOrDefault("queryProfile", null); + CompiledQueryProfile queryProfile = queryProfileRegistry.findQueryProfile(queryProfileName); + return new Query(request, requestMap, queryProfile); } else { + String queryProfileName = request.getProperty("queryProfile"); + CompiledQueryProfile queryProfile = queryProfileRegistry.findQueryProfile(queryProfileName); + return new Query(request, queryProfile); } |