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