You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/03/09 12:04:27 UTC
(camel) 03/04: CAMEL-20531: Include dev-consoles into camel-catalog
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 <cl...@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());