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; + } + }
