You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2021/06/07 11:49:27 UTC

[camel-kamelets] branch main updated (7422404 -> a0036d5)

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

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


    from 7422404  Add license header and regen
     new 908cf83  Add protobuf serdes
     new 105f180  Avoid property leak
     new a0036d5  Regen

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 ...-action.svg => protobuf-deserialize-action.svg} |  0
 ...ey-action.svg => protobuf-serialize-action.svg} |  0
 docs/modules/ROOT/nav.adoc                         |  2 ++
 ...ction.adoc => protobuf-deserialize-action.adoc} | 24 ++++++++---------
 ...-action.adoc => protobuf-serialize-action.adoc} | 24 ++++++++---------
 .../protobuf-deserialize-action.kamelet.yaml       | 28 +++++++++++++++-----
 ...yaml => protobuf-serialize-action.kamelet.yaml} | 30 ++++++++++++++++------
 library/camel-kamelets-utils/pom.xml               |  5 ++++
 ...er.java => InflightProtobufSchemaResolver.java} | 22 +++++++++-------
 ...aml => protobuf-deserialize-action.kamelet.yaml | 28 +++++++++++++++-----
 ....yaml => protobuf-serialize-action.kamelet.yaml | 30 ++++++++++++++++------
 11 files changed, 130 insertions(+), 63 deletions(-)
 copy docs/modules/ROOT/assets/images/kamelets/{value-to-key-action.svg => protobuf-deserialize-action.svg} (100%)
 copy docs/modules/ROOT/assets/images/kamelets/{value-to-key-action.svg => protobuf-serialize-action.svg} (100%)
 copy docs/modules/ROOT/pages/{extract-field-action.adoc => protobuf-deserialize-action.adoc} (55%)
 copy docs/modules/ROOT/pages/{extract-field-action.adoc => protobuf-serialize-action.adoc} (56%)
 copy json-deserialize-action.kamelet.yaml => library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml (86%)
 copy library/camel-kamelets-catalog/src/main/resources/kamelets/{json-serialize-action.kamelet.yaml => protobuf-serialize-action.kamelet.yaml} (85%)
 copy library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/{InflightAvroSchemaResolver.java => InflightProtobufSchemaResolver.java} (63%)
 copy json-deserialize-action.kamelet.yaml => protobuf-deserialize-action.kamelet.yaml (86%)
 copy library/camel-kamelets-catalog/src/main/resources/kamelets/json-serialize-action.kamelet.yaml => protobuf-serialize-action.kamelet.yaml (85%)

[camel-kamelets] 02/03: Avoid property leak

Posted by nf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 105f180de2ff0b81e856f8bcbf54bbc8ab16cc6e
Author: nicolaferraro <ni...@gmail.com>
AuthorDate: Mon Jun 7 10:26:44 2021 +0200

    Avoid property leak
---
 .../serialization/InflightProtobufSchemaResolver.java    | 16 ++++++++++++++++
 protobuf-deserialize-action.kamelet.yaml                 |  7 ++++++-
 protobuf-serialize-action.kamelet.yaml                   |  4 +++-
 3 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java
index f4d39dd..4d09f9d 100644
--- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java
+++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.camel.kamelets.utils.serialization;
 
 import java.io.IOException;
diff --git a/protobuf-deserialize-action.kamelet.yaml b/protobuf-deserialize-action.kamelet.yaml
index 212502d..490b5ea 100644
--- a/protobuf-deserialize-action.kamelet.yaml
+++ b/protobuf-deserialize-action.kamelet.yaml
@@ -32,10 +32,15 @@ spec:
     from:
       uri: kamelet:source
       steps:
+      - set-property:
+          name: schema
+          constant: "{{schema}}"
       - unmarshal:
-          protobuf: 
+          protobuf:
             library: Jackson
             unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode
             schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver"
+      - remove-property:
+          property-name: schema
       - remove-header:
           header-name: "Content-Type"
diff --git a/protobuf-serialize-action.kamelet.yaml b/protobuf-serialize-action.kamelet.yaml
index c5ce0bd..7b9a67b 100644
--- a/protobuf-serialize-action.kamelet.yaml
+++ b/protobuf-serialize-action.kamelet.yaml
@@ -36,10 +36,12 @@ spec:
           name: schema
           constant: "{{schema}}"
       - marshal:
-          protobuf: 
+          protobuf:
             library: Jackson
             unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode
             schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver"
