You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2022/01/10 13:11:31 UTC

[camel-kamelets] 01/02: Extract Field Action: Add the possibility of setting the header name in case of headerOutput is true

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

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

commit 2c83271793c7689cf80e7d5053cfd0fb80347601
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Mon Jan 10 14:02:14 2022 +0100

    Extract Field Action: Add the possibility of setting the header name in case of headerOutput is true
---
 kamelets/extract-field-action.kamelet.yaml                        | 8 ++++++++
 .../org/apache/camel/kamelets/utils/transform/ExtractField.java   | 8 ++++++--
 .../src/main/resources/kamelets/extract-field-action.kamelet.yaml | 8 ++++++++
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/kamelets/extract-field-action.kamelet.yaml b/kamelets/extract-field-action.kamelet.yaml
index 416bcb3..f5e2038 100644
--- a/kamelets/extract-field-action.kamelet.yaml
+++ b/kamelets/extract-field-action.kamelet.yaml
@@ -53,6 +53,11 @@ spec:
         default: false
         x-descriptors:
         - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+      headerOutputName:
+        title: Header Output Name
+        description: A custom name for the header containing the extracted field
+        default: "none"
+        type: string
     type: object
   dependencies:
   - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
@@ -80,6 +85,9 @@ spec:
       - set-property:
           name: "headerOutput"
           constant: "{{headerOutput}}"
+      - set-property:
+          name: "headerOutputName"
+          constant: "{{headerOutputName}}"
       - bean: "org.apache.camel.kamelets.utils.transform.ExtractField"
       - choice:
           when:
diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ExtractField.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ExtractField.java
index 36d2416..fcfc675 100644
--- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ExtractField.java
+++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ExtractField.java
@@ -27,7 +27,7 @@ import java.util.Map;
 
 public class ExtractField {
 
-    public void process(@ExchangeProperty("field") String field, @ExchangeProperty("headerOutput") boolean headerOutput, Exchange ex) {
+    public void process(@ExchangeProperty("field") String field, @ExchangeProperty("headerOutput") boolean headerOutput, @ExchangeProperty("headerOutputName") String headerOutputName, Exchange ex) {
         final String EXTRACTED_FIELD_HEADER = "CamelKameletsExtractFieldName";
         ObjectMapper mapper = new ObjectMapper();
         JsonNode jsonNodeBody = ex.getMessage().getBody(JsonNode.class);
@@ -35,7 +35,11 @@ public class ExtractField {
         if (!headerOutput) {
             ex.getMessage().setBody(body.get(field));
         } else {
-            ex.getMessage().setHeader(EXTRACTED_FIELD_HEADER, body.get(field));
+            if ("none".equalsIgnoreCase(headerOutputName)) {
+                ex.getMessage().setHeader(EXTRACTED_FIELD_HEADER, body.get(field));
+            } else {
+                ex.getMessage().setHeader(headerOutputName, body.get(field));
+            }
         }
     }
 
diff --git a/library/camel-kamelets/src/main/resources/kamelets/extract-field-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/extract-field-action.kamelet.yaml
index 416bcb3..f5e2038 100644
--- a/library/camel-kamelets/src/main/resources/kamelets/extract-field-action.kamelet.yaml
+++ b/library/camel-kamelets/src/main/resources/kamelets/extract-field-action.kamelet.yaml
@@ -53,6 +53,11 @@ spec:
         default: false
         x-descriptors:
         - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
+      headerOutputName:
+        title: Header Output Name
+        description: A custom name for the header containing the extracted field
+        default: "none"
+        type: string
     type: object
   dependencies:
   - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
@@ -80,6 +85,9 @@ spec:
       - set-property:
           name: "headerOutput"
           constant: "{{headerOutput}}"
+      - set-property:
+          name: "headerOutputName"
+          constant: "{{headerOutputName}}"
       - bean: "org.apache.camel.kamelets.utils.transform.ExtractField"
       - choice:
           when: