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 9ee79fd12b4828a0492b2fc79a8d74310b9f79f7
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Feb 15 10:59:00 2024 +0100

    CAMEL-20419: Generate json metadata for @DataTypeTransformer
---
 .../dsl/jbang/core/commands/CamelJBangMain.java    |  2 +
 .../core/commands/catalog/CatalogBaseCommand.java  |  6 ++-
 .../core/commands/catalog/CatalogTransformer.java  | 57 ++++++++++++++++++++++
 3 files changed, 64 insertions(+), 1 deletion(-)

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

Reply via email to