+      - remove-property:
+          property-name: schema
       - set-header:
           name: "Content-Type"
           constant: "application/protobuf"

[camel-kamelets] 03/03: Regen

Posted by nf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit a0036d5296aff8a3745e813788dcd7928be75514
Author: nicolaferraro <ni...@gmail.com>
AuthorDate: Mon Jun 7 10:28:16 2021 +0200

    Regen
---
 .../resources/kamelets/protobuf-deserialize-action.kamelet.yaml    | 7 ++++++-
 .../main/resources/kamelets/protobuf-serialize-action.kamelet.yaml | 4 +++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml
index 212502d..490b5ea 100644
--- a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml
+++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml
@@ -32,10 +32,15 @@ spec:
     from:
       uri: kamelet:source
       steps:
+      - set-property:
+          name: schema
+          constant: "{{schema}}"
       - unmarshal:
-          protobuf: 
+          protobuf:
             library: Jackson
             unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode
             schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver"
+      - remove-property:
+          property-name: schema
       - remove-header:
           header-name: "Content-Type"
diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml
index c5ce0bd..7b9a67b 100644
--- a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml
+++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml
@@ -36,10 +36,12 @@ spec:
           name: schema
           constant: "{{schema}}"
       - marshal:
-          protobuf: 
+          protobuf:
             library: Jackson
             unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode
             schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver"
+      - remove-property:
+          property-name: schema
       - set-header:
           name: "Content-Type"
           constant: "application/protobuf"

[camel-kamelets] 01/03: Add protobuf serdes

Posted by nf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 908cf83ef755631943725e8efd7f86754ac4eeae
Author: nicolaferraro <ni...@gmail.com>
AuthorDate: Fri Jun 4 16:45:22 2021 +0200

    Add protobuf serdes
---
 .../kamelets/protobuf-deserialize-action.svg       | 59 ++++++++++++++++++
 .../images/kamelets/protobuf-serialize-action.svg  | 59 ++++++++++++++++++
 docs/modules/ROOT/nav.adoc                         |  2 +
 .../ROOT/pages/protobuf-deserialize-action.adoc    | 69 ++++++++++++++++++++++
 .../ROOT/pages/protobuf-serialize-action.adoc      | 69 ++++++++++++++++++++++
 .../protobuf-deserialize-action.kamelet.yaml       | 41 +++++++++++++
 .../protobuf-serialize-action.kamelet.yaml         | 45 ++++++++++++++
 library/camel-kamelets-utils/pom.xml               |  5 ++
 .../InflightProtobufSchemaResolver.java            | 25 ++++++++
 protobuf-deserialize-action.kamelet.yaml           | 41 +++++++++++++
 protobuf-serialize-action.kamelet.yaml             | 45 ++++++++++++++
 11 files changed, 460 insertions(+)

