summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-08-23 13:45:05 +0000
committerArne Juul <arnej@yahooinc.com>2023-08-23 13:45:05 +0000
commitca29ea2ba755f115aca39245d9e8dfeb0dfd4d43 (patch)
treec947c4a096191489b248f282ee2a9bece53dfa81 /container-search
parentf5d7c59226176a53793ea392debd399197f55689 (diff)
let values under "input" through as unparsed strings
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java15
2 files changed, 16 insertions, 1 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java b/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java
index c931c6a356f..45a0c606584 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/Json2SingleLevelMap.java
@@ -77,7 +77,7 @@ class Json2SingleLevelMap {
} else if (token == JsonToken.START_ARRAY) {
map.put(fieldName, skipChildren(parser, buf));
} else if (token == JsonToken.START_OBJECT) {
- if (fieldName.equals("select.where") || fieldName.equals("select.grouping")) {
+ if (fieldName.startsWith("input.") || fieldName.equals("select.where") || fieldName.equals("select.grouping")) {
map.put(fieldName, skipChildren(parser, buf));
} else {
parse(map, fieldName + ".");
diff --git a/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java b/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java
index 83022ccf3ff..7536a8c4914 100644
--- a/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/handler/JSONSearchHandlerTestCase.java
@@ -307,6 +307,21 @@ public class JSONSearchHandlerTestCase {
}
@Test
+ void testInputParameters() throws IOException {
+ String json = """
+ {
+ "input": {
+ "query(q_category)": { "Tablet Keyboard Cases": 42.5 },
+ "query(q_vector)": [ 1, 2.5, 3 ]
+ }
+ }
+ """;
+ Map<String, String> map = new Json2SingleLevelMap(new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8))).parse();
+ assertEquals("{ \"Tablet Keyboard Cases\": 42.5 }", map.get("input.query(q_category)"));
+ assertEquals("[ 1, 2.5, 3 ]", map.get("input.query(q_vector)"));
+ }
+
+ @Test
void testSelectParameters() throws IOException {
ObjectNode json = jsonMapper.createObjectNode();