From 24eec27c9e67f264c378302f49ce9bec9e8e9b60 Mon Sep 17 00:00:00 2001 From: Andy Kwok Date: Wed, 5 Feb 2025 15:43:11 -0800 Subject: [PATCH] Update style Signed-off-by: Andy Kwok --- .../main/java/org/opensearch/sql/utils/JsonUtils.java | 11 ++++++++--- .../sql/expression/json/JsonFunctionsTest.java | 8 +++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/opensearch/sql/utils/JsonUtils.java b/core/src/main/java/org/opensearch/sql/utils/JsonUtils.java index dee4c5b167..f0915d6527 100644 --- a/core/src/main/java/org/opensearch/sql/utils/JsonUtils.java +++ b/core/src/main/java/org/opensearch/sql/utils/JsonUtils.java @@ -161,15 +161,20 @@ public static ExprValue setJson(ExprValue json, ExprValue path, ExprValue valueT if (((List) readResult).isEmpty()) { docContext.add(pathUnquoted, valueUnquoted).jsonString(); } else { - // New element in the array. docContext.set(pathUnquoted, valueUnquoted).jsonString(); } } return new ExprStringValue(docContext.jsonString()); + } catch (InvalidPathException e) { + final String errorFormat = "JSON path '%s' is not valid. Error details: %s"; + throw new SemanticCheckException(String.format(errorFormat, path, e.getMessage()), e); + + } catch (InvalidJsonException e) { + final String errorFormat = "JSON object '%s' is not valid. Error details: %s"; + throw new SemanticCheckException(String.format(errorFormat, json, e.getMessage()), e); + } catch (InvalidModificationException - | InvalidJsonException - | InvalidPathException | IllegalArgumentException | UnsupportedOperationException ex) { return LITERAL_NULL; diff --git a/core/src/test/java/org/opensearch/sql/expression/json/JsonFunctionsTest.java b/core/src/test/java/org/opensearch/sql/expression/json/JsonFunctionsTest.java index 2a33a4457d..eba85782bd 100644 --- a/core/src/test/java/org/opensearch/sql/expression/json/JsonFunctionsTest.java +++ b/core/src/test/java/org/opensearch/sql/expression/json/JsonFunctionsTest.java @@ -323,8 +323,14 @@ void json_set_insert_invalid_path() { DSL.literal("{\"members\":[{\"name\":\"alice\"}]}"), DSL.literal("$$$$$$$$$"), DSL.literal("18")); + assertThrows(SemanticCheckException.class, () -> functionExpression.valueOf()); + } - assertEquals(LITERAL_NULL, functionExpression.valueOf()); + @Test + void json_set_insert_invalid_jsonObject() { + FunctionExpression functionExpression = + DSL.jsonSet(DSL.literal("[xxxx}}}}}"), DSL.literal("$"), DSL.literal("18")); + assertThrows(SemanticCheckException.class, () -> functionExpression.valueOf()); } @Test