diff --git a/docs/modules/ROOT/assets/images/kamelets/protobuf-deserialize-action.svg b/docs/modules/ROOT/assets/images/kamelets/protobuf-deserialize-action.svg
new file mode 100644
index 0000000..fa06352
--- /dev/null
+++ b/docs/modules/ROOT/assets/images/kamelets/protobuf-deserialize-action.svg
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 -256 1792 1792"
+   id="svg3025"
+   version="1.1"
+   inkscape:version="0.48.3.1 r9886"
+   width="100%"
+   height="100%"
+   sodipodi:docname="cog_font_awesome.svg">
+  <metadata
+     id="metadata3035">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3033" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview3031"
+     showgrid="false"
+     inkscape:zoom="0.13169643"
+     inkscape:cx="896"
+     inkscape:cy="896"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg3025" />
+  <g
+     transform="matrix(1,0,0,-1,121.49153,1285.4237)"
+     id="g3027">
+    <path
+       d="m 1024,640 q 0,106 -75,181 -75,75 -181,75 -106,0 -181,-75 -75,-75 -75,-181 0,-106 75,-181 75,-75 181,-75 106,0 181,75 75,75 75,181 z m 512,109 V 527 q 0,-12 -8,-23 -8,-11 -20,-13 l -185,-28 q -19,-54 -39,-91 35,-50 107,-138 10,-12 10,-25 0,-13 -9,-23 -27,-37 -99,-108 -72,-71 -94,-71 -12,0 -26,9 l -138,108 q -44,-23 -91,-38 -16,-136 -29,-186 -7,-28 -36,-28 H 657 q -14,0 -24.5,8.5 Q 622,-111 621,-98 L 593,86 q -49,16 -90,37 L 362,16 Q 352,7 337,7 323,7 312,18 186,132 147,186 q -7 [...]
+       id="path3029"
+       inkscape:connector-curvature="0"
+       style="fill:currentColor" />
+  </g>
+</svg>
diff --git a/docs/modules/ROOT/assets/images/kamelets/protobuf-serialize-action.svg b/docs/modules/ROOT/assets/images/kamelets/protobuf-serialize-action.svg
new file mode 100644
index 0000000..fa06352
--- /dev/null
+++ b/docs/modules/ROOT/assets/images/kamelets/protobuf-serialize-action.svg
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 -256 1792 1792"
+   id="svg3025"
+   version="1.1"
+   inkscape:version="0.48.3.1 r9886"
+   width="100%"
+   height="100%"
+   sodipodi:docname="cog_font_awesome.svg">
+  <metadata
+     id="metadata3035">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3033" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview3031"
+     showgrid="false"
+     inkscape:zoom="0.13169643"
+     inkscape:cx="896"
+     inkscape:cy="896"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg3025" />
+  <g
+     transform="matrix(1,0,0,-1,121.49153,1285.4237)"
+     id="g3027">
+    <path
+       d="m 1024,640 q 0,106 -75,181 -75,75 -181,75 -106,0 -181,-75 -75,-75 -75,-181 0,-106 75,-181 75,-75 181,-75 106,0 181,75 75,75 75,181 z m 512,109 V 527 q 0,-12 -8,-23 -8,-11 -20,-13 l -185,-28 q -19,-54 -39,-91 35,-50 107,-138 10,-12 10,-25 0,-13 -9,-23 -27,-37 -99,-108 -72,-71 -94,-71 -12,0 -26,9 l -138,108 q -44,-23 -91,-38 -16,-136 -29,-186 -7,-28 -36,-28 H 657 q -14,0 -24.5,8.5 Q 622,-111 621,-98 L 593,86 q -49,16 -90,37 L 362,16 Q 352,7 337,7 323,7 312,18 186,132 147,186 q -7 [...]
+       id="path3029"
+       inkscape:connector-curvature="0"
+       style="fill:currentColor" />
+  </g>
+</svg>
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index 0c31a62..8d23d36 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -75,6 +75,8 @@
 * xref:ROOT:openai-classification-action.adoc[image:kamelets/openai-classification-action.svg[] OpenAI Classification Action]
 * xref:ROOT:openai-completion-action.adoc[image:kamelets/openai-completion-action.svg[] OpenAI Completion Action]
 * xref:ROOT:pdf-action.adoc[image:kamelets/pdf-action.svg[] PDF Action]
+* xref:ROOT:protobuf-deserialize-action.adoc[image:kamelets/protobuf-deserialize-action.svg[] Protobuf Deserialize Action]
+* xref:ROOT:protobuf-serialize-action.adoc[image:kamelets/protobuf-serialize-action.svg[] Protobuf Serialize Action]
 * xref:ROOT:rabbitmq-source.adoc[image:kamelets/rabbitmq-source.svg[] RabbitMQ Source]
 * xref:ROOT:regex-router-action.adoc[image:kamelets/regex-router-action.svg[] Regex Router Action]
 * xref:ROOT:replace-field-action.adoc[image:kamelets/replace-field-action.svg[] Replace Field Action]
