From f48cd92a6bb895c7c7bd720c562a85851ffc6c26 Mon Sep 17 00:00:00 2001 From: Owais Kazi Date: Fri, 15 Mar 2024 18:17:24 -0700 Subject: [PATCH] Use jsonB instead of jackson Signed-off-by: Owais Kazi --- build.gradle | 6 ++++-- .../flowframework/util/ParseUtils.java | 18 +++++++++++++----- .../flowframework/util/ParseUtilsTests.java | 2 +- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index e81d2b5e7..16c47ba8c 100644 --- a/build.gradle +++ b/build.gradle @@ -175,8 +175,10 @@ dependencies { implementation 'com.amazonaws:aws-encryption-sdk-java:2.4.1' implementation 'org.bouncycastle:bcprov-jdk18on:1.77' api "org.apache.httpcomponents.core5:httpcore5:5.2.2" - implementation("com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}") - implementation("com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}") + implementation "jakarta.json:jakarta.json-api:2.0.1" + implementation "jakarta.json.bind:jakarta.json.bind-api:2.0.0" + implementation ("org.eclipse:yasson:2.0.2") + // ZipArchive dependencies used for integration tests zipArchive group: 'org.opensearch.plugin', name:'opensearch-ml-plugin', version: "${opensearch_build}" diff --git a/src/main/java/org/opensearch/flowframework/util/ParseUtils.java b/src/main/java/org/opensearch/flowframework/util/ParseUtils.java index 40b4ed43e..710e006c6 100644 --- a/src/main/java/org/opensearch/flowframework/util/ParseUtils.java +++ b/src/main/java/org/opensearch/flowframework/util/ParseUtils.java @@ -9,7 +9,9 @@ package org.opensearch.flowframework.util; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.json.bind.Jsonb; +import jakarta.json.bind.JsonbBuilder; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -416,10 +418,16 @@ public static Object conditionallySubstitute(Object value, Map map) throws JsonProcessingException { - // Convert the map to a JSON string - String mappedString = mapper.writeValueAsString(map); - return mappedString; + public static String parseArbitraryStringToObjectMapToString(Map map) throws Exception { + Jsonb jsonb = JsonbBuilder.create(); + try { + // Convert the map to a JSON string + String jsonString = jsonb.toJson(map); + return jsonString; + } finally { + // Close the Jsonb instance + jsonb.close(); + } } /** diff --git a/src/test/java/org/opensearch/flowframework/util/ParseUtilsTests.java b/src/test/java/org/opensearch/flowframework/util/ParseUtilsTests.java index 92406b3e7..7ece1e463 100644 --- a/src/test/java/org/opensearch/flowframework/util/ParseUtilsTests.java +++ b/src/test/java/org/opensearch/flowframework/util/ParseUtilsTests.java @@ -84,7 +84,7 @@ public void testBuildAndParseStringToStringMap() throws IOException { assertEquals(stringMap.get("one"), parsedMap.get("one")); } - public void testParseArbitraryStringToObjectMapToString() throws IOException { + public void testParseArbitraryStringToObjectMapToString() throws Exception { Map map = Map.ofEntries(Map.entry("test-1", Map.of("test-1", "test-1"))); String parsedMap = ParseUtils.parseArbitraryStringToObjectMapToString(map); assertEquals("{\"test-1\":{\"test-1\":\"test-1\"}}", parsedMap);