This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch dc in repository https://gitbox.apache.org/repos/asf/camel.git
commit a81bf5f72f9af941e01c1a7b3854bb859811b12f Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat Mar 9 13:00:18 2024 +0100 CAMEL-20531: Include dev-consoles into camel-catalog --- .../org/apache/camel/catalog/CamelCatalog.java | 9 ++++ .../apache/camel/catalog/DefaultCamelCatalog.java | 12 +++++ .../main/java/org/apache/camel/catalog/Kind.java | 1 + .../dsl/jbang/core/commands/CamelJBangMain.java | 2 + .../core/commands/catalog/CatalogDevConsole.java | 57 ++++++++++++++++++++++ .../maven/packaging/GenerateDevConsoleMojo.java | 26 +++++----- 6 files changed, 94 insertions(+), 13 deletions(-) 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 398f5d0f629..9ac41f70363 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 @@ -26,6 +26,7 @@ import org.apache.camel.tooling.model.ArtifactModel; import org.apache.camel.tooling.model.BaseModel; import org.apache.camel.tooling.model.ComponentModel; import org.apache.camel.tooling.model.DataFormatModel; +import org.apache.camel.tooling.model.DevConsoleModel; import org.apache.camel.tooling.model.EipModel; import org.apache.camel.tooling.model.LanguageModel; import org.apache.camel.tooling.model.MainModel; @@ -557,6 +558,12 @@ public interface CamelCatalog { */ TransformerModel transformerModel(String name); + /** + * @param name the dev-console name to look up + * @return the requested dev-console or {@code null} in case it is not available in this {@link CamelCatalog} + */ + DevConsoleModel devConsoleModel(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} @@ -591,6 +598,8 @@ public interface CamelCatalog { return languageModel(name); case transformer: return transformerModel(name); + case console: + return devConsoleModel(name); case other: return otherModel(name); case eip: 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 17289879a74..adc5e84aa8e 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 @@ -38,6 +38,7 @@ import org.apache.camel.tooling.model.ArtifactModel; import org.apache.camel.tooling.model.BaseModel; import org.apache.camel.tooling.model.ComponentModel; import org.apache.camel.tooling.model.DataFormatModel; +import org.apache.camel.tooling.model.DevConsoleModel; import org.apache.camel.tooling.model.EipModel; import org.apache.camel.tooling.model.JsonMapper; import org.apache.camel.tooling.model.LanguageModel; @@ -363,6 +364,11 @@ public class DefaultCamelCatalog extends AbstractCamelCatalog implements CamelCa return cache("transformer-model-" + name, name, super::transformerModel); } + @Override + public DevConsoleModel devConsoleModel(String name) { + return cache("dev-console-model-" + name, name, super::devConsoleModel); + } + @Override public String otherJSonSchema(String name) { return cache("other-" + name, name, super::otherJSonSchema); @@ -541,6 +547,12 @@ public class DefaultCamelCatalog extends AbstractCamelCatalog implements CamelCa return am; } } + for (String name : findDevConsoleNames()) { + ArtifactModel<?> am = devConsoleModel(name); + if (matchArtifact(am, groupId, artifactId, version)) { + return am; + } + } return null; } 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 6ca4c43b5ad..c1f589d02ea 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 @@ -24,6 +24,7 @@ public enum Kind { dataformat, language, transformer, + console, other, eip } 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 da0b6af9cca..89ef4cdd0fe 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 @@ -24,6 +24,7 @@ import org.apache.camel.dsl.jbang.core.commands.action.*; import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogCommand; import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogComponent; import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDataFormat; +import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDevConsole; 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; @@ -127,6 +128,7 @@ public class CamelJBangMain implements Callable<Integer> { .addSubcommand("dataformat", new CommandLine(new CatalogDataFormat(main))) .addSubcommand("language", new CommandLine(new CatalogLanguage(main))) .addSubcommand("transformer", new CommandLine(new CatalogTransformer(main))) + .addSubcommand("dev-console", new CommandLine(new CatalogDevConsole(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/CatalogDevConsole.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDevConsole.java new file mode 100644 index 00000000000..5c4439700b3 --- /dev/null +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDevConsole.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 org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.tooling.model.DevConsoleModel; +import org.apache.camel.tooling.model.LanguageModel; +import picocli.CommandLine; + +import java.util.ArrayList; +import java.util.List; + +@CommandLine.Command(name = "dev-console", + description = "List dev-consoles from the Camel Catalog", sortOptions = false) +public class CatalogDevConsole extends CatalogBaseCommand { + + public CatalogDevConsole(CamelJBangMain main) { + super(main); + } + + @Override + List<Row> collectRows() { + List<Row> rows = new ArrayList<>(); + for (String name : catalog.findDevConsoleNames()) { + DevConsoleModel model = catalog.devConsoleModel(name); + if (model != null) { + Row row = new Row(); + row.name = model.getName(); + row.title = model.getTitle(); + row.level = model.getSupportLevel().name(); + row.since = fixQuarkusSince(model.getFirstVersionShort()); + row.description = model.getDescription(); + row.label = model.getLabel() != null ? model.getLabel() : ""; + row.deprecated = model.isDeprecated(); + row.nativeSupported = model.isNativeSupported(); + row.gav = getGAV(model); + rows.add(row); + } + } + return rows; + } + +} diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDevConsoleMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDevConsoleMojo.java index 212ec1f07e7..97a063fe5b2 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDevConsoleMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDevConsoleMojo.java @@ -64,7 +64,7 @@ public class GenerateDevConsoleMojo extends AbstractGeneratorMojo { private static class DevConsoleModel { private String className; private String group; - private String id; + private String name; private String displayName; private String description; private boolean deprecated; @@ -85,12 +85,12 @@ public class GenerateDevConsoleMojo extends AbstractGeneratorMojo { this.group = group; } - public String getId() { - return id; + public String getName() { + return name; } - public void setId(String id) { - this.id = id; + public void setName(String name) { + this.name = name; } public String getDisplayName() { @@ -149,16 +149,16 @@ public class GenerateDevConsoleMojo extends AbstractGeneratorMojo { model.setClassName(currentClass); model.setDeprecated(deprecated); model.setGroup(annotationValue(a, "group")); - model.setId(annotationValue(a, "name")); + model.setName(annotationValue(a, "name")); model.setDisplayName(annotationValue(a, "displayName")); model.setDescription(annotationValue(a, "description")); // skip default registry - boolean skip = "default-registry".equals(model.getId()); + boolean skip = "default-registry".equals(model.getName()); if (!skip) { models.add(model); } }); - models.sort(Comparator.comparing(DevConsoleModel::getId)); + models.sort(Comparator.comparing(DevConsoleModel::getName)); // remove default-registry as it's special @@ -166,17 +166,17 @@ public class GenerateDevConsoleMojo extends AbstractGeneratorMojo { try { StringJoiner ids = new StringJoiner(" "); for (var model : models) { - ids.add(model.getId()); + ids.add(model.getName()); JsonObject jo = asJsonObject(model); String json = jo.toJson(); json = Jsoner.prettyPrint(json, 2); - String fn = sanitizeFileName(model.getId()) + PackageHelper.JSON_SUFIX; + String fn = sanitizeFileName(model.getName()) + PackageHelper.JSON_SUFIX; boolean updated = updateResource(resourcesOutputDir.toPath(), "META-INF/org/apache/camel/dev-console/" + fn, json + NL); if (updated) { - getLog().info("Updated dev-console json: " + model.getId()); + getLog().info("Updated dev-console json: " + model.getName()); } } @@ -202,11 +202,11 @@ public class GenerateDevConsoleMojo extends AbstractGeneratorMojo { } else { jo.put("group", "camel"); } - jo.put("id", model.getId()); + jo.put("name", model.getName()); if (model.getDisplayName() != null) { jo.put("title", asTitle(model.getDisplayName())); } else { - jo.put("title", asTitle(model.getId())); + jo.put("title", asTitle(model.getName())); } jo.put("description", model.getDescription()); jo.put("deprecated", model.isDeprecated());