diff --git a/docs/modules/ROOT/pages/protobuf-deserialize-action.adoc b/docs/modules/ROOT/pages/protobuf-deserialize-action.adoc
new file mode 100644
index 0000000..244ee29
--- /dev/null
+++ b/docs/modules/ROOT/pages/protobuf-deserialize-action.adoc
@@ -0,0 +1,69 @@
+// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
+= image:kamelets/protobuf-deserialize-action.svg[] Protobuf Deserialize Action
+
+*Provided by: "Apache Software Foundation"*
+
+*Support Level for this Kamelet is: "Preview"*
+
+Deserialize payload to Protobuf
+
+== Configuration Options
+
+The following table summarizes the configuration options available for the `protobuf-deserialize-action` Kamelet:
+[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
+|===
+| Property| Name| Description| Type| Default| Example
+| *schema {empty}* *| Schema| The Protobuf schema to use during serialization (as single-line)| string| | `"message Person { required string first = 1; required string last = 2; }"`
+|===
+
+NOTE: Fields marked with ({empty}*) are mandatory.
+
+== Usage
+
+This section summarizes how the `protobuf-deserialize-action` can be used in various contexts.
+
+=== Knative Action
+
+The `protobuf-deserialize-action` Kamelet can be used as intermediate step in a binding.
+
+.protobuf-deserialize-action-binding.yaml
+[source,yaml]
+----
+apiVersion: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+  name: protobuf-deserialize-action-binding
+spec:
+  source:
+    ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: timer-source
+    properties:
+      message: "Hello"
+  steps:
+  - ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: protobuf-deserialize-action
+    properties:
+      schema: "message Person { required string first = 1; required string last = 2; }"
+  sink:
+    ref:
+      kind: InMemoryChannel
+      apiVersion: messaging.knative.dev/v1
+      name: mychannel
+
+----
+
+Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.
+
+Save the `protobuf-deserialize-action-binding.yaml` file into your hard drive, then configure it according to your needs.
+
+You can run the action using the following command:
+
+[source,shell]
+----
+kubectl apply -f protobuf-deserialize-action-binding.yaml
+----
+// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
diff --git a/docs/modules/ROOT/pages/protobuf-serialize-action.adoc b/docs/modules/ROOT/pages/protobuf-serialize-action.adoc
new file mode 100644
index 0000000..b8d59f6
--- /dev/null
+++ b/docs/modules/ROOT/pages/protobuf-serialize-action.adoc
@@ -0,0 +1,69 @@
+// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
+= image:kamelets/protobuf-serialize-action.svg[] Protobuf Serialize Action
+
+*Provided by: "Apache Software Foundation"*
+
+*Support Level for this Kamelet is: "Preview"*
+
+Serialize payload to Protobuf
+
+== Configuration Options
+
+The following table summarizes the configuration options available for the `protobuf-serialize-action` Kamelet:
+[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
+|===
+| Property| Name| Description| Type| Default| Example
+| *schema {empty}* *| Schema| The Protobuf schema to use during serialization (as single-line)| string| | `"message Person { required string first = 1; required string last = 2; }"`
+|===
+
+NOTE: Fields marked with ({empty}*) are mandatory.
+
+== Usage
+
+This section summarizes how the `protobuf-serialize-action` can be used in various contexts.
+
+=== Knative Action
+
+The `protobuf-serialize-action` Kamelet can be used as intermediate step in a binding.
+
+.protobuf-serialize-action-binding.yaml
+[source,yaml]
+----
+apiVersion: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+  name: protobuf-serialize-action-binding
+spec:
+  source:
+    ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: timer-source
+    properties:
+      message: "Hello"
+  steps:
+  - ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: protobuf-serialize-action
+    properties:
+      schema: "message Person { required string first = 1; required string last = 2; }"
+  sink:
+    ref:
+      kind: InMemoryChannel
+      apiVersion: messaging.knative.dev/v1
+      name: mychannel
+
+----
+
+Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.
+
+Save the `protobuf-serialize-action-binding.yaml` file into your hard drive, then configure it according to your needs.
+
+You can run the action using the following command:
+
+[source,shell]
+----
+kubectl apply -f protobuf-serialize-action-binding.yaml
+----
+// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml
new file mode 100644
index 0000000..212502d
--- /dev/null
+++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml
@@ -0,0 +1,41 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: protobuf-deserialize-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Preview"
+    camel.apache.org/catalog.version: "main-SNAPSHOT"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "Protobuf Deserialize Action"
+    description: "Deserialize payload to Protobuf"
+    type: object
+    required:
+    - schema
+    properties:
+      schema:
+        title: Schema
+        description: The Protobuf schema to use during serialization (as single-line)
+        type: string
+        example: 'message Person { required string first = 1; required string last = 2; }'
+  dependencies:
+  - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+  - "camel:kamelet"
+  - "camel:core"
+  - "camel:jackson-protobuf"
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - unmarshal:
+          protobuf: 
+            library: Jackson
+            unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode
+            schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver"
+      - remove-header:
+          header-name: "Content-Type"
diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml
new file mode 100644
index 0000000..c5ce0bd
--- /dev/null
+++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml
@@ -0,0 +1,45 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: protobuf-serialize-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Preview"
+    camel.apache.org/catalog.version: "main-SNAPSHOT"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "Protobuf Serialize Action"
+    description: "Serialize payload to Protobuf"
+    type: object
+    required:
+    - schema
+    properties:
+      schema:
+        title: Schema
+        description: The Protobuf schema to use during serialization (as single-line)
+        type: string
+        example: 'message Person { required string first = 1; required string last = 2; }'
+  dependencies:
+  - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+  - "camel:kamelet"
+  - "camel:core"
+  - "camel:jackson-protobuf"
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - set-property:
+          name: schema
+          constant: "{{schema}}"
+      - marshal:
+          protobuf: 
+            library: Jackson
+            unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode
+            schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver"
+      - set-header:
+          name: "Content-Type"
+          constant: "application/protobuf"
diff --git a/library/camel-kamelets-utils/pom.xml b/library/camel-kamelets-utils/pom.xml
index 0d2041e..cb71d07 100644
--- a/library/camel-kamelets-utils/pom.xml
+++ b/library/camel-kamelets-utils/pom.xml
@@ -53,6 +53,11 @@
 
         <dependency>
             <groupId>org.apache.camel</groupId>
+            <artifactId>camel-jackson-protobuf</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-jackson</artifactId>
         </dependency>
 
diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java
new file mode 100644
index 0000000..f4d39dd
--- /dev/null
+++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java
@@ -0,0 +1,25 @@
+package org.apache.camel.kamelets.utils.serialization;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.FormatSchema;
+import com.fasterxml.jackson.dataformat.protobuf.schema.ProtobufSchema;
+import com.fasterxml.jackson.dataformat.protobuf.schema.ProtobufSchemaLoader;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.jackson.SchemaResolver;
+
+public class InflightProtobufSchemaResolver implements SchemaResolver {
+
+    @Override
+    public FormatSchema resolve(Exchange exchange) {
+        String schemaStr = (String) exchange.getProperty("schema");
+        try {
+            ProtobufSchema schema = ProtobufSchemaLoader.std.parse(schemaStr);
+            return schema;
+        } catch(IOException e) {
+            throw new RuntimeCamelException("Cannot parse protobuf schema", e);
+        }
+    }
+}
diff --git a/protobuf-deserialize-action.kamelet.yaml b/protobuf-deserialize-action.kamelet.yaml
new file mode 100644
index 0000000..212502d
--- /dev/null
+++ b/protobuf-deserialize-action.kamelet.yaml
@@ -0,0 +1,41 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: protobuf-deserialize-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Preview"
+    camel.apache.org/catalog.version: "main-SNAPSHOT"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "Protobuf Deserialize Action"
+    description: "Deserialize payload to Protobuf"
+    type: object
+    required:
+    - schema
+    properties:
+      schema:
+        title: Schema
+        description: The Protobuf schema to use during serialization (as single-line)
+        type: string
+        example: 'message Person { required string first = 1; required string last = 2; }'
+  dependencies:
+  - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+  - "camel:kamelet"
+  - "camel:core"
+  - "camel:jackson-protobuf"
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - unmarshal:
+          protobuf: 
+            library: Jackson
+            unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode
+            schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver"
+      - remove-header:
+          header-name: "Content-Type"
diff --git a/protobuf-serialize-action.kamelet.yaml b/protobuf-serialize-action.kamelet.yaml
new file mode 100644
index 0000000..c5ce0bd
--- /dev/null
+++ b/protobuf-serialize-action.kamelet.yaml
@@ -0,0 +1,45 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: protobuf-serialize-action
+  annotations:
+    camel.apache.org/kamelet.support.level: "Preview"
+    camel.apache.org/catalog.version: "main-SNAPSHOT"
+    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+    camel.apache.org/kamelet.group: "Actions"
+  labels:
+    camel.apache.org/kamelet.type: "action"
+spec:
+  definition:
+    title: "Protobuf Serialize Action"
+    description: "Serialize payload to Protobuf"
+    type: object
+    required:
+    - schema
+    properties:
+      schema:
+        title: Schema
+        description: The Protobuf schema to use during serialization (as single-line)
+        type: string
+        example: 'message Person { required string first = 1; required string last = 2; }'
+  dependencies:
+  - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"
+  - "camel:kamelet"
+  - "camel:core"
+  - "camel:jackson-protobuf"
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - set-property:
+          name: schema
+          constant: "{{schema}}"
+      - marshal:
+          protobuf: 
+            library: Jackson
+            unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode
+            schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver"
+      - set-header:
+          name: "Content-Type"
+          constant: "application/protobuf"