This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 31013f0a77d Gen trans (#13128)
31013f0a77d is described below
commit 31013f0a77dba7d05c9d59a35ff400bb8c247585
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Feb 15 12:21:20 2024 +0100
Gen trans (#13128)
CAMEL-20419: Generate json metadata for @DataTypeTransformer
---
.../apache/camel/catalog/transformers.properties | 21 ++
.../transformers/application-cloudevents-json.json | 14 ++
.../catalog/transformers/application-json.json | 14 ++
.../transformers/application-octet-stream.json | 13 ++
.../transformers/application-x-java-object.json | 14 ++
.../catalog/transformers/application-x-struct.json | 14 ++
.../camel/catalog/transformers/avro-binary.json | 14 ++
.../catalog/transformers/avro-x-java-object.json | 14 ++
.../camel/catalog/transformers/avro-x-struct.json | 14 ++
.../aws-cloudtrail-application-cloudevents.json | 14 ++
.../transformers/aws2-ddb-application-json.json | 14 ++
.../aws2-s3-application-cloudevents.json | 14 ++
.../aws2-sqs-application-cloudevents.json | 14 ++
...azure-storage-blob-application-cloudevents.json | 14 ++
...zure-storage-queue-application-cloudevents.json | 14 ++
.../google-sheets-application-x-struct.json | 14 ++
.../google-storage-application-cloudevents.json | 14 ++
.../transformers/http-application-cloudevents.json | 14 ++
.../catalog/transformers/protobuf-binary.json | 14 ++
.../transformers/protobuf-x-java-object.json | 14 ++
.../catalog/transformers/protobuf-x-struct.json | 14 ++
.../camel/catalog/transformers/text-plain.json | 13 ++
.../org/apache/camel/catalog/CamelCatalog.java | 29 +++
.../catalog/CamelCatalogJSonSchemaResolver.java | 6 +
.../apache/camel/catalog/DefaultCamelCatalog.java | 33 +++
.../camel/catalog/DefaultRuntimeProvider.java | 28 +++
.../main/java/org/apache/camel/catalog/Kind.java | 1 +
.../org/apache/camel/catalog/RuntimeProvider.java | 10 +
.../camel/catalog/CamelCatalogJsonSchemaTest.java | 19 ++
.../org/apache/camel/catalog/CamelCatalogTest.java | 24 ++-
.../org/apache/camel/transformer.properties | 7 +
.../aws-cloudtrail-application-cloudevents.json | 14 ++
.../CloudtrailCloudEventDataTypeTransformer.java | 3 +-
.../org/apache/camel/transformer.properties | 7 +
.../transformer/aws2-ddb-application-json.json | 14 ++
.../ddb/transform/Ddb2JsonDataTypeTransformer.java | 3 +-
.../org/apache/camel/transformer.properties | 7 +
.../aws2-s3-application-cloudevents.json | 14 ++
.../AWS2S3CloudEventDataTypeTransformer.java | 3 +-
.../org/apache/camel/transformer.properties | 7 +
.../aws2-sqs-application-cloudevents.json | 14 ++
.../AWS2SQSCloudEventDataTypeTransformer.java | 3 +-
.../org/apache/camel/transformer.properties | 7 +
...azure-storage-blob-application-cloudevents.json | 14 ++
...reStorageBlobCloudEventDataTypeTransformer.java | 3 +-
.../org/apache/camel/transformer.properties | 7 +
...zure-storage-queue-application-cloudevents.json | 14 ++
...eStorageQueueCloudEventDataTypeTransformer.java | 3 +-
.../org/apache/camel/transformer.properties | 7 +
.../transformer/application-cloudevents-json.json | 14 ++
.../transformer/http-application-cloudevents.json | 14 ++
.../CloudEventHttpDataTypeTransformer.java | 3 +-
.../CloudEventJsonDataTypeTransformer.java | 7 +-
.../org/apache/camel/transformer.properties | 7 +
.../google-sheets-application-x-struct.json | 14 ++
.../GoogleSheetsJsonStructDataTypeTransformer.java | 59 +-----
.../org/apache/camel/transformer.properties | 7 +
.../google-storage-application-cloudevents.json | 14 ++
...GoogleStorageCloudEventDataTypeTransformer.java | 3 +-
.../org/apache/camel/transformer.properties | 7 +
.../org/apache/camel/transformer/avro-binary.json | 14 ++
.../camel/transformer/avro-x-java-object.json | 14 ++
.../apache/camel/transformer/avro-x-struct.json | 14 ++
.../component/jackson/avro/transform/Avro.java | 1 -
.../transform/AvroBinaryDataTypeTransformer.java | 3 +-
.../transform/AvroPojoDataTypeTransformer.java | 4 +-
.../jackson/avro/transform/AvroSchemaResolver.java | 1 -
.../transform/AvroStructDataTypeTransformer.java | 4 +-
.../org/apache/camel/transformer.properties | 7 +
.../apache/camel/transformer/protobuf-binary.json | 14 ++
.../camel/transformer/protobuf-x-java-object.json | 14 ++
.../camel/transformer/protobuf-x-struct.json | 14 ++
.../jackson/protobuf/transform/Protobuf.java | 1 -
.../ProtobufBinaryDataTypeTransformer.java | 4 +-
.../transform/ProtobufPojoDataTypeTransformer.java | 4 +-
.../protobuf/transform/ProtobufSchemaResolver.java | 1 -
.../ProtobufStructDataTypeTransformer.java | 4 +-
.../org/apache/camel/transformer.properties | 7 +
.../apache/camel/transformer/application-json.json | 14 ++
.../transformer/application-x-java-object.json | 14 ++
.../camel/transformer/application-x-struct.json | 14 ++
.../camel/component/jackson/transform/Json.java | 1 -
.../jackson/transform/JsonDataTypeTransformer.java | 4 +-
.../transform/JsonPojoDataTypeTransformer.java | 4 +-
.../jackson/transform/JsonSchemaResolver.java | 1 -
.../transform/JsonStructDataTypeTransformer.java | 4 +-
.../java/org/apache/camel/CatalogCamelContext.java | 8 +
.../apache/camel/catalog/JSonSchemaResolver.java | 8 +
.../org/apache/camel/spi/DataTypeTransformer.java | 5 +
.../camel/impl/engine/AbstractCamelContext.java | 16 ++
.../camel/catalog/impl/AbstractCamelCatalog.java | 10 +
.../impl/CamelContextJSonSchemaResolver.java | 10 +
.../catalog/impl/DefaultRuntimeCamelCatalog.java | 11 +
.../org/apache/camel/transformer.properties | 7 +
.../transformer/application-octet-stream.json | 13 ++
.../org/apache/camel/transformer/text-plain.json | 13 ++
.../org/apache/camel/transformer/transformers.json | 19 ++
.../camel/yaml/io/ModelJSonSchemaResolver.java | 5 +
.../dsl/jbang/core/commands/CamelJBangMain.java | 2 +
.../core/commands/catalog/CatalogBaseCommand.java | 6 +-
.../core/commands/catalog/CatalogTransformer.java | 57 +++++
.../org/apache/camel/tooling/model/JsonMapper.java | 17 ++
.../camel/tooling/model/TransformerModel.java | 40 +++-
.../maven/packaging/GenerateComponentMojo.java | 2 +
.../packaging/GenerateDataTypeTransformerMojo.java | 235 +++++++++++++++++++++
.../packaging/GenerateInvokeOnHeaderMojo.java | 2 +-
.../apache/camel/maven/packaging/GenerateMojo.java | 2 +
.../camel/maven/packaging/PrepareCatalogMojo.java | 70 +++++-
108 files changed, 1404 insertions(+), 98 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers.properties
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers.properties
new file mode 100644
index 00000000000..371ae705b6e
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers.properties
@@ -0,0 +1,21 @@
+application-cloudevents-json
+application-json
+application-octet-stream
+application-x-java-object
+application-x-struct
+avro-binary
+avro-x-java-object
+avro-x-struct
+aws-cloudtrail-application-cloudevents
+aws2-ddb-application-json
+aws2-s3-application-cloudevents
+aws2-sqs-application-cloudevents
+azure-storage-blob-application-cloudevents
+azure-storage-queue-application-cloudevents
+google-sheets-application-x-struct
+google-storage-application-cloudevents
+http-application-cloudevents
+protobuf-binary
+protobuf-x-java-object
+protobuf-x-struct
+text-plain
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-cloudevents-json.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-cloudevents-json.json
new file mode 100644
index 00000000000..99708b3f260
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-cloudevents-json.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "application-cloudevents+json",
+ "title": "Application Cloudevents+json",
+ "description": "Adds default CloudEvent (JSon binding) headers to the
Camel message (such as content-type, event source, event type etc.)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.cloudevents.transformer.CloudEventJsonDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-cloudevents",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-json.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-json.json
new file mode 100644
index 00000000000..9ceb56c441c
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-json.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "application-json",
+ "title": "Application Json",
+ "description": "Transforms from JSon to binary (byte array) using Jackson",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.transform.JsonDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-octet-stream.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-octet-stream.json
new file mode 100644
index 00000000000..9eb3b79fbbb
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-octet-stream.json
@@ -0,0 +1,13 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "application-octet-stream",
+ "title": "Application Octet Stream",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.processor.transformer.ByteArrayDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-core-processor",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-x-java-object.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-x-java-object.json
new file mode 100644
index 00000000000..f8cf2821393
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-x-java-object.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "application-x-java-object",
+ "title": "Application X Java Object",
+ "description": "Transforms from JSon to Java object using Jackson
(supports content schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.transform.JsonPojoDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-x-struct.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-x-struct.json
new file mode 100644
index 00000000000..9a25ad645e6
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/application-x-struct.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "application-x-struct",
+ "title": "Application X Struct",
+ "description": "Transforms to generic JSonNode using Jackson",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.transform.JsonStructDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/avro-binary.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/avro-binary.json
new file mode 100644
index 00000000000..e5d97cb20c5
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/avro-binary.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "avro-binary",
+ "title": "Avro Binary",
+ "description": "Transforms from JSon to binary (byte array) using Jackson
Avro (supports Avro schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.avro.transform.AvroBinaryDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-avro",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/avro-x-java-object.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/avro-x-java-object.json
new file mode 100644
index 00000000000..5b3b8ef8673
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/avro-x-java-object.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "avro-x-java-object",
+ "title": "Avro X Java Object",
+ "description": "Transforms from JSon to Java object using Jackson Avro
(supports content schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.avro.transform.AvroPojoDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-avro",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/avro-x-struct.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/avro-x-struct.json
new file mode 100644
index 00000000000..358a934a48a
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/avro-x-struct.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "avro-x-struct",
+ "title": "Avro X Struct",
+ "description": "Transforms to generic JSonNode using Jackson Avro
(supports content schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.avro.transform.AvroStructDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-avro",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws-cloudtrail-application-cloudevents.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws-cloudtrail-application-cloudevents.json
new file mode 100644
index 00000000000..74be5a728f1
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws-cloudtrail-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "aws-cloudtrail:application-cloudevents",
+ "title": "Aws Cloudtrail (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with AWS
Cloudtrail lookup events response details",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.aws.cloudtrail.transform.CloudtrailCloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-aws-cloudtrail",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws2-ddb-application-json.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws2-ddb-application-json.json
new file mode 100644
index 00000000000..af1ef6fdbff
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws2-ddb-application-json.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "aws2-ddb:application-json",
+ "title": "Aws2 Ddb (Application Json)",
+ "description": "Prepares the message to perform a DynamoDB operation with
the aws2-ddb component",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.aws2.ddb.transform.Ddb2JsonDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-aws2-ddb",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws2-s3-application-cloudevents.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws2-s3-application-cloudevents.json
new file mode 100644
index 00000000000..9b85eae2df7
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws2-s3-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "aws2-s3:application-cloudevents",
+ "title": "Aws2 S3 (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with AWS S3
get object response details",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.aws2.s3.transform.AWS2S3CloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-aws2-s3",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws2-sqs-application-cloudevents.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws2-sqs-application-cloudevents.json
new file mode 100644
index 00000000000..75b568d7c8c
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/aws2-sqs-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "aws2-sqs:application-cloudevents",
+ "title": "Aws2 Sqs (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with AWS SQS
receive message details",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.aws2.sqs.transform.AWS2SQSCloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-aws2-sqs",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/azure-storage-blob-application-cloudevents.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/azure-storage-blob-application-cloudevents.json
new file mode 100644
index 00000000000..908f09cb1a8
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/azure-storage-blob-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "azure-storage-blob:application-cloudevents",
+ "title": "Azure Storage Blob (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with Azure
Store Blob get blob information",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.azure.storage.blob.transform.AzureStorageBlobCloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-azure-storage-blob",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/azure-storage-queue-application-cloudevents.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/azure-storage-queue-application-cloudevents.json
new file mode 100644
index 00000000000..29bed1b3341
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/azure-storage-queue-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "azure-storage-queue:application-cloudevents",
+ "title": "Azure Storage Queue (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with Azure
Storage Queue receive message information",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.azure.storage.queue.transform.AzureStorageQueueCloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-azure-storage-queue",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/google-sheets-application-x-struct.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/google-sheets-application-x-struct.json
new file mode 100644
index 00000000000..d237393e64e
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/google-sheets-application-x-struct.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "google-sheets:application-x-struct",
+ "title": "Google Sheets (Application X Struct)",
+ "description": "Transforms to\/from JSon data and Google Sheets ValueRange
object",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.google.sheets.transform.GoogleSheetsJsonStructDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-google-sheets",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/google-storage-application-cloudevents.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/google-storage-application-cloudevents.json
new file mode 100644
index 00000000000..250592b78c3
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/google-storage-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "google-storage:application-cloudevents",
+ "title": "Google Storage (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with Google
Storage downloadTo response information",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.google.storage.transform.GoogleStorageCloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-google-storage",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/http-application-cloudevents.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/http-application-cloudevents.json
new file mode 100644
index 00000000000..b9acfc98780
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/http-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "http:application-cloudevents",
+ "title": "Http (Application Cloudevents)",
+ "description": "Adds default CloudEvent (HTTP binding) headers to the
Camel message (such as content-type, event source, event type etc.)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.cloudevents.transformer.CloudEventHttpDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-cloudevents",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/protobuf-binary.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/protobuf-binary.json
new file mode 100644
index 00000000000..6111dcaa843
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/protobuf-binary.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "protobuf-binary",
+ "title": "Protobuf Binary",
+ "description": "Transforms from JSon to binary (byte array) using Jackson
Protobuf (supports Protobuf schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.protobuf.transform.ProtobufBinaryDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-protobuf",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/protobuf-x-java-object.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/protobuf-x-java-object.json
new file mode 100644
index 00000000000..9d22cd0808d
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/protobuf-x-java-object.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "protobuf-x-java-object",
+ "title": "Protobuf X Java Object",
+ "description": "Transforms from JSon to Java object using Jackson Protobuf
(supports content schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.protobuf.transform.ProtobufPojoDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-protobuf",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/protobuf-x-struct.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/protobuf-x-struct.json
new file mode 100644
index 00000000000..86bc82de954
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/protobuf-x-struct.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "protobuf-x-struct",
+ "title": "Protobuf X Struct",
+ "description": "Transforms to generic JSonNode using Jackson Protobuf
(supports content schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.protobuf.transform.ProtobufStructDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-protobuf",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/text-plain.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/text-plain.json
new file mode 100644
index 00000000000..d48faddafc9
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/text-plain.json
@@ -0,0 +1,13 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "text-plain",
+ "title": "Text Plain",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.processor.transformer.StringDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-core-processor",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
index 3b5fefe5ac3..ec167d2490e 100644
---
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
+++
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
@@ -31,6 +31,7 @@ import org.apache.camel.tooling.model.LanguageModel;
import org.apache.camel.tooling.model.MainModel;
import org.apache.camel.tooling.model.OtherModel;
import org.apache.camel.tooling.model.ReleaseModel;
+import org.apache.camel.tooling.model.TransformerModel;
/**
* Catalog of components, data formats, models (EIPs), languages, and more
from this Apache Camel release.
@@ -192,6 +193,11 @@ public interface CamelCatalog {
*/
List<String> findLanguageNames();
+ /**
+ * Find all the transformer names from the Camel catalog
+ */
+ List<String> findTransformerNames();
+
/**
* Find all the model names from the Camel catalog
*/
@@ -214,6 +220,8 @@ public interface CamelCatalog {
return findDataFormatNames();
case language:
return findLanguageNames();
+ case transformer:
+ return findTransformerNames();
case other:
return findOtherNames();
case eip:
@@ -272,6 +280,14 @@ public interface CamelCatalog {
*/
String languageJSonSchema(String name);
+ /**
+ * Returns the transformer information as JSON format.
+ *
+ * @param name the transformer name
+ * @return transformer details in JSon
+ */
+ String transformerJSonSchema(String name);
+
/**
* Returns the other (miscellaneous) information as JSON format.
*
@@ -487,6 +503,11 @@ public interface CamelCatalog {
*/
String listLanguagesAsJson();
+ /**
+ * Lists all the transformers summary details in JSon
+ */
+ String listTransformersAsJson();
+
/**
* Lists all the models (EIPs) summary details in JSon
*/
@@ -520,6 +541,12 @@ public interface CamelCatalog {
*/
LanguageModel languageModel(String name);
+ /**
+ * @param name the transformer name to look up
+ * @return the requested transformer or {@code null} in case it is
not available in this {@link CamelCatalog}
+ */
+ TransformerModel transformerModel(String name);
+
/**
* @param name the other name to look up
* @return the requested other or {@code null} in case it is not
available in this {@link CamelCatalog}
@@ -552,6 +579,8 @@ public interface CamelCatalog {
return dataFormatModel(name);
case language:
return languageModel(name);
+ case transformer:
+ return transformerModel(name);
case other:
return otherModel(name);
case eip:
diff --git
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
index b9c25c0c8f8..ca2d2994081 100644
---
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
+++
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
@@ -108,6 +108,12 @@ public class CamelCatalogJSonSchemaResolver implements
JSonSchemaResolver {
return loadResourceFromVersionManager(file);
}
+ @Override
+ public String getTransformerJSonSchema(String name) {
+ final String file =
camelCatalog.getRuntimeProvider().getTransformerJSonSchemaDirectory() + "/" +
name + EXTENSION;
+ return loadResourceFromVersionManager(file);
+ }
+
@Override
public String getModelJSonSchema(String name) {
final String file = MODEL_DIR + "/" + name + EXTENSION;
diff --git
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
index 81fea9dd310..3fbca05ec17 100644
---
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
+++
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
@@ -44,6 +44,7 @@ import org.apache.camel.tooling.model.LanguageModel;
import org.apache.camel.tooling.model.MainModel;
import org.apache.camel.tooling.model.OtherModel;
import org.apache.camel.tooling.model.ReleaseModel;
+import org.apache.camel.tooling.model.TransformerModel;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
import org.apache.camel.util.json.Jsoner;
@@ -62,7 +63,9 @@ public class DefaultCamelCatalog extends AbstractCamelCatalog
implements CamelCa
public static final String FIND_DATA_FORMAT_NAMES = "findDataFormatNames";
public static final String LIST_DATA_FORMATS_AS_JSON =
"listDataFormatsAsJson";
public static final String FIND_LANGUAGE_NAMES = "findLanguageNames";
+ public static final String FIND_TRANSFORMER_NAMES = "findTransformerNames";
public static final String LIST_LANGUAGES_AS_JSON = "listLanguagesAsJson";
+ public static final String LIST_TRANSFORMERS_AS_JSON =
"listTransformersAsJson";
private final VersionHelper version = new VersionHelper();
@@ -223,6 +226,11 @@ public class DefaultCamelCatalog extends
AbstractCamelCatalog implements CamelCa
return cache(FIND_LANGUAGE_NAMES, runtimeProvider::findLanguageNames);
}
+ @Override
+ public List<String> findTransformerNames() {
+ return cache(FIND_TRANSFORMER_NAMES,
runtimeProvider::findTransformerNames);
+ }
+
@Override
public List<String> findModelNames() {
return cache("findModelNames", () -> {
@@ -328,11 +336,21 @@ public class DefaultCamelCatalog extends
AbstractCamelCatalog implements CamelCa
return cache("language-" + name, name, super::languageJSonSchema);
}
+ @Override
+ public String transformerJSonSchema(String name) {
+ return cache("transformer-" + name, name,
super::transformerJSonSchema);
+ }
+
@Override
public LanguageModel languageModel(String name) {
return cache("language-model-" + name, name, super::languageModel);
}
+ @Override
+ public TransformerModel transformerModel(String name) {
+ return cache("transformer-model-" + name, name,
super::transformerModel);
+ }
+
@Override
public String otherJSonSchema(String name) {
return cache("other-" + name, name, super::otherJSonSchema);
@@ -429,6 +447,15 @@ public class DefaultCamelCatalog extends
AbstractCamelCatalog implements CamelCa
.toList()));
}
+ @Override
+ public String listTransformersAsJson() {
+ return cache(LIST_TRANSFORMERS_AS_JSON, () ->
JsonMapper.serialize(findTransformerNames().stream()
+ .map(this::transformerJSonSchema)
+ .map(JsonMapper::deserialize)
+ .map(o -> o.get("transformer"))
+ .toList()));
+ }
+
@Override
public String listModelsAsJson() {
return cache("listModelsAsJson", () ->
JsonMapper.serialize(findModelNames().stream()
@@ -487,6 +514,12 @@ public class DefaultCamelCatalog extends
AbstractCamelCatalog implements CamelCa
return am;
}
}
+ for (String name : findTransformerNames()) {
+ ArtifactModel<?> am = transformerModel(name);
+ if (matchArtifact(am, groupId, artifactId, version)) {
+ return am;
+ }
+ }
return null;
}
diff --git
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java
index c7c9ada2018..308b0de64f9 100644
---
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java
+++
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java
@@ -28,10 +28,12 @@ public class DefaultRuntimeProvider implements
RuntimeProvider {
private static final String COMPONENT_DIR =
"org/apache/camel/catalog/components";
private static final String DATAFORMAT_DIR =
"org/apache/camel/catalog/dataformats";
private static final String LANGUAGE_DIR =
"org/apache/camel/catalog/languages";
+ private static final String TRANSFORMER_DIR =
"org/apache/camel/catalog/transformers";
private static final String OTHER_DIR = "org/apache/camel/catalog/others";
private static final String COMPONENTS_CATALOG =
"org/apache/camel/catalog/components.properties";
private static final String DATA_FORMATS_CATALOG =
"org/apache/camel/catalog/dataformats.properties";
private static final String LANGUAGE_CATALOG =
"org/apache/camel/catalog/languages.properties";
+ private static final String TRANSFORMER_CATALOG =
"org/apache/camel/catalog/transformers.properties";
private static final String OTHER_CATALOG =
"org/apache/camel/catalog/others.properties";
private CamelCatalog camelCatalog;
@@ -83,6 +85,11 @@ public class DefaultRuntimeProvider implements
RuntimeProvider {
return LANGUAGE_DIR;
}
+ @Override
+ public String getTransformerJSonSchemaDirectory() {
+ return TRANSFORMER_DIR;
+ }
+
@Override
public String getOtherJSonSchemaDirectory() {
return OTHER_DIR;
@@ -100,6 +107,10 @@ public class DefaultRuntimeProvider implements
RuntimeProvider {
return LANGUAGE_CATALOG;
}
+ protected String getTransformerCatalog() {
+ return TRANSFORMER_CATALOG;
+ }
+
protected String getOtherCatalog() {
return OTHER_CATALOG;
}
@@ -155,6 +166,23 @@ public class DefaultRuntimeProvider implements
RuntimeProvider {
return names;
}
+ @Override
+ public List<String> findTransformerNames() {
+ List<String> names = new ArrayList<>();
+ try (InputStream is =
getCamelCatalog().getVersionManager().getResourceAsStream(getTransformerCatalog()))
{
+ if (is != null) {
+ try {
+ CatalogHelper.loadLines(is, names);
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+ } catch (IOException e1) {
+ // ignore
+ }
+ return names;
+ }
+
@Override
public List<String> findOtherNames() {
List<String> names = new ArrayList<>();
diff --git
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
index 747d7b2c980..6ca4c43b5ad 100644
--- a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
+++ b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
@@ -23,6 +23,7 @@ public enum Kind {
component,
dataformat,
language,
+ transformer,
other,
eip
}
diff --git
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java
index 7cb20d0da26..2122773f5dc 100644
---
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java
+++
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java
@@ -65,6 +65,11 @@ public interface RuntimeProvider {
*/
String getLanguageJSonSchemaDirectory();
+ /**
+ * Gets the directory where the transformer json files are stored in the
catalog JAR file
+ */
+ String getTransformerJSonSchemaDirectory();
+
/**
* Gets the directory where the other (miscellaneous) json files are
stored in the catalog JAR file
*/
@@ -85,6 +90,11 @@ public interface RuntimeProvider {
*/
List<String> findLanguageNames();
+ /**
+ * Find all the transfromer names from the Camel catalog supported by the
provider
+ */
+ List<String> findTransformerNames();
+
/**
* Find all the other (miscellaneous) names from the Camel catalog
supported by the provider
*/
diff --git
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java
index 84e58818272..bcdc8f19fc8 100644
---
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java
+++
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java
@@ -54,6 +54,10 @@ public class CamelCatalogJsonSchemaTest {
return CATALOG.findLanguageNames().stream();
}
+ static Stream<String> transformers() {
+ return CATALOG.findTransformerNames().stream();
+ }
+
static Stream<String> models() {
return CATALOG.findModelNames().stream();
}
@@ -154,6 +158,21 @@ public class CamelCatalogJsonSchemaTest {
assertTrue(tree.has("properties"), name);
}
+ @ParameterizedTest
+ @MethodSource("transformers")
+ public void testValidateJsonTransformers(String name) throws Exception {
+ String json = CATALOG.transformerJSonSchema(name);
+ LOG.info("Validating {} transformer", name);
+ LOG.debug("with JSon: {}", json);
+
+ // validate we can parse the json
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode tree = mapper.readTree(json);
+ assertNotNull(tree);
+
+ assertTrue(tree.has("transformer"), name);
+ }
+
@ParameterizedTest
@MethodSource("models")
public void testValidateJsonModels(String name) throws Exception {
diff --git
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index f4725ca3afc..7a020b5721f 100644
---
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -84,7 +84,7 @@ public class CamelCatalogTest {
assertTrue(names.contains("log"));
assertTrue(names.contains("docker"));
assertTrue(names.contains("jms"));
- // TODO: camel4 assertTrue(names.contains("activemq"));
+ assertTrue(names.contains("activemq"));
assertTrue(names.contains("zookeeper-master"));
}
@@ -127,6 +127,17 @@ public class CamelCatalogTest {
assertTrue(names.contains("hl7terser"));
}
+ @Test
+ public void testFindTransformerNames() {
+ List<String> names = catalog.findTransformerNames();
+
+ assertTrue(names.contains("application-cloudevents-json"));
+ assertTrue(names.contains("application-x-java-object"));
+ assertTrue(names.contains("aws-cloudtrail-application-cloudevents"));
+
assertTrue(names.contains("azure-storage-queue-application-cloudevents"));
+ assertTrue(names.contains("http-application-cloudevents"));
+ }
+
@Test
public void testFindModelNames() {
List<String> names = catalog.findModelNames();
@@ -868,6 +879,17 @@ public class CamelCatalogTest {
assertNotNull(tree);
}
+ @Test
+ public void testListTransformersAsJson() throws Exception {
+ String json = catalog.listTransformersAsJson();
+ assertNotNull(json);
+
+ // validate we can parse the json
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode tree = mapper.readTree(json);
+ assertNotNull(tree);
+ }
+
@Test
public void testListModelsAsJson() throws Exception {
String json = catalog.listModelsAsJson();
diff --git
a/components/camel-aws/camel-aws-cloudtrail/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-aws/camel-aws-cloudtrail/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..c576a45b018
--- /dev/null
+++
b/components/camel-aws/camel-aws-cloudtrail/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=aws-cloudtrail:application-cloudevents
+groupId=org.apache.camel
+artifactId=camel-aws-cloudtrail
+version=4.4.0-SNAPSHOT
+projectName=Camel :: AWS Cloutrail
+projectDescription=Consume Events coming from AWS Cloudtrail Service
diff --git
a/components/camel-aws/camel-aws-cloudtrail/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws-cloudtrail-application-cloudevents.json
b/components/camel-aws/camel-aws-cloudtrail/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws-cloudtrail-application-cloudevents.json
new file mode 100644
index 00000000000..74be5a728f1
--- /dev/null
+++
b/components/camel-aws/camel-aws-cloudtrail/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws-cloudtrail-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "aws-cloudtrail:application-cloudevents",
+ "title": "Aws Cloudtrail (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with AWS
Cloudtrail lookup events response details",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.aws.cloudtrail.transform.CloudtrailCloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-aws-cloudtrail",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/transform/CloudtrailCloudEventDataTypeTransformer.java
b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/transform/CloudtrailCloudEventDataTypeTransformer.java
index dbfc15a999f..1e943f0251f 100644
---
a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/transform/CloudtrailCloudEventDataTypeTransformer.java
+++
b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/transform/CloudtrailCloudEventDataTypeTransformer.java
@@ -31,7 +31,8 @@ import org.apache.camel.spi.Transformer;
* Data type transformer converts AWS Cloudtrail lookup events response to
CloudEvent v1_0 data format. The data type
* sets Camel specific CloudEvent headers with values extracted from AWS
Cloudtrail lookup events response.
*/
-@DataTypeTransformer(name = "aws-cloudtrail:application-cloudevents")
+@DataTypeTransformer(name = "aws-cloudtrail:application-cloudevents",
+ description = "Adds CloudEvent headers to the Camel message with AWS
Cloudtrail lookup events response details")
public class CloudtrailCloudEventDataTypeTransformer extends Transformer {
@Override
diff --git
a/components/camel-aws/camel-aws2-ddb/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-aws/camel-aws2-ddb/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..3005b30aa28
--- /dev/null
+++
b/components/camel-aws/camel-aws2-ddb/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=aws2-ddb:application-json
+groupId=org.apache.camel
+artifactId=camel-aws2-ddb
+version=4.4.0-SNAPSHOT
+projectName=Camel :: AWS2 DDB
+projectDescription=Store and retrieve data and events from Amazon DynamoDB
service
diff --git
a/components/camel-aws/camel-aws2-ddb/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws2-ddb-application-json.json
b/components/camel-aws/camel-aws2-ddb/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws2-ddb-application-json.json
new file mode 100644
index 00000000000..af1ef6fdbff
--- /dev/null
+++
b/components/camel-aws/camel-aws2-ddb/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws2-ddb-application-json.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "aws2-ddb:application-json",
+ "title": "Aws2 Ddb (Application Json)",
+ "description": "Prepares the message to perform a DynamoDB operation with
the aws2-ddb component",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.aws2.ddb.transform.Ddb2JsonDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-aws2-ddb",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java
b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java
index e91883a1f6e..90167c3519c 100644
---
a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java
+++
b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java
@@ -78,7 +78,8 @@ import
software.amazon.awssdk.services.dynamodb.model.ReturnValue;
* In case key and item attribute value maps are identical you can omit the
special top level properties completely. The
* transformer will map the whole Json body as is then and use it as source
for the attribute value map.
*/
-@DataTypeTransformer(name = "aws2-ddb:application-json")
+@DataTypeTransformer(name = "aws2-ddb:application-json",
+description = "Prepares the message to perform a DynamoDB operation with the
aws2-ddb component")
public class Ddb2JsonDataTypeTransformer extends Transformer {
private final JacksonDataFormat dataFormat = new
JacksonDataFormat(Json.mapper(), JsonNode.class);
diff --git
a/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..0f4d056b934
--- /dev/null
+++
b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=aws2-s3:application-cloudevents
+groupId=org.apache.camel
+artifactId=camel-aws2-s3
+version=4.4.0-SNAPSHOT
+projectName=Camel :: AWS2 S3
+projectDescription=Consume files and upload files through AWS S3 Service
diff --git
a/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws2-s3-application-cloudevents.json
b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws2-s3-application-cloudevents.json
new file mode 100644
index 00000000000..9b85eae2df7
--- /dev/null
+++
b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws2-s3-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "aws2-s3:application-cloudevents",
+ "title": "Aws2 S3 (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with AWS S3
get object response details",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.aws2.s3.transform.AWS2S3CloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-aws2-s3",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/transform/AWS2S3CloudEventDataTypeTransformer.java
b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/transform/AWS2S3CloudEventDataTypeTransformer.java
index a2840525835..eea4f345a45 100644
---
a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/transform/AWS2S3CloudEventDataTypeTransformer.java
+++
b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/transform/AWS2S3CloudEventDataTypeTransformer.java
@@ -31,7 +31,8 @@ import org.apache.camel.spi.Transformer;
* Data type transformer converts AWS S3 get object response to CloudEvent
v1_0 data format. The data type sets Camel
* specific CloudEvent headers with values extracted from AWS S3 get object
response.
*/
-@DataTypeTransformer(name = "aws2-s3:application-cloudevents")
+@DataTypeTransformer(name = "aws2-s3:application-cloudevents",
+ description = "Adds CloudEvent headers to the Camel message with AWS
S3 get object response details")
public class AWS2S3CloudEventDataTypeTransformer extends Transformer {
@Override
diff --git
a/components/camel-aws/camel-aws2-sqs/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-aws/camel-aws2-sqs/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..81f9a390c12
--- /dev/null
+++
b/components/camel-aws/camel-aws2-sqs/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=aws2-sqs:application-cloudevents
+groupId=org.apache.camel
+artifactId=camel-aws2-sqs
+version=4.4.0-SNAPSHOT
+projectName=Camel :: AWS2 SQS
+projectDescription=Consume and produce messages through AWS SQS Service
diff --git
a/components/camel-aws/camel-aws2-sqs/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws2-sqs-application-cloudevents.json
b/components/camel-aws/camel-aws2-sqs/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws2-sqs-application-cloudevents.json
new file mode 100644
index 00000000000..75b568d7c8c
--- /dev/null
+++
b/components/camel-aws/camel-aws2-sqs/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws2-sqs-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "aws2-sqs:application-cloudevents",
+ "title": "Aws2 Sqs (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with AWS SQS
receive message details",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.aws2.sqs.transform.AWS2SQSCloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-aws2-sqs",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-aws/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/transform/AWS2SQSCloudEventDataTypeTransformer.java
b/components/camel-aws/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/transform/AWS2SQSCloudEventDataTypeTransformer.java
index 65a0afc328e..e847d7a43bd 100644
---
a/components/camel-aws/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/transform/AWS2SQSCloudEventDataTypeTransformer.java
+++
b/components/camel-aws/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/transform/AWS2SQSCloudEventDataTypeTransformer.java
@@ -31,7 +31,8 @@ import org.apache.camel.spi.Transformer;
* Output data type represents AWS SQS receive Message response as CloudEvent
V1. The data type sets Camel specific
* CloudEvent headers on the exchange.
*/
-@DataTypeTransformer(name = "aws2-sqs:application-cloudevents")
+@DataTypeTransformer(name = "aws2-sqs:application-cloudevents",
+ description = "Adds CloudEvent headers to the Camel message with AWS
SQS receive message details")
public class AWS2SQSCloudEventDataTypeTransformer extends Transformer {
@Override
diff --git
a/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..5a8799b6466
--- /dev/null
+++
b/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=azure-storage-blob:application-cloudevents
+groupId=org.apache.camel
+artifactId=camel-azure-storage-blob
+version=4.4.0-SNAPSHOT
+projectName=Camel :: Azure :: Storage Blob
+projectDescription=Camel Azure Blob Storage Service Component
diff --git
a/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/services/org/apache/camel/transformer/azure-storage-blob-application-cloudevents.json
b/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/services/org/apache/camel/transformer/azure-storage-blob-application-cloudevents.json
new file mode 100644
index 00000000000..908f09cb1a8
--- /dev/null
+++
b/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/services/org/apache/camel/transformer/azure-storage-blob-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "azure-storage-blob:application-cloudevents",
+ "title": "Azure Storage Blob (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with Azure
Store Blob get blob information",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.azure.storage.blob.transform.AzureStorageBlobCloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-azure-storage-blob",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/transform/AzureStorageBlobCloudEventDataTypeTransformer.java
b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/transform/AzureStorageBlobCloudEventDataTypeTransformer.java
index 021f7c84cfa..ec1f294e461 100644
---
a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/transform/AzureStorageBlobCloudEventDataTypeTransformer.java
+++
b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/transform/AzureStorageBlobCloudEventDataTypeTransformer.java
@@ -31,7 +31,8 @@ import org.apache.camel.spi.Transformer;
* Output data type represents Azure Storage Blob get blob response as
CloudEvent V1. The data type sets Camel specific
* CloudEvent headers on the exchange.
*/
-@DataTypeTransformer(name = "azure-storage-blob:application-cloudevents")
+@DataTypeTransformer(name = "azure-storage-blob:application-cloudevents",
+ description = "Adds CloudEvent headers to the Camel message with Azure
Store Blob get blob information")
public class AzureStorageBlobCloudEventDataTypeTransformer extends Transformer
{
@Override
diff --git
a/components/camel-azure/camel-azure-storage-queue/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-azure/camel-azure-storage-queue/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..1aa249873ff
--- /dev/null
+++
b/components/camel-azure/camel-azure-storage-queue/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=azure-storage-queue:application-cloudevents
+groupId=org.apache.camel
+artifactId=camel-azure-storage-queue
+version=4.4.0-SNAPSHOT
+projectName=Camel :: Azure :: Storage Queue
+projectDescription=Camel Azure Storage Queue Service Component
diff --git
a/components/camel-azure/camel-azure-storage-queue/src/generated/resources/META-INF/services/org/apache/camel/transformer/azure-storage-queue-application-cloudevents.json
b/components/camel-azure/camel-azure-storage-queue/src/generated/resources/META-INF/services/org/apache/camel/transformer/azure-storage-queue-application-cloudevents.json
new file mode 100644
index 00000000000..29bed1b3341
--- /dev/null
+++
b/components/camel-azure/camel-azure-storage-queue/src/generated/resources/META-INF/services/org/apache/camel/transformer/azure-storage-queue-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "azure-storage-queue:application-cloudevents",
+ "title": "Azure Storage Queue (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with Azure
Storage Queue receive message information",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.azure.storage.queue.transform.AzureStorageQueueCloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-azure-storage-queue",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/transform/AzureStorageQueueCloudEventDataTypeTransformer.java
b/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/transform/AzureStorageQueueCloudEventDataTypeTransformer.java
index e5ea8fd5ae0..d8542af06ea 100644
---
a/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/transform/AzureStorageQueueCloudEventDataTypeTransformer.java
+++
b/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/transform/AzureStorageQueueCloudEventDataTypeTransformer.java
@@ -31,7 +31,8 @@ import org.apache.camel.spi.Transformer;
* Output data type represents Azure Storage Queue receive messages operation
as CloudEvent V1. The data type sets Camel
* specific CloudEvent headers on the exchange.
*/
-@DataTypeTransformer(name = "azure-storage-queue:application-cloudevents")
+@DataTypeTransformer(name = "azure-storage-queue:application-cloudevents",
+ description = "Adds CloudEvent headers to the Camel message with Azure
Storage Queue receive message information")
public class AzureStorageQueueCloudEventDataTypeTransformer extends
Transformer {
@Override
diff --git
a/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..91bf5087304
--- /dev/null
+++
b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=application-cloudevents+json http:application-cloudevents
+groupId=org.apache.camel
+artifactId=camel-cloudevents
+version=4.4.0-SNAPSHOT
+projectName=Camel :: CloudEvents
+projectDescription=Camel support for the CloudEvents specification
diff --git
a/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-cloudevents-json.json
b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-cloudevents-json.json
new file mode 100644
index 00000000000..99708b3f260
--- /dev/null
+++
b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-cloudevents-json.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "application-cloudevents+json",
+ "title": "Application Cloudevents+json",
+ "description": "Adds default CloudEvent (JSon binding) headers to the
Camel message (such as content-type, event source, event type etc.)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.cloudevents.transformer.CloudEventJsonDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-cloudevents",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer/http-application-cloudevents.json
b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer/http-application-cloudevents.json
new file mode 100644
index 00000000000..b9acfc98780
--- /dev/null
+++
b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer/http-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "http:application-cloudevents",
+ "title": "Http (Application Cloudevents)",
+ "description": "Adds default CloudEvent (HTTP binding) headers to the
Camel message (such as content-type, event source, event type etc.)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.cloudevents.transformer.CloudEventHttpDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-cloudevents",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/transformer/CloudEventHttpDataTypeTransformer.java
b/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/transformer/CloudEventHttpDataTypeTransformer.java
index c52c9af460e..bfe295f27a3 100644
---
a/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/transformer/CloudEventHttpDataTypeTransformer.java
+++
b/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/transformer/CloudEventHttpDataTypeTransformer.java
@@ -32,7 +32,8 @@ import org.apache.camel.spi.Transformer;
* headers and transforms these to Http headers according to the CloudEvents
Http binding specification. Sets default
* values for CloudEvent attributes such as the Http content type header,
event source, event type.
*/
-@DataTypeTransformer(name = "http:application-cloudevents")
+@DataTypeTransformer(name = "http:application-cloudevents",
+ description = "Adds default CloudEvent (HTTP binding) headers to the
Camel message (such as content-type, event source, event type etc.)")
public class CloudEventHttpDataTypeTransformer extends Transformer {
@Override
diff --git
a/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/transformer/CloudEventJsonDataTypeTransformer.java
b/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/transformer/CloudEventJsonDataTypeTransformer.java
index 1eef7d27fab..175687b5511 100644
---
a/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/transformer/CloudEventJsonDataTypeTransformer.java
+++
b/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/transformer/CloudEventJsonDataTypeTransformer.java
@@ -27,13 +27,15 @@ import org.apache.camel.component.cloudevents.CloudEvents;
import org.apache.camel.spi.DataType;
import org.apache.camel.spi.DataTypeTransformer;
import org.apache.camel.spi.Transformer;
+import org.apache.camel.support.MessageHelper;
/**
* Data type represents a default Camel CloudEvent V1 Json format binding. The
data type reads Camel specific CloudEvent
* headers and transforms these to a Json object representing the CloudEvents
Json format specification. Sets default
* values for CloudEvent attributes such as the Http content type header,
event source, event type.
*/
-@DataTypeTransformer(name = "application-cloudevents+json")
+@DataTypeTransformer(name = "application-cloudevents+json",
+ description = "Adds default CloudEvent (JSon binding) headers to the
Camel message (such as content-type, event source, event type etc.)")
public class CloudEventJsonDataTypeTransformer extends Transformer {
@Override
@@ -60,7 +62,8 @@ public class CloudEventJsonDataTypeTransformer extends
Transformer {
cloudEventAttributes.putIfAbsent(cloudEvent.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).json(),
cloudEvent.getEventTime(message.getExchange()));
- cloudEventAttributes.putIfAbsent("data",
message.getBody(String.class));
+ String body = MessageHelper.extractBodyAsString(message);
+ cloudEventAttributes.putIfAbsent("data", body);
cloudEventAttributes.putIfAbsent(cloudEvent.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_DATA_CONTENT_TYPE).json(),
headers.getOrDefault(CloudEvent.CAMEL_CLOUD_EVENT_CONTENT_TYPE,
"application/json"));
diff --git
a/components/camel-google/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-google/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..679d3b9b21e
--- /dev/null
+++
b/components/camel-google/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=google-sheets:application-x-struct
+groupId=org.apache.camel
+artifactId=camel-google-sheets
+version=4.4.0-SNAPSHOT
+projectName=Camel :: Google :: Sheets
+projectDescription=Camel Component for Google Sheets
diff --git
a/components/camel-google/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/transformer/google-sheets-application-x-struct.json
b/components/camel-google/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/transformer/google-sheets-application-x-struct.json
new file mode 100644
index 00000000000..d237393e64e
--- /dev/null
+++
b/components/camel-google/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/transformer/google-sheets-application-x-struct.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "google-sheets:application-x-struct",
+ "title": "Google Sheets (Application X Struct)",
+ "description": "Transforms to\/from JSon data and Google Sheets ValueRange
object",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.google.sheets.transform.GoogleSheetsJsonStructDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-google-sheets",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java
b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java
index aedb745b9be..9f6960b28dc 100644
---
a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java
+++
b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java
@@ -37,6 +37,7 @@ import org.apache.camel.component.jackson.transform.Json;
import org.apache.camel.spi.DataType;
import org.apache.camel.spi.DataTypeTransformer;
import org.apache.camel.spi.Transformer;
+import org.apache.camel.support.MessageHelper;
import org.apache.camel.util.ObjectHelper;
/**
@@ -45,10 +46,11 @@ import org.apache.camel.util.ObjectHelper;
* depending on the given message body content. When Google Sheets ValueRange
object is given as message body (e.g. as a
* result of a get values operation) the transformer will transform into
generic Json struct. When generic Json struct
* is given as a message body transformer will transform into a proper
ValueRange object that is ready to be used in an
- * update/append values operation. Implementation also supports splitResults
setting where a set of values is split into
+ * update/append values operation. The Implementation also supports
splitResults setting where a set of values is split into
* its individual items.
*/
-@DataTypeTransformer(name = "google-sheets:application-x-struct")
+@DataTypeTransformer(name = "google-sheets:application-x-struct",
+ description = "Transforms to/from JSon data and Google Sheets
ValueRange object")
public class GoogleSheetsJsonStructDataTypeTransformer extends Transformer {
private static final String ROW_PREFIX = "#";
@@ -82,14 +84,6 @@ public class GoogleSheetsJsonStructDataTypeTransformer
extends Transformer {
/**
* Constructs proper ValueRange object from given generic Json struct.
- *
- * @param message
- * @param spreadsheetId
- * @param range
- * @param majorDimension
- * @param valueInputOption
- * @param columnNames
- * @return
*/
private ValueRange transformToValueRangeModel(
Message message, String spreadsheetId, String range, String
majorDimension, String valueInputOption,
@@ -137,8 +131,7 @@ public class GoogleSheetsJsonStructDataTypeTransformer
extends Transformer {
return valueRange;
} catch (InvalidPayloadException | JsonProcessingException e) {
throw new CamelExecutionException(
- "Failed to apply Google Sheets Json struct " +
- "data type on exchange",
+ "Failed to apply Google Sheets Json struct data type on
exchange",
message.getExchange(), e);
}
}
@@ -146,14 +139,6 @@ public class GoogleSheetsJsonStructDataTypeTransformer
extends Transformer {
/**
* Construct generic Json struct from given ValueRange object. Json struct
represents the row and column values
* only.
- *
- * @param message
- * @param valueRange
- * @param spreadsheetId
- * @param range
- * @param majorDimension
- * @param columnNames
- * @return
*/
private List<String> transformFromValueRangeModel(
Message message, ValueRange valueRange, String spreadsheetId,
String range, String majorDimension,
@@ -199,8 +184,7 @@ public class GoogleSheetsJsonStructDataTypeTransformer
extends Transformer {
} catch (IOException e) {
throw new CamelExecutionException(
- "Failed to apply Google Sheets Json struct " +
- "data type on exchange",
+ "Failed to apply Google Sheets Json struct data type on
exchange",
message.getExchange(), e);
}
@@ -210,13 +194,6 @@ public class GoogleSheetsJsonStructDataTypeTransformer
extends Transformer {
/**
* Construct generic Json struct from given split values model. Json
struct represents the row and column values
* only. In split mode one single row/column is handled as an individual
result.
- *
- * @param message
- * @param spreadsheetId
- * @param range
- * @param majorDimension
- * @param columnNames
- * @return
*/
private String transformFromSplitValuesModel(
Message message, String spreadsheetId, String range, String
majorDimension, String[] columnNames) {
@@ -255,8 +232,7 @@ public class GoogleSheetsJsonStructDataTypeTransformer
extends Transformer {
return Json.mapper().writer().writeValueAsString(model);
} catch (InvalidPayloadException | JsonProcessingException e) {
throw new CamelExecutionException(
- "Failed to apply Google Sheets Json struct " +
- "data type on exchange",
+ "Failed to apply Google Sheets Json struct data type on
exchange",
message.getExchange(), e);
}
}
@@ -264,16 +240,13 @@ public class GoogleSheetsJsonStructDataTypeTransformer
extends Transformer {
/**
* Try to convert message body to a ValueRange object if possible. Returns
empty optional when message body
* conversion is not applicable.
- *
- * @param message
- * @return
*/
private static Optional<ValueRange> getValueRangeBody(Message message) {
if (message.getBody() instanceof ValueRange) {
return Optional.of(message.getBody(ValueRange.class));
}
- String jsonBody = message.getBody(String.class);
+ String jsonBody = MessageHelper.extractBodyAsString(message);
if (jsonBody != null) {
try {
ValueRange valueRange =
Json.mapper().reader().readValue(jsonBody, ValueRange.class);
@@ -289,10 +262,6 @@ public class GoogleSheetsJsonStructDataTypeTransformer
extends Transformer {
/**
* Converts message body to list of Json objects. Supports different
message body types such as List, String,
* InputStream.
- *
- * @param message
- * @return
- * @throws JsonProcessingException
*/
private static List<String> bodyAsJsonBeans(Message message) throws
JsonProcessingException, InvalidPayloadException {
if (message.getBody() == null) {
@@ -316,11 +285,6 @@ public class GoogleSheetsJsonStructDataTypeTransformer
extends Transformer {
/**
* Construct row and column coordinate names for given range. Supports
mapping of custom column names to proper
* row/column coordinates.
- *
- * @param range
- * @param majorDimension
- * @param columnNames
- * @return
*/
public static ArrayList<String> createCoordinateNameSpec(String range,
String majorDimension, String... columnNames) {
ArrayList<String> names = new ArrayList<>();
@@ -338,10 +302,6 @@ public class GoogleSheetsJsonStructDataTypeTransformer
extends Transformer {
/**
* Create dynamic json schema from row dimension. If split only a single
object "ROW" holding 1-n column values is
* created. Otherwise, each row results in a separate object with 1-n
column values as property.
- *
- * @param properties
- * @param coordinate
- * @param columnNames
*/
private static void createSchemaFromRowDimension(
ArrayList<String> properties, RangeCoordinate coordinate,
String... columnNames) {
@@ -353,9 +313,6 @@ public class GoogleSheetsJsonStructDataTypeTransformer
extends Transformer {
/**
* Create dynamic json schema from column dimension. If split only a
single object "COLUMN" holding 1-n row values
* is created. Otherwise, each column results in a separate object with
1-n row values as property.
- *
- * @param properties
- * @param coordinate
*/
private static void createSchemaFromColumnDimension(ArrayList<String>
properties, RangeCoordinate coordinate) {
for (int i = coordinate.getRowStartIndex() + 1; i <=
coordinate.getRowEndIndex(); i++) {
diff --git
a/components/camel-google/camel-google-storage/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-google/camel-google-storage/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..3fc322dc308
--- /dev/null
+++
b/components/camel-google/camel-google-storage/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=google-storage:application-cloudevents
+groupId=org.apache.camel
+artifactId=camel-google-storage
+version=4.4.0-SNAPSHOT
+projectName=Camel :: Google :: Storage
+projectDescription=For storing and accessing data on Google Cloud Platform
diff --git
a/components/camel-google/camel-google-storage/src/generated/resources/META-INF/services/org/apache/camel/transformer/google-storage-application-cloudevents.json
b/components/camel-google/camel-google-storage/src/generated/resources/META-INF/services/org/apache/camel/transformer/google-storage-application-cloudevents.json
new file mode 100644
index 00000000000..250592b78c3
--- /dev/null
+++
b/components/camel-google/camel-google-storage/src/generated/resources/META-INF/services/org/apache/camel/transformer/google-storage-application-cloudevents.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "google-storage:application-cloudevents",
+ "title": "Google Storage (Application Cloudevents)",
+ "description": "Adds CloudEvent headers to the Camel message with Google
Storage downloadTo response information",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.google.storage.transform.GoogleStorageCloudEventDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-google-storage",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/transform/GoogleStorageCloudEventDataTypeTransformer.java
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/transform/GoogleStorageCloudEventDataTypeTransformer.java
index a5f8158f1f3..5a7a99eb20c 100644
---
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/transform/GoogleStorageCloudEventDataTypeTransformer.java
+++
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/transform/GoogleStorageCloudEventDataTypeTransformer.java
@@ -31,7 +31,8 @@ import org.apache.camel.spi.Transformer;
* Output data type represents Google Storage downloadTo response as
CloudEvent V1. The data type sets Camel specific
* CloudEvent headers on the exchange.
*/
-@DataTypeTransformer(name = "google-storage:application-cloudevents")
+@DataTypeTransformer(name = "google-storage:application-cloudevents",
+ description = "Adds CloudEvent headers to the Camel message with
Google Storage downloadTo response information")
public class GoogleStorageCloudEventDataTypeTransformer extends Transformer {
@Override
diff --git
a/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..749815bc9c8
--- /dev/null
+++
b/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=avro-binary avro-x-java-object avro-x-struct
+groupId=org.apache.camel
+artifactId=camel-jackson-avro
+version=4.4.0-SNAPSHOT
+projectName=Camel :: Jackson Avro
+projectDescription=Camel Jackson Avro support
diff --git
a/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer/avro-binary.json
b/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer/avro-binary.json
new file mode 100644
index 00000000000..e5d97cb20c5
--- /dev/null
+++
b/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer/avro-binary.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "avro-binary",
+ "title": "Avro Binary",
+ "description": "Transforms from JSon to binary (byte array) using Jackson
Avro (supports Avro schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.avro.transform.AvroBinaryDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-avro",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer/avro-x-java-object.json
b/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer/avro-x-java-object.json
new file mode 100644
index 00000000000..5b3b8ef8673
--- /dev/null
+++
b/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer/avro-x-java-object.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "avro-x-java-object",
+ "title": "Avro X Java Object",
+ "description": "Transforms from JSon to Java object using Jackson Avro
(supports content schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.avro.transform.AvroPojoDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-avro",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer/avro-x-struct.json
b/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer/avro-x-struct.json
new file mode 100644
index 00000000000..358a934a48a
--- /dev/null
+++
b/components/camel-jackson-avro/src/generated/resources/META-INF/services/org/apache/camel/transformer/avro-x-struct.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "avro-x-struct",
+ "title": "Avro X Struct",
+ "description": "Transforms to generic JSonNode using Jackson Avro
(supports content schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.avro.transform.AvroStructDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-avro",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/Avro.java
b/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/Avro.java
index e1ce3fbba44..6e47a1cfa5a 100644
---
a/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/Avro.java
+++
b/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/Avro.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.avro.transform;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git
a/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroBinaryDataTypeTransformer.java
b/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroBinaryDataTypeTransformer.java
index af3ed9598f5..c59ab4d1cdc 100644
---
a/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroBinaryDataTypeTransformer.java
+++
b/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroBinaryDataTypeTransformer.java
@@ -39,7 +39,8 @@ import org.apache.camel.spi.Transformer;
* representation. Uses given Avro schema from the Exchange properties when
marshalling the payload (usually already
* resolved via schema resolver).
*/
-@DataTypeTransformer(name = "avro-binary")
+@DataTypeTransformer(name = "avro-binary",
+ description = "Transforms from JSon to binary (byte array) using
Jackson Avro (supports Avro schema)")
public class AvroBinaryDataTypeTransformer extends Transformer {
@Override
diff --git
a/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroPojoDataTypeTransformer.java
b/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroPojoDataTypeTransformer.java
index e58c87ca63e..abc6b12b202 100644
---
a/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroPojoDataTypeTransformer.java
+++
b/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroPojoDataTypeTransformer.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.avro.transform;
import java.io.IOException;
@@ -34,7 +33,8 @@ import org.apache.camel.spi.DataTypeTransformer;
* object mapper implementation for the unmarshal operation. Requires proper
setting of content schema, class and schema
* type in Exchange properties (usually resolved via Json schema resolver).
*/
-@DataTypeTransformer(name = "avro-x-java-object")
+@DataTypeTransformer(name = "avro-x-java-object",
+ description = "Transforms from JSon to Java object using Jackson Avro
(supports content schema)")
public class AvroPojoDataTypeTransformer extends JsonPojoDataTypeTransformer {
@Override
diff --git
a/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroSchemaResolver.java
b/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroSchemaResolver.java
index 8d0a2a44c5a..d533e5bf307 100644
---
a/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroSchemaResolver.java
+++
b/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroSchemaResolver.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.avro.transform;
import java.io.InputStream;
diff --git
a/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroStructDataTypeTransformer.java
b/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroStructDataTypeTransformer.java
index 3c8a975915b..ac89e1474d0 100644
---
a/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroStructDataTypeTransformer.java
+++
b/components/camel-jackson-avro/src/main/java/org/apache/camel/component/jackson/avro/transform/AvroStructDataTypeTransformer.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.avro.transform;
import java.io.ByteArrayInputStream;
@@ -37,7 +36,8 @@ import org.apache.camel.spi.Transformer;
* Data type uses Avro Jackson data format to unmarshal Exchange body to
generic JsonNode. Uses given Avro schema from
* the Exchange properties when unmarshalling the payload (usually already
resolved via schema resolver).
*/
-@DataTypeTransformer(name = "avro-x-struct")
+@DataTypeTransformer(name = "avro-x-struct",
+ description = "Transforms to generic JSonNode using Jackson Avro
(supports content schema)")
public class AvroStructDataTypeTransformer extends Transformer {
@Override
diff --git
a/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..494944ff30f
--- /dev/null
+++
b/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=protobuf-binary protobuf-x-java-object protobuf-x-struct
+groupId=org.apache.camel
+artifactId=camel-jackson-protobuf
+version=4.4.0-SNAPSHOT
+projectName=Camel :: Jackson Protobuf
+projectDescription=Camel Jackson Protobuf support
diff --git
a/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer/protobuf-binary.json
b/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer/protobuf-binary.json
new file mode 100644
index 00000000000..6111dcaa843
--- /dev/null
+++
b/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer/protobuf-binary.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "protobuf-binary",
+ "title": "Protobuf Binary",
+ "description": "Transforms from JSon to binary (byte array) using Jackson
Protobuf (supports Protobuf schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.protobuf.transform.ProtobufBinaryDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-protobuf",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer/protobuf-x-java-object.json
b/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer/protobuf-x-java-object.json
new file mode 100644
index 00000000000..9d22cd0808d
--- /dev/null
+++
b/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer/protobuf-x-java-object.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "protobuf-x-java-object",
+ "title": "Protobuf X Java Object",
+ "description": "Transforms from JSon to Java object using Jackson Protobuf
(supports content schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.protobuf.transform.ProtobufPojoDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-protobuf",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer/protobuf-x-struct.json
b/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer/protobuf-x-struct.json
new file mode 100644
index 00000000000..86bc82de954
--- /dev/null
+++
b/components/camel-jackson-protobuf/src/generated/resources/META-INF/services/org/apache/camel/transformer/protobuf-x-struct.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "protobuf-x-struct",
+ "title": "Protobuf X Struct",
+ "description": "Transforms to generic JSonNode using Jackson Protobuf
(supports content schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.protobuf.transform.ProtobufStructDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson-protobuf",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/Protobuf.java
b/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/Protobuf.java
index b46d54814d7..81d4a16ba5f 100644
---
a/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/Protobuf.java
+++
b/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/Protobuf.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.protobuf.transform;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git
a/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufBinaryDataTypeTransformer.java
b/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufBinaryDataTypeTransformer.java
index b9007650e23..6d73884220b 100644
---
a/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufBinaryDataTypeTransformer.java
+++
b/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufBinaryDataTypeTransformer.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.protobuf.transform;
import java.io.ByteArrayInputStream;
@@ -39,7 +38,8 @@ import org.apache.camel.spi.Transformer;
* representation. Uses given Protobuf schema from the Exchange properties
when marshalling the payload (usually already
* resolved via schema resolver).
*/
-@DataTypeTransformer(name = "protobuf-binary")
+@DataTypeTransformer(name = "protobuf-binary",
+ description = "Transforms from JSon to binary (byte array) using
Jackson Protobuf (supports Protobuf schema)")
public class ProtobufBinaryDataTypeTransformer extends Transformer {
@Override
diff --git
a/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufPojoDataTypeTransformer.java
b/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufPojoDataTypeTransformer.java
index 4befcbfb88b..7dd3731cca5 100644
---
a/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufPojoDataTypeTransformer.java
+++
b/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufPojoDataTypeTransformer.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.protobuf.transform;
import java.io.IOException;
@@ -34,7 +33,8 @@ import org.apache.camel.spi.DataTypeTransformer;
* Protobuf object mapper implementation for the unmarshal operation. Requires
proper setting of content schema, class
* and schema type in Exchange properties (usually resolved via Json schema
resolver).
*/
-@DataTypeTransformer(name = "protobuf-x-java-object")
+@DataTypeTransformer(name = "protobuf-x-java-object",
+ description = "Transforms from JSon to Java object using Jackson
Protobuf (supports content schema)")
public class ProtobufPojoDataTypeTransformer extends
JsonPojoDataTypeTransformer {
@Override
diff --git
a/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufSchemaResolver.java
b/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufSchemaResolver.java
index c3aeed976b9..030e6505d8c 100644
---
a/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufSchemaResolver.java
+++
b/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufSchemaResolver.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.protobuf.transform;
import java.io.IOException;
diff --git
a/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufStructDataTypeTransformer.java
b/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufStructDataTypeTransformer.java
index 7d7a64551dc..a18b9a3627b 100644
---
a/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufStructDataTypeTransformer.java
+++
b/components/camel-jackson-protobuf/src/main/java/org/apache/camel/component/jackson/protobuf/transform/ProtobufStructDataTypeTransformer.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.protobuf.transform;
import java.io.ByteArrayInputStream;
@@ -38,7 +37,8 @@ import org.apache.camel.spi.Transformer;
* Data type uses Protobuf Jackson data format to unmarshal Exchange body to
generic JsonNode. Uses given Protobuf
* schema from the Exchange properties when unmarshalling the payload (usually
already resolved via schema resolver).
*/
-@DataTypeTransformer(name = "protobuf-x-struct")
+@DataTypeTransformer(name = "protobuf-x-struct",
+ description = "Transforms to generic JSonNode using Jackson Protobuf
(supports content schema)")
public class ProtobufStructDataTypeTransformer extends Transformer {
@Override
diff --git
a/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..f379089dfff
--- /dev/null
+++
b/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=application-json application-x-java-object application-x-struct
+groupId=org.apache.camel
+artifactId=camel-jackson
+version=4.4.0-SNAPSHOT
+projectName=Camel :: Jackson
+projectDescription=Camel Jackson support
diff --git
a/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-json.json
b/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-json.json
new file mode 100644
index 00000000000..9ceb56c441c
--- /dev/null
+++
b/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-json.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "application-json",
+ "title": "Application Json",
+ "description": "Transforms from JSon to binary (byte array) using Jackson",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.transform.JsonDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-x-java-object.json
b/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-x-java-object.json
new file mode 100644
index 00000000000..f8cf2821393
--- /dev/null
+++
b/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-x-java-object.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "application-x-java-object",
+ "title": "Application X Java Object",
+ "description": "Transforms from JSon to Java object using Jackson
(supports content schema)",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.transform.JsonPojoDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-x-struct.json
b/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-x-struct.json
new file mode 100644
index 00000000000..9a25ad645e6
--- /dev/null
+++
b/components/camel-jackson/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-x-struct.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "application-x-struct",
+ "title": "Application X Struct",
+ "description": "Transforms to generic JSonNode using Jackson",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.component.jackson.transform.JsonStructDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-jackson",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/Json.java
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/Json.java
index 2a4578214cf..7081eff96df 100644
---
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/Json.java
+++
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/Json.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.transform;
import java.util.ArrayList;
diff --git
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonDataTypeTransformer.java
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonDataTypeTransformer.java
index 8553de0823e..4554ae6efae 100644
---
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonDataTypeTransformer.java
+++
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonDataTypeTransformer.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.transform;
import java.nio.charset.StandardCharsets;
@@ -34,7 +33,8 @@ import org.apache.camel.spi.Transformer;
* Data type uses Jackson data format to marshal given Exchange payload to a
Json (binary byte array representation).
* Requires Exchange payload as JsonNode representation.
*/
-@DataTypeTransformer(name = "application-json")
+@DataTypeTransformer(name = "application-json",
+ description = "Transforms from JSon to binary (byte array) using
Jackson")
public class JsonDataTypeTransformer extends Transformer {
@Override
diff --git
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonPojoDataTypeTransformer.java
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonPojoDataTypeTransformer.java
index 6877613a01f..9a1f9e1e031 100644
---
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonPojoDataTypeTransformer.java
+++
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonPojoDataTypeTransformer.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.transform;
import java.io.ByteArrayInputStream;
@@ -42,7 +41,8 @@ import org.apache.camel.util.ObjectHelper;
* mapper implementation for the unmarshal operation. Requires proper setting
of content schema, class and schema type
* in Exchange properties (usually resolved via Json schema resolver).
*/
-@DataTypeTransformer(name = "application-x-java-object")
+@DataTypeTransformer(name = "application-x-java-object",
+ description = "Transforms from JSon to Java object using Jackson
(supports content schema)")
public class JsonPojoDataTypeTransformer extends Transformer implements
CamelContextAware {
private CamelContext camelContext;
diff --git
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonSchemaResolver.java
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonSchemaResolver.java
index be93d622473..27a3e5b7dba 100644
---
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonSchemaResolver.java
+++
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonSchemaResolver.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.transform;
import java.io.InputStream;
diff --git
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonStructDataTypeTransformer.java
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonStructDataTypeTransformer.java
index 36a0877115a..101e9812894 100644
---
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonStructDataTypeTransformer.java
+++
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/transform/JsonStructDataTypeTransformer.java
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.jackson.transform;
import java.io.ByteArrayInputStream;
@@ -36,7 +35,8 @@ import org.apache.camel.spi.Transformer;
/**
* Data type uses Jackson data format to unmarshal Exchange body to a generic
JsonNode representation.
*/
-@DataTypeTransformer(name = "application-x-struct")
+@DataTypeTransformer(name = "application-x-struct",
+ description = "Transforms to generic JSonNode using Jackson")
public class JsonStructDataTypeTransformer extends Transformer {
@Override
diff --git
a/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java
b/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java
index b388dd8fcca..7b2e7ffdd69 100644
--- a/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java
@@ -47,6 +47,14 @@ public interface CatalogCamelContext extends CamelContext {
*/
String getLanguageParameterJsonSchema(String languageName) throws
IOException;
+ /**
+ * Returns the JSON schema representation of the {@link
org.apache.camel.spi.DataTypeTransformer} parameters for the
+ * given transformer name.
+ *
+ * @return the json or <tt>null</tt> if the transformer does not exist
+ */
+ String getTransformerParameterJsonSchema(String transformerName) throws
IOException;
+
/**
* Returns the JSON schema representation of the EIP parameters for the
given EIP name.
*
diff --git
a/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
b/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
index d54364fdede..788fc9b96b6 100644
---
a/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
+++
b/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
@@ -50,6 +50,14 @@ public interface JSonSchemaResolver {
*/
String getLanguageJSonSchema(String name);
+ /**
+ * Returns the transformer information as JSON format.
+ *
+ * @param name the transformer name
+ * @return transformer details in JSon
+ */
+ String getTransformerJSonSchema(String name);
+
/**
* Returns the other (miscellaneous) information as JSON format.
*
diff --git
a/core/camel-api/src/main/java/org/apache/camel/spi/DataTypeTransformer.java
b/core/camel-api/src/main/java/org/apache/camel/spi/DataTypeTransformer.java
index 9d3de679f6a..24a6a757501 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/DataTypeTransformer.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/DataTypeTransformer.java
@@ -53,4 +53,9 @@ public @interface DataTypeTransformer {
*/
String toType() default "";
+ /**
+ * A human-readable description of what this transformer can do.
+ */
+ String description() default "";
+
}
diff --git
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index c1aed60c68a..118af831990 100644
---
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -1463,8 +1463,24 @@ public abstract class AbstractCamelContext extends
BaseService
return null;
}
+ @Override
+ public String getTransformerParameterJsonSchema(String transformerName)
throws IOException {
+ String name = sanitizeFileName(transformerName) + ".json";
+ String path =
DefaultTransformerResolver.DATA_TYPE_TRANSFORMER_RESOURCE_PATH + name;
+ String inputStream = doLoadResource(transformerName, path,
"transformer");
+ if (inputStream != null) {
+ return inputStream;
+ }
+ return null;
+ }
+
// Helper methods
// -----------------------------------------------------------------------
+
+ private String sanitizeFileName(String fileName) {
+ return fileName.replaceAll("[^A-Za-z0-9-]", "-");
+ }
+
@Override
public String getEipParameterJsonSchema(String eipName) throws IOException
{
// the eip json schema may be in some of the sub-packages so look until
diff --git
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
index 84d998fa840..89255902142 100644
---
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
+++
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
@@ -53,6 +53,7 @@ import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.model.LanguageModel;
import org.apache.camel.tooling.model.MainModel;
import org.apache.camel.tooling.model.OtherModel;
+import org.apache.camel.tooling.model.TransformerModel;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.ReflectionHelper;
import org.apache.camel.util.StringHelper;
@@ -112,6 +113,15 @@ public abstract class AbstractCamelCatalog {
return json != null ? JsonMapper.generateLanguageModel(json) : null;
}
+ public String transformerJSonSchema(String name) {
+ return getJSonSchemaResolver().getTransformerJSonSchema(name);
+ }
+
+ public TransformerModel transformerModel(String name) {
+ String json = transformerJSonSchema(name);
+ return json != null ? JsonMapper.generateTransformerModel(json) : null;
+ }
+
public String otherJSonSchema(String name) {
return getJSonSchemaResolver().getOtherJSonSchema(name);
}
diff --git
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
index dbda9bd0d35..bf427a042c4 100644
---
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
+++
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
@@ -72,6 +72,16 @@ public class CamelContextJSonSchemaResolver implements
JSonSchemaResolver {
return null;
}
+ @Override
+ public String getTransformerJSonSchema(String name) {
+ try {
+ return camelContext.getTransformerParameterJsonSchema(name);
+ } catch (IOException e) {
+ // ignore
+ }
+ return null;
+ }
+
@Override
public String getOtherJSonSchema(String name) {
// not supported
diff --git
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java
index f88a7b1bf9b..0523b0d46fc 100644
---
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java
+++
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java
@@ -29,6 +29,7 @@ import org.apache.camel.tooling.model.EipModel;
import org.apache.camel.tooling.model.LanguageModel;
import org.apache.camel.tooling.model.MainModel;
import org.apache.camel.tooling.model.OtherModel;
+import org.apache.camel.tooling.model.TransformerModel;
/**
* Default {@link RuntimeCamelCatalog}.
@@ -116,6 +117,16 @@ public class DefaultRuntimeCamelCatalog extends
AbstractCamelCatalog implements
return cache("language-model-" + name, name, super::languageModel);
}
+ @Override
+ public String transformerJSonSchema(String name) {
+ return cache("transformer-" + name, name,
super::transformerJSonSchema);
+ }
+
+ @Override
+ public TransformerModel transformerModel(String name) {
+ return cache("transformer-model-" + name, name,
super::transformerModel);
+ }
+
@Override
public String otherJSonSchema(String name) {
return cache("other-" + name, name, super::otherJSonSchema);
diff --git
a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
new file mode 100644
index 00000000000..9e149f18fcf
--- /dev/null
+++
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+transformers=application-octet-stream text-plain
+groupId=org.apache.camel
+artifactId=camel-core-processor
+version=4.4.0-SNAPSHOT
+projectName=Camel :: Core Processor
+projectDescription=Camel core processors
diff --git
a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-octet-stream.json
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-octet-stream.json
new file mode 100644
index 00000000000..9eb3b79fbbb
--- /dev/null
+++
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-octet-stream.json
@@ -0,0 +1,13 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "application-octet-stream",
+ "title": "Application Octet Stream",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.processor.transformer.ByteArrayDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-core-processor",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/text-plain.json
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/text-plain.json
new file mode 100644
index 00000000000..d48faddafc9
--- /dev/null
+++
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/text-plain.json
@@ -0,0 +1,13 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "text-plain",
+ "title": "Text Plain",
+ "deprecated": false,
+ "javaType":
"org.apache.camel.processor.transformer.StringDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-core-processor",
+ "version": "4.4.0-SNAPSHOT"
+ }
+}
+
diff --git
a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/transformers.json
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/transformers.json
new file mode 100644
index 00000000000..0e33f276033
--- /dev/null
+++
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/transformers.json
@@ -0,0 +1,19 @@
+{
+ "transformers": [
+ {
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-core-processor",
+ "version": "4.4.0-SNAPSHOT",
+ "className":
"org.apache.camel.processor.transformer.ByteArrayDataTypeTransformer",
+ "name": "application-octet-stream"
+ },
+ {
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-core-processor",
+ "version": "4.4.0-SNAPSHOT",
+ "className":
"org.apache.camel.processor.transformer.StringDataTypeTransformer",
+ "name": "text-plain"
+ }
+ ]
+}
+
diff --git
a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
index d9c2e6c0bf4..300ec9535d0 100644
---
a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
+++
b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
@@ -49,6 +49,11 @@ class ModelJSonSchemaResolver implements JSonSchemaResolver {
throw new UnsupportedOperationException("Only getModelJSonSchema is in
use");
}
+ @Override
+ public String getTransformerJSonSchema(String name) {
+ throw new UnsupportedOperationException("Only getModelJSonSchema is in
use");
+ }
+
@Override
public String getOtherJSonSchema(String name) {
throw new UnsupportedOperationException("Only getModelJSonSchema is in
use");
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
index 79c6b90dfe8..5d7b3620824 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
@@ -28,6 +28,7 @@ import
org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDoc;
import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogKamelet;
import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogLanguage;
import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogOther;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogTransformer;
import org.apache.camel.dsl.jbang.core.commands.config.ConfigCommand;
import org.apache.camel.dsl.jbang.core.commands.config.ConfigGet;
import org.apache.camel.dsl.jbang.core.commands.config.ConfigList;
@@ -117,6 +118,7 @@ public class CamelJBangMain implements Callable<Integer> {
.addSubcommand("component", new CommandLine(new
CatalogComponent(main)))
.addSubcommand("dataformat", new CommandLine(new
CatalogDataFormat(main)))
.addSubcommand("language", new CommandLine(new
CatalogLanguage(main)))
+ .addSubcommand("transformer", new CommandLine(new
CatalogTransformer(main)))
.addSubcommand("other", new CommandLine(new
CatalogOther(main)))
.addSubcommand("kamelet", new CommandLine(new
CatalogKamelet(main))))
.addSubcommand("doc", new CommandLine(new CatalogDoc(main)))
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
index b92a5944ef8..0d4c79cfd76 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
@@ -143,7 +143,7 @@ public abstract class CatalogBaseCommand extends
CamelCommand {
"native",
row.nativeSupported)).collect(Collectors.toList())));
} else {
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
- new
Column().header("NAME").visible(!gav).dataAlign(HorizontalAlign.LEFT).maxWidth(30)
+ new
Column().header("NAME").visible(!gav).dataAlign(HorizontalAlign.LEFT).maxWidth(nameWidth())
.with(r -> r.name),
new
Column().header("ARTIFACT-ID").visible(gav).dataAlign(HorizontalAlign.LEFT).with(this::shortGav),
new
Column().header("LEVEL").dataAlign(HorizontalAlign.LEFT).with(r -> r.level),
@@ -157,6 +157,10 @@ public abstract class CatalogBaseCommand extends
CamelCommand {
return 0;
}
+ int nameWidth() {
+ return 30;
+ }
+
int sortRow(Row o1, Row o2) {
String s = sort;
int negate = 1;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogTransformer.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogTransformer.java
new file mode 100644
index 00000000000..f527c113a27
--- /dev/null
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogTransformer.java
@@ -0,0 +1,57 @@
+/*
+ * 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.dsl.jbang.core.commands.catalog;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.tooling.model.TransformerModel;
+import picocli.CommandLine;
+
[email protected](name = "transformer",
+ description = "List data type transformers from the Camel
Catalog", sortOptions = false)
+public class CatalogTransformer extends CatalogBaseCommand {
+
+ public CatalogTransformer(CamelJBangMain main) {
+ super(main);
+ }
+
+ @Override
+ int nameWidth() {
+ return 60;
+ }
+
+ @Override
+ List<Row> collectRows() {
+ List<Row> rows = new ArrayList<>();
+ for (String name : catalog.findTransformerNames()) {
+ TransformerModel model = catalog.transformerModel(name);
+ if (model != null) {
+ Row row = new Row();
+ row.name = model.getName();
+ row.title = model.getTitle();
+ row.description = model.getDescription();
+ row.deprecated = model.isDeprecated();
+ row.gav = getGAV(model);
+ rows.add(row);
+ }
+ }
+ return rows;
+ }
+
+}
diff --git
a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
index caeda324f43..81f129e8d7c 100644
---
a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
+++
b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
@@ -64,6 +64,8 @@ public final class JsonMapper {
return generateLanguageModel(obj);
} else if (obj.containsKey("dataformat")) {
return generateDataFormatModel(obj);
+ } else if (obj.containsKey("transformer")) {
+ return generateTransformerModel(obj);
} else if (obj.containsKey("other")) {
return generateOtherModel(obj);
} else if (obj.containsKey("model")) {
@@ -359,6 +361,21 @@ public final class JsonMapper {
return wrapper;
}
+ public static TransformerModel generateTransformerModel(String json) {
+ JsonObject obj = deserialize(json);
+ return generateTransformerModel(obj);
+ }
+
+ public static TransformerModel generateTransformerModel(JsonObject obj) {
+ JsonObject mobj = (JsonObject) obj.get("transformer");
+ TransformerModel model = new TransformerModel();
+ parseModel(mobj, model);
+ model.setFrom(mobj.getString("from"));
+ model.setTo(mobj.getString("to"));
+ parseArtifact(mobj, model);
+ return model;
+ }
+
public static OtherModel generateOtherModel(String json) {
JsonObject obj = deserialize(json);
return generateOtherModel(obj);
diff --git
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/TransformerModel.java
similarity index 60%
copy from catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
copy to
tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/TransformerModel.java
index 747d7b2c980..3e6db9254ca 100644
--- a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
+++
b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/TransformerModel.java
@@ -14,15 +14,35 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.catalog;
+package org.apache.camel.tooling.model;
+
+public class TransformerModel extends ArtifactModel<BaseOptionModel> {
+
+ protected String from;
+ protected String to;
+
+ public TransformerModel() {
+ }
+
+ public String getFrom() {
+ return from;
+ }
+
+ public void setFrom(String from) {
+ this.from = from;
+ }
+
+ public String getTo() {
+ return to;
+ }
+
+ public void setTo(String to) {
+ this.to = to;
+ }
+
+ @Override
+ public String getKind() {
+ return "transformer";
+ }
-/**
- * Kind of a Camel part, such as component, dataformat, language, etc.
- */
-public enum Kind {
- component,
- dataformat,
- language,
- other,
- eip
}
diff --git
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateComponentMojo.java
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateComponentMojo.java
index c5de00de8b4..39e69a47d0a 100644
---
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateComponentMojo.java
+++
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateComponentMojo.java
@@ -48,6 +48,8 @@ public class GenerateComponentMojo extends
AbstractGenerateMojo {
invoke(GenerateEndpointUriFactoryMojo.class);
// generate invoke-on-header
invoke(GenerateInvokeOnHeaderMojo.class);
+ // generate data-type-transformer
+ invoke(GenerateDataTypeTransformerMojo.class);
// prepare-components
invoke(PrepareComponentMojo.class);
// validate-components
diff --git
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDataTypeTransformerMojo.java
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDataTypeTransformerMojo.java
new file mode 100644
index 00000000000..d490476a7d0
--- /dev/null
+++
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDataTypeTransformerMojo.java
@@ -0,0 +1,235 @@
+/*
+ * 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.maven.packaging;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.StringJoiner;
+
+import org.apache.camel.maven.packaging.generics.PackagePluginUtils;
+import org.apache.camel.tooling.util.Strings;
+import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.jboss.jandex.AnnotationInstance;
+import org.jboss.jandex.DotName;
+import org.jboss.jandex.Index;
+
+/**
+ * Factory for generating code for @DataTypeTransformer.
+ */
+@Mojo(name = "generate-data-type-transformer", threadSafe = true, defaultPhase
= LifecyclePhase.PROCESS_CLASSES,
+ requiresDependencyCollection = ResolutionScope.COMPILE,
+ requiresDependencyResolution = ResolutionScope.COMPILE)
+public class GenerateDataTypeTransformerMojo extends AbstractGeneratorMojo {
+
+ public static final DotName DATA_TYPE_ANNOTATION =
DotName.createSimple("org.apache.camel.spi.DataTypeTransformer");
+
+ /**
+ * The project build directory
+ */
+ @Parameter(defaultValue = "${project.build.directory}")
+ protected File buildDir;
+
+ @Parameter(defaultValue = "${project.basedir}/src/generated/resources")
+ protected File resourcesOutputDir;
+
+ private static class DataTypeTransformerModel {
+ private String className;
+ private String name;
+ private String from;
+ private String to;
+ private String description;
+ private boolean deprecated;
+
+ public String getClassName() {
+ return className;
+ }
+
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getFrom() {
+ return from;
+ }
+
+ public void setFrom(String from) {
+ this.from = from;
+ }
+
+ public String getTo() {
+ return to;
+ }
+
+ public void setTo(String to) {
+ this.to = to;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public boolean isDeprecated() {
+ return deprecated;
+ }
+
+ public void setDeprecated(boolean deprecated) {
+ this.deprecated = deprecated;
+ }
+ }
+
+ public GenerateDataTypeTransformerMojo() {
+ }
+
+ @Override
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ if ("pom".equals(project.getPackaging())) {
+ return;
+ }
+
+ buildDir = new File(project.getBuild().getDirectory());
+
+ if (resourcesOutputDir == null) {
+ resourcesOutputDir = new File(project.getBasedir(),
"src/generated/resources");
+ }
+
+ Index index = PackagePluginUtils.readJandexIndexIgnoreMissing(project,
getLog());
+ if (index == null) {
+ return;
+ }
+
+ List<DataTypeTransformerModel> models = new ArrayList<>();
+ List<AnnotationInstance> annotations =
index.getAnnotations(DATA_TYPE_ANNOTATION);
+ annotations.forEach(a -> {
+ DataTypeTransformerModel model = new DataTypeTransformerModel();
+
+ String currentClass = a.target().asClass().name().toString();
+ boolean deprecated
+ = a.target().asClass().hasAnnotation(Deprecated.class) ||
project.getName().contains("(deprecated)");
+ model.setClassName(currentClass);
+ model.setDeprecated(deprecated);
+ var name = a.value("name");
+ if (name != null) {
+ model.setName(name.value().toString());
+ }
+ var from = a.value("from");
+ if (from != null) {
+ model.setFrom(from.value().toString());
+ }
+ var to = a.value("to");
+ if (to != null) {
+ model.setFrom(to.value().toString());
+ }
+ var desc = a.value("description");
+ if (desc != null) {
+ model.setDescription(desc.value().toString());
+ }
+ models.add(model);
+ });
+ models.sort(Comparator.comparing(DataTypeTransformerModel::getName));
+
+ if (!models.isEmpty()) {
+ try {
+ StringJoiner names = new StringJoiner(" ");
+ for (var model : models) {
+ names.add(model.getName());
+
+ JsonObject jo = asJsonObject(model);
+ String json = jo.toJson();
+ json = Jsoner.prettyPrint(json, 2);
+ String fn = sanitizeFileName(model.getName()) + ".json";
+ boolean updated =
updateResource(resourcesOutputDir.toPath(),
+ "META-INF/services/org/apache/camel/transformer/"
+ fn,
+ json + NL);
+ if (updated) {
+ getLog().info("Updated transformer json: " +
model.getName());
+ }
+ }
+
+ // generate marker file
+ File camelMetaDir = new File(resourcesOutputDir,
"META-INF/services/org/apache/camel/");
+ int count = models.size();
+ String properties = createProperties(project, "transformers",
names.toString());
+ updateResource(camelMetaDir.toPath(),
"transformer.properties", properties);
+ getLog().info("Generated transformer.properties containing " +
count + " Camel "
+ + (count > 1 ? "transformers: " : "transformer:
") + names);
+ } catch (Exception e) {
+ throw new MojoExecutionException(e);
+ }
+ }
+ }
+
+ private JsonObject asJsonObject(DataTypeTransformerModel model) {
+ JsonObject jo = new JsonObject();
+ // we need to know the maven GAV also
+ jo.put("kind", "transformer");
+ jo.put("name", model.getName());
+ jo.put("title", asTitle(model.getName()));
+ if (model.getDescription() != null) {
+ jo.put("description", model.getDescription());
+ }
+ jo.put("deprecated", model.isDeprecated());
+ jo.put("javaType", model.getClassName());
+ if (model.getFrom() != null) {
+ jo.put("from", model.getFrom());
+ }
+ if (model.getTo() != null) {
+ jo.put("to", model.getTo());
+ }
+ jo.put("groupId", project.getGroupId());
+ jo.put("artifactId", project.getArtifactId());
+ jo.put("version", project.getVersion());
+ JsonObject root = new JsonObject();
+ root.put("transformer", jo);
+ return root;
+ }
+
+ private String sanitizeFileName(String fileName) {
+ return fileName.replaceAll("[^A-Za-z0-9-]", "-");
+ }
+
+ private String asTitle(String name) {
+ name = Strings.camelDashToTitle(name);
+ String part = Strings.after(name, ":");
+ if (part != null) {
+ part = Strings.capitalize(part);
+ name = Strings.before(name, ":") + " (" + part + ")";
+ }
+ return name;
+ }
+
+}
diff --git
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateInvokeOnHeaderMojo.java
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateInvokeOnHeaderMojo.java
index e87432925f3..4e62bee08a0 100644
---
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateInvokeOnHeaderMojo.java
+++
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateInvokeOnHeaderMojo.java
@@ -42,7 +42,7 @@ import org.jboss.jandex.MethodInfo;
import org.jboss.jandex.Type;
/**
- * Abstract class for @InvokeOnHeader factory generator.
+ * Factory for generating code for @InvokeOnHeader.
*/
@Mojo(name = "generate-invoke-on-header", threadSafe = true, defaultPhase =
LifecyclePhase.PROCESS_CLASSES,
requiresDependencyCollection = ResolutionScope.COMPILE,
diff --git
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
index bb4cc531bec..b93ce0826ce 100644
---
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
+++
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
@@ -50,6 +50,8 @@ public class GenerateMojo extends AbstractGenerateMojo {
invoke(GenerateConfigurerMojo.class);
// generate invoke-on-header
invoke(GenerateInvokeOnHeaderMojo.class);
+ // generate data-type-transformer
+ invoke(GenerateDataTypeTransformerMojo.class);
// prepare-components
invoke(PrepareComponentMojo.class);
// prepare-main
diff --git
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
index 162e0a467c9..240332d0908 100644
---
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
+++
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
@@ -48,6 +48,7 @@ import org.apache.camel.tooling.model.EipModel;
import org.apache.camel.tooling.model.JsonMapper;
import org.apache.camel.tooling.model.LanguageModel;
import org.apache.camel.tooling.model.OtherModel;
+import org.apache.camel.tooling.model.TransformerModel;
import org.apache.camel.tooling.util.FileUtil;
import org.apache.camel.tooling.util.PackageHelper;
import org.apache.camel.tooling.util.Strings;
@@ -111,6 +112,12 @@ public class PrepareCatalogMojo extends AbstractMojo {
@Parameter(defaultValue =
"${project.basedir}/src/generated/resources/org/apache/camel/catalog/languages")
protected File languagesOutDir;
+ /**
+ * The output directory for transformers catalog
+ */
+ @Parameter(defaultValue =
"${project.basedir}/src/generated/resources/org/apache/camel/catalog/transformers")
+ protected File transformersOutDir;
+
/**
* The output directory for others catalog
*/
@@ -314,7 +321,8 @@ public class PrepareCatalogMojo extends AbstractMojo {
if (f.endsWith(PackageHelper.JSON_SUFIX)) {
allJsonFiles.add(p);
} else if (f.equals("component.properties") ||
f.equals("dataformat.properties")
- || f.equals("language.properties") ||
f.equals("other.properties")) {
+ || f.equals("language.properties") ||
f.equals("other.properties")
+ || f.equals("transformer.properties")) {
allPropertiesFiles.add(p);
}
});
@@ -365,6 +373,7 @@ public class PrepareCatalogMojo extends AbstractMojo {
Set<String> components = executeComponents();
Set<String> dataformats = executeDataFormats();
Set<String> languages = executeLanguages();
+ Set<String> transformers = executeTransformers();
Set<String> others = executeOthers();
executeDocuments(components, dataformats, languages, others);
executeXmlSchemas();
@@ -712,6 +721,48 @@ public class PrepareCatalogMojo extends AbstractMojo {
return languagesNames;
}
+ protected Set<String> executeTransformers() throws Exception {
+ Path transformersOutDir = this.transformersOutDir.toPath();
+
+ getLog().info("Copying all Camel transformer json descriptors");
+
+ // lets use sorted set/maps
+ Set<Path> jsonFiles;
+ Set<Path> duplicateJsonFiles;
+ Set<Path> transformerFiles;
+
+ // find all transformers from the components directory
+ transformerFiles = allPropertiesFiles.stream().filter(p ->
p.endsWith("transformer.properties"))
+ .collect(Collectors.toCollection(TreeSet::new));
+ jsonFiles = allJsonFiles.stream().filter(p -> allModels.get(p)
instanceof TransformerModel)
+ .collect(Collectors.toCollection(TreeSet::new));
+
+ getLog().info("Found " + transformerFiles.size() + "
transformer.properties files");
+ getLog().info("Found " + jsonFiles.size() + " transformer json files");
+
+ // make sure to create out dir
+ Files.createDirectories(transformersOutDir);
+
+ // Check duplicates
+ duplicateJsonFiles = getDuplicates(jsonFiles);
+
+ // Copy all descriptors
+ Map<Path, Path> newJsons = map(jsonFiles, p -> p, p ->
transformersOutDir.resolve(p.getFileName()));
+ try (Stream<Path> stream = list(transformersOutDir).filter(p ->
!newJsons.containsValue(p))) {
+ stream.forEach(this::delete);
+ }
+ newJsons.forEach(this::copy);
+
+ Path all = transformersOutDir.resolve("../transformers.properties");
+ Set<String> transformerNames
+ =
jsonFiles.stream().map(PrepareCatalogMojo::asComponentName).collect(Collectors.toCollection(TreeSet::new));
+ FileUtil.updateFile(all, String.join("\n", transformerNames) + "\n");
+
+ printTransformersReport(jsonFiles, duplicateJsonFiles);
+
+ return transformerNames;
+ }
+
private Set<String> executeOthers() throws Exception {
Path othersOutDir = this.othersOutDir.toPath();
@@ -1154,6 +1205,23 @@ public class PrepareCatalogMojo extends AbstractMojo {
getLog().info(SEPARATOR);
}
+ private void printTransformersReport(
+ Set<Path> json, Set<Path> duplicate) {
+ getLog().info(SEPARATOR);
+ getLog().info("");
+ getLog().info("Camel transformer catalog report");
+ getLog().info("");
+ getLog().info("\tTransformers found: " + json.size());
+ printComponentDebug(json);
+ if (!duplicate.isEmpty()) {
+ getLog().info("");
+ getLog().warn("\tDuplicate transformer detected: " +
duplicate.size());
+ printComponentWarning(duplicate);
+ }
+ getLog().info("");
+ getLog().info(SEPARATOR);
+ }
+
private void printOthersReport(
Set<Path> json, Set<Path> duplicate, Map<String, Set<String>>
usedLabels, Set<Path> missingFirstVersions) {
getLog().info(SEPARATOR);