-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CMLK-2007: Add resolve-pojo-schema-action Kamelet
- Add Kamelet as "preview" - Add some YAKS E2E test for Avro and Protobuf serialization/deserialization
- Loading branch information
1 parent
3cca7b1
commit 0e81579
Showing
27 changed files
with
1,012 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
59 changes: 59 additions & 0 deletions
59
docs/modules/ROOT/assets/images/kamelets/resolve-pojo-schema-action.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
159 changes: 159 additions & 0 deletions
159
docs/modules/ROOT/pages/resolve-pojo-schema-action.adoc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT | ||
|
||
= image:kamelets/resolve-pojo-schema-action.svg[] Resolve Schema Action | ||
|
||
*Provided by: "Red Hat"* | ||
|
||
Resolves schema from given mime type and payload. Sets the resolved schema, the schema type and its content class as properties for later reference. | ||
|
||
== Configuration Options | ||
|
||
The following table summarizes the configuration options available for the `resolve-pojo-schema-action` Kamelet: | ||
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] | ||
|=== | ||
| Property| Name| Description| Type| Default| Example | ||
| contentClass| Content Class| Type information of the content object. Fully qualified class name.| string| | `"org.apache.camel.content.Foo"` | ||
| mimeType| Mime Type| The mime type to determine the schema resolver implementation that should perform the operation.| string| `"application/json"`| `"application/json"` | ||
| schema| Schema| Optional schema content (as single-line, using JSON format).| string| | | ||
| targetMimeType| Target Mime Type| Additional mime type information used to determine the schema resolver. Usually only used in combination with mime type "application/x-java-object"| string| | `"application/json"` | ||
|=== | ||
|
||
NOTE: Fields marked with an asterisk ({empty}*) are mandatory. | ||
|
||
|
||
== Dependencies | ||
|
||
At runtime, the `resolve-pojo-schema-action` Kamelet relies upon the presence of the following dependencies: | ||
|
||
- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.3.0 | ||
- camel:kamelet | ||
- camel:core | ||
- camel:jackson-avro | ||
- camel:jackson-protobuf | ||
|
||
== Usage | ||
|
||
This section describes how you can use the `resolve-pojo-schema-action`. | ||
|
||
=== Knative Action | ||
|
||
You can use the `resolve-pojo-schema-action` Kamelet as an intermediate step in a Knative binding. | ||
|
||
.resolve-pojo-schema-action-binding.yaml | ||
[source,yaml] | ||
---- | ||
apiVersion: camel.apache.org/v1 | ||
kind: KameletBinding | ||
metadata: | ||
name: resolve-pojo-schema-action-binding | ||
spec: | ||
source: | ||
ref: | ||
kind: Kamelet | ||
apiVersion: camel.apache.org/v1 | ||
name: timer-source | ||
properties: | ||
message: "Hello" | ||
steps: | ||
- ref: | ||
kind: Kamelet | ||
apiVersion: camel.apache.org/v1 | ||
name: resolve-pojo-schema-action | ||
sink: | ||
ref: | ||
kind: Channel | ||
apiVersion: messaging.knative.dev/v1 | ||
name: mychannel | ||
---- | ||
|
||
==== *Prerequisite* | ||
|
||
Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. | ||
|
||
==== *Procedure for using the cluster CLI* | ||
|
||
. Save the `resolve-pojo-schema-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. | ||
|
||
. Run the action by using the following command: | ||
+ | ||
[source,shell] | ||
---- | ||
oc apply -f resolve-pojo-schema-action-binding.yaml | ||
---- | ||
|
||
==== *Procedure for using the Kamel CLI* | ||
|
||
Configure and run the action by using the following command: | ||
|
||
[source,shell] | ||
---- | ||
kamel bind timer-source?message=Hello --step resolve-pojo-schema-action channel:mychannel | ||
---- | ||
|
||
This command creates the KameletBinding in the current namespace on the cluster. | ||
|
||
=== Kafka Action | ||
|
||
You can use the `resolve-pojo-schema-action` Kamelet as an intermediate step in a Kafka binding. | ||
|
||
.resolve-pojo-schema-action-binding.yaml | ||
[source,yaml] | ||
---- | ||
apiVersion: camel.apache.org/v1 | ||
kind: KameletBinding | ||
metadata: | ||
name: resolve-pojo-schema-action-binding | ||
spec: | ||
source: | ||
ref: | ||
kind: Kamelet | ||
apiVersion: camel.apache.org/v1 | ||
name: timer-source | ||
properties: | ||
message: "Hello" | ||
steps: | ||
- ref: | ||
kind: Kamelet | ||
apiVersion: camel.apache.org/v1 | ||
name: resolve-pojo-schema-action | ||
sink: | ||
ref: | ||
kind: KafkaTopic | ||
apiVersion: kafka.strimzi.io/v1beta1 | ||
name: my-topic | ||
---- | ||
|
||
==== *Prerequisites* | ||
|
||
Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. | ||
Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. | ||
|
||
==== *Procedure for using the cluster CLI* | ||
|
||
. Save the `resolve-pojo-schema-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. | ||
|
||
. Run the action by using the following command: | ||
+ | ||
[source,shell] | ||
---- | ||
oc apply -f resolve-pojo-schema-action-binding.yaml | ||
---- | ||
|
||
==== *Procedure for using the Kamel CLI* | ||
|
||
Configure and run the action by using the following command: | ||
|
||
[source,shell] | ||
---- | ||
kamel bind timer-source?message=Hello --step resolve-pojo-schema-action kafka.strimzi.io/v1beta1:KafkaTopic:my-topic | ||
---- | ||
|
||
This command creates the KameletBinding in the current namespace on the cluster. | ||
|
||
== Kamelet source file | ||
|
||
https://github.com/openshift-integration/kamelet-catalog/blob/main/resolve-pojo-schema-action.kamelet.yaml | ||
|
||
// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT |
59 changes: 59 additions & 0 deletions
59
...amel-kamelets-catalog/src/main/resources/kamelets/resolve-pojo-schema-action.kamelet.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
apiVersion: camel.apache.org/v1 | ||
kind: Kamelet | ||
metadata: | ||
name: resolve-pojo-schema-action | ||
annotations: | ||
camel.apache.org/kamelet.support.level: "Preview" | ||
camel.apache.org/catalog.version: "2.3.0" | ||
camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" | ||
camel.apache.org/provider: "Red Hat" | ||
camel.apache.org/kamelet.group: "Actions" | ||
camel.apache.org/kamelet.namespace: "Transformation" | ||
labels: | ||
camel.apache.org/kamelet.type: "action" | ||
spec: | ||
definition: | ||
title: "Resolve Schema Action" | ||
description: "Resolves schema from given mime type and payload. Sets the resolved schema, the schema type and its content class as properties for later reference." | ||
type: object | ||
properties: | ||
mimeType: | ||
title: Mime Type | ||
description: The mime type to determine the schema resolver implementation that should perform the operation. | ||
type: string | ||
default: "application/json" | ||
example: "application/json" | ||
schema: | ||
title: Schema | ||
description: Optional schema content (as single-line, using JSON format). | ||
type: string | ||
contentClass: | ||
title: Content Class | ||
description: Type information of the content object. Fully qualified class name. | ||
type: string | ||
example: "org.apache.camel.content.Foo" | ||
targetMimeType: | ||
title: Target Mime Type | ||
description: Additional mime type information used to determine the schema resolver. Usually only used in combination with mime type "application/x-java-object" | ||
type: string | ||
example: "application/json" | ||
dependencies: | ||
- "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.3.0" | ||
- "camel:kamelet" | ||
- "camel:core" | ||
- "camel:jackson-avro" | ||
- "camel:jackson-protobuf" | ||
template: | ||
beans: | ||
- name: schemaResolver | ||
type: "#class:org.apache.camel.kamelets.utils.format.schema.DelegatingSchemaResolver" | ||
properties: | ||
mimeType: '{{mimeType}}' | ||
schema: '{{schema:}}' | ||
contentClass: '{{contentClass:}}' | ||
targetMimeType: '{{targetMimeType:}}' | ||
from: | ||
uri: "kamelet:source" | ||
steps: | ||
- process: | ||
ref: "{{schemaResolver}}" |
Oops, something went wrong.