From ca29ea2ba755f115aca39245d9e8dfeb0dfd4d43 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Wed, 23 Aug 2023 13:45:05 +0000 Subject: let values under "input" through as unparsed strings --- .../com/yahoo/search/handler/Json2SingleLevelMap.java | 2 +- .../yahoo/search/handler/JSONSearchHandlerTestCase.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'container-search') 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 @@ -306,6 +306,21 @@ public class JSONSearchHandlerTestCase { return new RequestHandlerTestDriver(newSearchHandler); } + @Test + void testInputParameters() throws IOException { + String json = """ + { + "input": { + "query(q_category)": { "Tablet Keyboard Cases": 42.5 }, + "query(q_vector)": [ 1, 2.5, 3 ] + } + } + """; + Map 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(); -- cgit v1.2.3