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 192475f55761723ba64f4a50051099b85d9c7bf8
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Feb 15 09:01:09 2024 +0100

    CAMEL-20419: Generate json metadata for @DataTypeTransformer
---
 .../packaging/GenerateDataTypeTransformerMojo.java | 43 ++++++++++++++++++----
 1 file changed, 35 insertions(+), 8 deletions(-)

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 97652da44fe..e203a8e9459 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
@@ -22,6 +22,7 @@ import java.util.Comparator;
 import java.util.List;
 
 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;
@@ -59,6 +60,7 @@ public class GenerateDataTypeTransformerMojo extends 
AbstractGeneratorMojo {
         private String from;
         private String to;
         private String description;
+        private boolean deprecated;
 
         public String getClassName() {
             return className;
@@ -99,6 +101,14 @@ public class GenerateDataTypeTransformerMojo extends 
AbstractGeneratorMojo {
         public void setDescription(String description) {
             this.description = description;
         }
+
+        public boolean isDeprecated() {
+            return deprecated;
+        }
+
+        public void setDeprecated(boolean deprecated) {
+            this.deprecated = deprecated;
+        }
     }
 
     public GenerateDataTypeTransformerMojo() {
@@ -124,9 +134,13 @@ public class GenerateDataTypeTransformerMojo extends 
AbstractGeneratorMojo {
         List<DataTypeTransformerModel> models = new ArrayList<>();
         List<AnnotationInstance> annotations = 
index.getAnnotations(DATA_TYPE_ANNOTATION);
         annotations.forEach(a -> {
-            String currentClass = a.target().asClass().name().toString();
             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());
@@ -170,20 +184,23 @@ 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("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());
         }
-        if (model.getDescription() != null) {
-            jo.put("description", model.getDescription());
-        }
+        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;
@@ -193,4 +210,14 @@ public class GenerateDataTypeTransformerMojo extends 
AbstractGeneratorMojo {
         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;
+    }
+
 }

Reply via email to