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

davsclaus pushed a commit to branch gen-trans
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f6ddbc1e4616adc30b9675b27a359c57768734cd
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Feb 14 16:52:59 2024 +0100

    CAMEL-20419: Generate json metadata for @DataTypeTransformer
---
 .../org/apache/camel/transformer/transformers.json       | 12 ++++++++++++
 .../AzureStorageBlobCloudEventDataTypeTransformer.java   |  3 ++-
 .../java/org/apache/camel/spi/DataTypeTransformer.java   |  5 +++++
 .../org/apache/camel/transformer/transformers.json       | 16 ++++++++++++++++
 .../maven/packaging/GenerateDataTypeTransformerMojo.java | 15 +++++++++++----
 5 files changed, 46 insertions(+), 5 deletions(-)

diff --git 
a/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/services/org/apache/camel/transformer/transformers.json
 
b/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/services/org/apache/camel/transformer/transformers.json
new file mode 100644
index 00000000000..effb6a941e7
--- /dev/null
+++ 
b/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/services/org/apache/camel/transformer/transformers.json
@@ -0,0 +1,12 @@
+{
+  "groupId": "org.apache.camel",
+  "artifactId": "camel-azure-storage-blob",
+  "version": "4.4.0-SNAPSHOT",
+  "transformers": [
+    {
+      "className": 
"org.apache.camel.component.azure.storage.blob.transform.AzureStorageBlobCloudEventDataTypeTransformer",
+      "name": "azure-storage-blob:application-cloudevents"
+    }
+  ]
+}
+
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..3c35ffb8f9c 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 information")
 public class AzureStorageBlobCloudEventDataTypeTransformer extends Transformer 
{
 
     @Override
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-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..9fea52e4022
--- /dev/null
+++ 
b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/transformers.json
@@ -0,0 +1,16 @@
+{
+  "groupId": "org.apache.camel",
+  "artifactId": "camel-core-processor",
+  "version": "4.4.0-SNAPSHOT",
+  "transformers": [
+    {
+      "className": 
"org.apache.camel.processor.transformer.ByteArrayDataTypeTransformer",
+      "name": "application-octet-stream"
+    },
+    {
+      "className": 
"org.apache.camel.processor.transformer.StringDataTypeTransformer",
+      "name": "text-plain"
+    }
+  ]
+}
+
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
index 3c11ac2bc82..75f047dae3c 100644
--- 
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
@@ -140,6 +140,10 @@ public class GenerateDataTypeTransformerMojo extends 
AbstractGeneratorMojo {
             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));
@@ -166,6 +170,10 @@ public class GenerateDataTypeTransformerMojo extends 
AbstractGeneratorMojo {
 
     private JsonObject asJsonObject(DataTypeTransformerModel model) {
         JsonObject jo = new JsonObject();
+        // we need to know the maven GAV also
+        jo.put("groupId", project.getGroupId());
+        jo.put("artifactId", project.getArtifactId());
+        jo.put("version", project.getVersion());
         jo.put("className", model.getClassName());
         jo.put("name", model.getName());
         if (model.getFrom() != null) {
@@ -174,11 +182,10 @@ public class GenerateDataTypeTransformerMojo extends 
AbstractGeneratorMojo {
         if (model.getTo() != null) {
             jo.put("to", model.getTo());
         }
+        if (model.getDescription() != null) {
+            jo.put("description", model.getDescription());
+        }
         return jo;
     }
 
-    private String sanitizeFileName(String fileName) {
-        return fileName.replaceAll("[^A-Za-z0-9-]", "-");
-    }
-
 }

Reply via email to