Kamelet Catalog: Provide a method in the catalog API to get DataType information for a Kamelet (#2002)
Signed-off-by: Andrea Cosentino <ancosen@gmail.com>
diff --git a/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
index 939dcb7..60dbbb0 100644
--- a/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
+++ b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
@@ -41,6 +41,7 @@
import org.apache.camel.tooling.model.ComponentModel;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.v1.Kamelet;
+import org.apache.camel.v1.kameletspec.DataTypes;
import org.apache.camel.v1.kameletspec.Definition;
import org.apache.camel.v1.kameletspec.Template;
import org.slf4j.Logger;
@@ -175,6 +176,28 @@
}
}
+ public boolean hasDataTypes(String name) {
+ Kamelet kamelet = kameletModels.get(name);
+ if (kamelet != null) {
+ if (!kamelet.getSpec().getDataTypes().isEmpty()) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+
+ public Map<String, DataTypes> getDataTypes(String name) {
+ Kamelet kamelet = kameletModels.get(name);
+ if (kamelet != null) {
+ return kamelet.getSpec().getDataTypes();
+ } else {
+ return null;
+ }
+ }
+
public void getAllKameletDependencies() {
Map<String, Kamelet> treeMap = new TreeMap<>(kameletModels);
for (Map.Entry<String, Kamelet> entry : treeMap.entrySet()) {
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 2fa5ae3..2d70e0c 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
@@ -24,6 +24,7 @@
import org.apache.camel.kamelets.catalog.model.KameletTypeEnum;
import org.apache.camel.tooling.model.ComponentModel;
import org.apache.camel.v1.Kamelet;
+import org.apache.camel.v1.kameletspec.DataTypes;
import org.apache.camel.v1.kameletspec.Definition;
import org.apache.camel.v1.kameletspec.Template;
import org.junit.jupiter.api.BeforeAll;
@@ -269,4 +270,20 @@
assertEquals("aws2-sqs", catalog.getKameletScheme("aws-sqs"));
assertNull(catalog.getKameletScheme("not-known"));
}
+
+ @Test
+ void testHasDataTypes() throws Exception {
+ assertTrue(catalog.hasDataTypes("aws-s3-source"));
+ assertFalse(catalog.hasDataTypes("splunk-hec-source"));
+ }
+
+ @Test
+ void testGetDataTypes() throws Exception {
+ Map<String, DataTypes> dataTypes = catalog.getDataTypes("aws-s3-source");
+ assertTrue(dataTypes.size() == 1);
+ assertNotNull(dataTypes.get("out").getTypes().get("binary"));
+ assertNotNull(dataTypes.get("out").getTypes().get("cloudevents"));
+ dataTypes = catalog.getDataTypes("splunk-hec-sink");
+ assertNull(dataTypes);
+ }
}