From 71415bbb430338cafd10aa8783067bbf1ba8ac2b Mon Sep 17 00:00:00 2001 From: kkondaka <41027584+kkondaka@users.noreply.github.com> Date: Tue, 9 May 2023 15:45:20 -0700 Subject: [PATCH] Change JsonStringBuilder in JacksonEvent to be non static for ease-of-use (#2666) * Change JsonStringBuilder in JacksonEvent to be non static for ease-of-use Signed-off-by: Krishna Kondaka * Fixed to pass code coverage test Signed-off-by: Krishna Kondaka * Made JsonStringBuilder constructor private Signed-off-by: Krishna Kondaka --------- Signed-off-by: Krishna Kondaka --- .../dataprepper/model/event/Event.java | 30 +++++++++++++++++++ .../dataprepper/model/event/JacksonEvent.java | 22 +++++--------- .../model/event/JacksonEventTest.java | 5 ++-- 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/Event.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/Event.java index 22b5c5bc7a..74e2be1af2 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/Event.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/Event.java @@ -120,4 +120,34 @@ public interface Event extends Serializable { * @since 2.2 */ EventHandle getEventHandle(); + + JsonStringBuilder jsonBuilder(); + + public abstract class JsonStringBuilder { + private String tagsKey; + + /** + * @param key key to be used for tags + * @return JsonStringString with tags included + * @since 2.3 + */ + public JsonStringBuilder includeTags(String key) { + this.tagsKey = key; + return this; + } + + /** + * @return key used for tags + * @since 2.3 + */ + public String getTagsKey() { + return tagsKey; + } + + /** + * @return json string + * @since 2.3 + */ + public abstract String toJsonString(); + } } diff --git a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/JacksonEvent.java b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/JacksonEvent.java index 80b20d06be..d8ccb82c62 100644 --- a/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/JacksonEvent.java +++ b/data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/JacksonEvent.java @@ -416,8 +416,8 @@ public Builder getThis() { }; } - public static JsonStringBuilder jsonBuilder() { - return new JsonStringBuilder(); + public JsonStringBuilder jsonBuilder() { + return new JsonStringBuilder(this); } public static JacksonEvent fromEvent(final Event event) { @@ -517,25 +517,17 @@ public JacksonEvent build() { } } - public static class JsonStringBuilder { - private String tagsKey; - private JacksonEvent event; + public class JsonStringBuilder extends Event.JsonStringBuilder { + private Event event; - public JsonStringBuilder withEvent(final JacksonEvent event) { + private JsonStringBuilder(final Event event) { + checkNotNull(event, "event cannot be null"); this.event = event; - return this; - } - - public JsonStringBuilder includeTags(String key) { - tagsKey = key; - return this; } public String toJsonString() { - if (event == null) { - return null; - } final String jsonString = event.toJsonString().trim(); + final String tagsKey = getTagsKey(); if(tagsKey != null) { final JsonNode tagsNode = mapper.valueToTree(event.getMetadata().getTags()); return jsonString.substring(0, jsonString.length()-1) + ",\""+tagsKey+"\":" + tagsNode.toString()+"}"; diff --git a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/JacksonEventTest.java b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/JacksonEventTest.java index a044253ccf..4d9680d6bc 100644 --- a/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/JacksonEventTest.java +++ b/data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/JacksonEventTest.java @@ -650,9 +650,8 @@ void testJsonStringBuilder() { eventMetadata.addTag("tag1"); eventMetadata.addTag("tag2"); final String expectedJsonString = "{\"foo\":\"bar\",\"tags\":[\"tag1\",\"tag2\"]}"; - assertThat(JacksonEvent.jsonBuilder().withEvent(event).includeTags("tags").toJsonString(), equalTo(expectedJsonString)); - assertThat(JacksonEvent.jsonBuilder().withEvent(event).toJsonString(), equalTo(jsonString)); - assertThat(JacksonEvent.jsonBuilder().toJsonString(), equalTo(null)); + assertThat(event.jsonBuilder().includeTags("tags").toJsonString(), equalTo(expectedJsonString)); + assertThat(event.jsonBuilder().toJsonString(), equalTo(jsonString)); } private static Map createComplexDataMap() {