diff --git a/kamelets/extract-field-action.kamelet.yaml b/kamelets/extract-field-action.kamelet.yaml index 7cb34a483..d8a772786 100644 --- a/kamelets/extract-field-action.kamelet.yaml +++ b/kamelets/extract-field-action.kamelet.yaml @@ -71,6 +71,13 @@ spec: default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + trimField: + title: Trim Field + description: If enabled we return the Raw extracted field + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' type: object dependencies: - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.0-SNAPSHOT" @@ -92,6 +99,8 @@ spec: value: '{{headerOutputName}}' - key: strictHeaderCheck value: '{{strictHeaderCheck}}' + - key: trimField + value: '{{trimField}}' from: uri: kamelet:source steps: @@ -110,12 +119,16 @@ spec: ref: "{{extractField}}" - choice: when: - - simple: "${exchangeProperty[deserialized]} == 'true'" + - simple: "${exchangeProperty[trimField]} == 'false'" steps: - - marshal: - json: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - - set-header: - name: "Content-Type" - constant: "application/json" + - choice: + when: + - simple: "${exchangeProperty[deserialized]} == 'true'" + steps: + - marshal: + json: + library: Jackson + unmarshalType: com.fasterxml.jackson.databind.JsonNode + - set-header: + name: "Content-Type" + constant: "application/json" 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 80ca041cc..bdb636b5b 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 @@ -31,6 +31,7 @@ public class ExtractField implements Processor { String headerOutputName; boolean headerOutput; boolean strictHeaderCheck; + boolean trimField; static final String EXTRACTED_FIELD_HEADER = "CamelKameletsExtractFieldName"; @@ -64,6 +65,11 @@ public void process(Exchange ex) throws InvalidPayloadException { } else { extractToHeader(ex, body); } + if (trimField) { + ex.setProperty("trimField", "true"); + } else { + ex.setProperty("trimField", "false"); + } } private void extractToHeader(Exchange ex, Map body) { @@ -97,4 +103,8 @@ public void setHeaderOutputName(String headerOutputName) { public void setStrictHeaderCheck(boolean strictHeaderCheck) { this.strictHeaderCheck = strictHeaderCheck; } + + public void setTrimField(boolean trimField) { + this.trimField = trimField; + } } 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 7cb34a483..d8a772786 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 @@ -71,6 +71,13 @@ spec: default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + trimField: + title: Trim Field + description: If enabled we return the Raw extracted field + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' type: object dependencies: - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.0-SNAPSHOT" @@ -92,6 +99,8 @@ spec: value: '{{headerOutputName}}' - key: strictHeaderCheck value: '{{strictHeaderCheck}}' + - key: trimField + value: '{{trimField}}' from: uri: kamelet:source steps: @@ -110,12 +119,16 @@ spec: ref: "{{extractField}}" - choice: when: - - simple: "${exchangeProperty[deserialized]} == 'true'" + - simple: "${exchangeProperty[trimField]} == 'false'" steps: - - marshal: - json: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - - set-header: - name: "Content-Type" - constant: "application/json" + - choice: + when: + - simple: "${exchangeProperty[deserialized]} == 'true'" + steps: + - marshal: + json: + library: Jackson + unmarshalType: com.fasterxml.jackson.databind.JsonNode + - set-header: + name: "Content-Type" + constant: "application/json"