From fefe26f9c521303e3e11e5772d13138e5325da7e Mon Sep 17 00:00:00 2001 From: Aravinda Baliga B <aravinda.baliga@benelog.com> Date: Mon, 6 Jan 2025 15:30:42 +0100 Subject: [PATCH] Revert "GEN-213: adding support to duplicate keys in JSON for ObjectNodePublisher." This reverts commit 487463624fcd8fd72363f9ad29d26ed75a705dea. --- .../publisher/ObjectNodePublisher.java | 6 +-- ...JsonNodeDupeFieldHandlingDeserializer.java | 46 ------------------- 2 files changed, 1 insertion(+), 51 deletions(-) delete mode 100644 src/main/java/io/openepcis/reactive/publisher/util/JsonNodeDupeFieldHandlingDeserializer.java diff --git a/src/main/java/io/openepcis/reactive/publisher/ObjectNodePublisher.java b/src/main/java/io/openepcis/reactive/publisher/ObjectNodePublisher.java index c224e68..ce609af 100644 --- a/src/main/java/io/openepcis/reactive/publisher/ObjectNodePublisher.java +++ b/src/main/java/io/openepcis/reactive/publisher/ObjectNodePublisher.java @@ -23,7 +23,6 @@ import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import java.io.IOException; @@ -36,15 +35,12 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; - -import io.openepcis.reactive.publisher.util.JsonNodeDupeFieldHandlingDeserializer; import lombok.extern.slf4j.Slf4j; @Slf4j public class ObjectNodePublisher<T extends ObjectNode> implements Publisher<T> { private static final ObjectMapper mapper = - new ObjectMapper().registerModule(new JavaTimeModule()) - .registerModule(new SimpleModule().addDeserializer(JsonNode.class, new JsonNodeDupeFieldHandlingDeserializer())); + new ObjectMapper().registerModule(new JavaTimeModule()); private static final JsonFactory jsonFactory = new JsonFactory(); private final ObjectNode header = mapper.createObjectNode(); private final JsonParser jsonParser; diff --git a/src/main/java/io/openepcis/reactive/publisher/util/JsonNodeDupeFieldHandlingDeserializer.java b/src/main/java/io/openepcis/reactive/publisher/util/JsonNodeDupeFieldHandlingDeserializer.java deleted file mode 100644 index 89dbdf2..0000000 --- a/src/main/java/io/openepcis/reactive/publisher/util/JsonNodeDupeFieldHandlingDeserializer.java +++ /dev/null @@ -1,46 +0,0 @@ -package io.openepcis.reactive.publisher.util; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.JsonNodeFactory; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Custom class that extends "JsonNodeDeserializer" to read the JSON information with duplicate keys during the deserialization of the JSON EPCIS events. - */ -@JsonDeserialize(using = JsonNodeDupeFieldHandlingDeserializer.class) -public class JsonNodeDupeFieldHandlingDeserializer extends JsonNodeDeserializer { - - @Override - protected void _handleDuplicateField( - final JsonParser p, - final DeserializationContext context, - final JsonNodeFactory nodeFactory, - final String fieldName, - final ObjectNode objectNode, - final JsonNode oldValue, - final JsonNode newValue) { - - // Prepare an ArrayNode to hold values associated with the duplicate field - ArrayNode asArrayValue; - - // If the existing value is already an array, use it directly - if (oldValue.isArray()) { - asArrayValue = (ArrayNode) oldValue; - } else { - // Otherwise, create a new ArrayNode and add the existing value to it - asArrayValue = nodeFactory.arrayNode(); - asArrayValue.add(oldValue); - } - - // Add the new value to the array - asArrayValue.add(newValue); - - // Replace the field in the ObjectNode with the updated array - objectNode.set(fieldName, asArrayValue); - } -}