This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git


The following commit(s) were added to refs/heads/main by this push:
     new 3d42770  Replace Field: Set JsonNode as expected input and output
3d42770 is described below

commit 3d427706480ae7604056dd74d8643cd6a6decf81
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Thu May 6 18:27:33 2021 +0200

    Replace Field: Set JsonNode as expected input and output
---
 .../apache/camel/kamelets/utils/transform/ReplaceField.java   | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git 
a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ReplaceField.java
 
b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ReplaceField.java
index 2ea2ed5..55c1586 100644
--- 
a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ReplaceField.java
+++ 
b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ReplaceField.java
@@ -16,6 +16,9 @@
  */
 package org.apache.camel.kamelets.utils.transform;
 
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangeProperty;
 import org.apache.camel.InvalidPayloadException;
@@ -31,10 +34,12 @@ import java.util.stream.Collectors;
 public class ReplaceField {
 
     public Map<?, ?> process(@ExchangeProperty("enabled") String enabled, 
@ExchangeProperty("disabled") String disabled, @ExchangeProperty("renames") 
String renames,Exchange ex) throws InvalidPayloadException {
+        ObjectMapper mapper = new ObjectMapper();
         List<String> enabledFields = new ArrayList<>();
         List<String> disabledFields = new ArrayList<>();
         List<String> renameFields = new ArrayList<>();
-        Map<Object, Object> body = ex.getMessage().getBody(Map.class);
+        JsonNode jsonNodeBody = ex.getMessage().getBody(JsonNode.class);
+        Map<Object, Object> body = mapper.convertValue(jsonNodeBody, new 
TypeReference<Map<Object, Object>>(){});
         if (body == null) {
             String val = ex.getMessage().getMandatoryBody(String.class);
             body = new HashMap<>();
@@ -62,9 +67,9 @@ public class ReplaceField {
             }
         }
         if (!updatedBody.isEmpty()) {
-            return updatedBody;
+            return mapper.valueToTree(updatedBody);
         } else {
-            return body;
+            return mapper.valueToTree(body);
         }
     }
 

Reply via email to