You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2022/05/03 12:55:22 UTC
[camel-kamelets] 01/02: Validate the parameters in a Kamelet by looking at catalog
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch fix-part-889
in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git
commit 8b5e1d52ecf85b9849d47fc2433508c8654322a8
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue May 3 14:53:14 2022 +0200
Validate the parameters in a Kamelet by looking at catalog
---
library/camel-kamelets-catalog/pom.xml | 6 +++
.../kamelets/catalog/KameletsCatalogTest.java | 47 ++++++++++++++++++++++
2 files changed, 53 insertions(+)
diff --git a/library/camel-kamelets-catalog/pom.xml b/library/camel-kamelets-catalog/pom.xml
index a0ed86c1..73b4a65e 100644
--- a/library/camel-kamelets-catalog/pom.xml
+++ b/library/camel-kamelets-catalog/pom.xml
@@ -68,6 +68,12 @@
<version>${classgraph.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-catalog</artifactId>
+ <version>3.16.0</version>
+ </dependency>
+
<!-- logging -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
diff --git a/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java b/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
index ae229b46..7db7c4f2 100644
--- a/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
+++ b/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
@@ -20,7 +20,9 @@ import io.fabric8.camelk.v1alpha1.Kamelet;
import io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaProps;
import io.github.classgraph.ClassGraph;
+import org.apache.camel.catalog.DefaultCamelCatalog;
import org.apache.camel.kamelets.catalog.model.KameletTypeEnum;
+import org.apache.camel.tooling.model.ComponentModel;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -31,6 +33,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
public class KameletsCatalogTest {
static KameletsCatalog catalog;
@@ -125,4 +128,48 @@ public class KameletsCatalogTest {
void testAllKameletDependencies() throws Exception {
catalog.getAllKameletDependencies();
}
+
+ @Test
+ void testOptionsParams() throws Exception {
+ DefaultCamelCatalog cc = new DefaultCamelCatalog();
+ List<String> names = catalog.getKameletsName();
+ for (String name:
+ names) {
+ Map<String, Object> kd = catalog.getKameletTemplate(name);
+ Map<String,Object> f = (Map) kd.get("from");
+ Map<String,Object> p = (Map) f.get("parameters");
+ List<String> deps = catalog.getKameletDependencies(name).stream()
+ .filter(d -> !d.contains("mvn:") && !d.contains("camel:gson") && !d.contains("camel:core") && !d.contains("camel:kamelet") && !d.contains("github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"))
+ .collect(Collectors.toList());
+ String cleanName;
+ if (!deps.isEmpty()) {
+ if (deps.get(0).equals("camel:jackson") && deps.size() > 1) {
+ cleanName = deps.get(1).replace("camel:", "");
+ } else {
+ cleanName = deps.get(0).replace("camel:", "");
+ }
+ if (cleanName.equalsIgnoreCase("cassandraql")) {
+ cleanName = "cql";
+ }
+ if (cleanName.equalsIgnoreCase("aws2-ddb") && name.equals("aws-ddb-streams-source")) {
+ cleanName = "aws2-ddb-streams";
+ }
+ if (p != null && !p.isEmpty()) {
+ ComponentModel componentModel = cc.componentModel(cleanName);
+ if (componentModel != null) {
+ List<ComponentModel.EndpointOptionModel> ce = componentModel.getEndpointOptions();
+ List<String> ceInternal =
+ ce.stream()
+ .map(ComponentModel.EndpointOptionModel::getName)
+ .collect(Collectors.toList());
+ for (Map.Entry<String, Object> entry : p.entrySet()) {
+ if (!entry.getKey().equals("period") && (!name.equals("kafka-ssl-source") && !name.equals("google-sheets-source") && !name.equals("google-mail-source") && !name.equals("google-calendar-source") && !name.equals("timer-source") && !name.equals("cron-source") && !name.equals("fhir-source"))) {
+ assertTrue(ceInternal.contains(entry.getKey()));
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}