This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch gen-trans
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 60ae70514aa8b8c6b64f725ca4d9fbe106f4fdbb
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Feb 15 10:50:06 2024 +0100

    CAMEL-20419: Generate json metadata for @DataTypeTransformer
---
 .../org/apache/camel/catalog/CamelCatalog.java     | 29 ++++++++++++++++++++++
 .../catalog/CamelCatalogJSonSchemaResolver.java    |  6 +++++
 .../apache/camel/catalog/DefaultCamelCatalog.java  | 27 ++++++++++++++++++++
 .../camel/catalog/DefaultRuntimeProvider.java      | 28 +++++++++++++++++++++
 .../main/java/org/apache/camel/catalog/Kind.java   |  1 +
 .../org/apache/camel/catalog/RuntimeProvider.java  | 10 ++++++++
 .../camel/catalog/CamelCatalogJsonSchemaTest.java  | 19 ++++++++++++++
 .../org/apache/camel/catalog/CamelCatalogTest.java | 24 +++++++++++++++++-
 .../java/org/apache/camel/CatalogCamelContext.java |  8 ++++++
 .../apache/camel/catalog/JSonSchemaResolver.java   |  8 ++++++
 .../camel/impl/engine/AbstractCamelContext.java    | 16 ++++++++++++
 .../camel/catalog/impl/AbstractCamelCatalog.java   | 10 ++++++++
 .../impl/CamelContextJSonSchemaResolver.java       | 10 ++++++++
 .../catalog/impl/DefaultRuntimeCamelCatalog.java   | 11 ++++++++
 .../camel/yaml/io/ModelJSonSchemaResolver.java     |  5 ++++
 15 files changed, 211 insertions(+), 1 deletion(-)

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 3b5fefe5ac3..ec167d2490e 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
@@ -31,6 +31,7 @@ import org.apache.camel.tooling.model.LanguageModel;
 import org.apache.camel.tooling.model.MainModel;
 import org.apache.camel.tooling.model.OtherModel;
 import org.apache.camel.tooling.model.ReleaseModel;
+import org.apache.camel.tooling.model.TransformerModel;
 
 /**
  * Catalog of components, data formats, models (EIPs), languages, and more 
from this Apache Camel release.
@@ -192,6 +193,11 @@ public interface CamelCatalog {
      */
     List<String> findLanguageNames();
 
+    /**
+     * Find all the transformer names from the Camel catalog
+     */
+    List<String> findTransformerNames();
+
     /**
      * Find all the model names from the Camel catalog
      */
@@ -214,6 +220,8 @@ public interface CamelCatalog {
                 return findDataFormatNames();
             case language:
                 return findLanguageNames();
+            case transformer:
+                return findTransformerNames();
             case other:
                 return findOtherNames();
             case eip:
@@ -272,6 +280,14 @@ public interface CamelCatalog {
      */
     String languageJSonSchema(String name);
 
+    /**
+     * Returns the transformer information as JSON format.
+     *
+     * @param  name the transformer name
+     * @return      transformer details in JSon
+     */
+    String transformerJSonSchema(String name);
+
     /**
      * Returns the other (miscellaneous) information as JSON format.
      *
@@ -487,6 +503,11 @@ public interface CamelCatalog {
      */
     String listLanguagesAsJson();
 
+    /**
+     * Lists all the transformers summary details in JSon
+     */
+    String listTransformersAsJson();
+
     /**
      * Lists all the models (EIPs) summary details in JSon
      */
@@ -520,6 +541,12 @@ public interface CamelCatalog {
      */
     LanguageModel languageModel(String name);
 
+    /**
+     * @param  name the transformer name to look up
+     * @return      the requested transformer or {@code null} in case it is 
not available in this {@link CamelCatalog}
+     */
+    TransformerModel transformerModel(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}
@@ -552,6 +579,8 @@ public interface CamelCatalog {
                 return dataFormatModel(name);
             case language:
                 return languageModel(name);
+            case transformer:
+                return transformerModel(name);
             case other:
                 return otherModel(name);
             case eip:
diff --git 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
index b9c25c0c8f8..ca2d2994081 100644
--- 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
+++ 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
@@ -108,6 +108,12 @@ public class CamelCatalogJSonSchemaResolver implements 
JSonSchemaResolver {
         return loadResourceFromVersionManager(file);
     }
 
+    @Override
+    public String getTransformerJSonSchema(String name) {
+        final String file = 
camelCatalog.getRuntimeProvider().getTransformerJSonSchemaDirectory() + "/" + 
name + EXTENSION;
+        return loadResourceFromVersionManager(file);
+    }
+
     @Override
     public String getModelJSonSchema(String name) {
         final String file = MODEL_DIR + "/" + name + EXTENSION;
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 81fea9dd310..4949f1c7e2f 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
@@ -44,6 +44,7 @@ import org.apache.camel.tooling.model.LanguageModel;
 import org.apache.camel.tooling.model.MainModel;
 import org.apache.camel.tooling.model.OtherModel;
 import org.apache.camel.tooling.model.ReleaseModel;
+import org.apache.camel.tooling.model.TransformerModel;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
@@ -62,7 +63,9 @@ public class DefaultCamelCatalog extends AbstractCamelCatalog 
implements CamelCa
     public static final String FIND_DATA_FORMAT_NAMES = "findDataFormatNames";
     public static final String LIST_DATA_FORMATS_AS_JSON = 
"listDataFormatsAsJson";
     public static final String FIND_LANGUAGE_NAMES = "findLanguageNames";
+    public static final String FIND_TRANSFORMER_NAMES = "findTransformerNames";
     public static final String LIST_LANGUAGES_AS_JSON = "listLanguagesAsJson";
+    public static final String LIST_TRANSFORMERS_AS_JSON = 
"listTransformersAsJson";
 
     private final VersionHelper version = new VersionHelper();
 
@@ -223,6 +226,11 @@ public class DefaultCamelCatalog extends 
AbstractCamelCatalog implements CamelCa
         return cache(FIND_LANGUAGE_NAMES, runtimeProvider::findLanguageNames);
     }
 
+    @Override
+    public List<String> findTransformerNames() {
+        return cache(FIND_TRANSFORMER_NAMES, 
runtimeProvider::findTransformerNames);
+    }
+
     @Override
     public List<String> findModelNames() {
         return cache("findModelNames", () -> {
@@ -328,11 +336,21 @@ public class DefaultCamelCatalog extends 
AbstractCamelCatalog implements CamelCa
         return cache("language-" + name, name, super::languageJSonSchema);
     }
 
+    @Override
+    public String transformerJSonSchema(String name) {
+        return cache("transformer-" + name, name, 
super::transformerJSonSchema);
+    }
+
     @Override
     public LanguageModel languageModel(String name) {
         return cache("language-model-" + name, name, super::languageModel);
     }
 
+    @Override
+    public TransformerModel transformerModel(String name) {
+        return cache("transformer-model-" + name, name, 
super::transformerModel);
+    }
+
     @Override
     public String otherJSonSchema(String name) {
         return cache("other-" + name, name, super::otherJSonSchema);
@@ -429,6 +447,15 @@ public class DefaultCamelCatalog extends 
AbstractCamelCatalog implements CamelCa
                 .toList()));
     }
 
+    @Override
+    public String listTransformersAsJson() {
+        return cache(LIST_TRANSFORMERS_AS_JSON, () -> 
JsonMapper.serialize(findTransformerNames().stream()
+                .map(this::transformerJSonSchema)
+                .map(JsonMapper::deserialize)
+                .map(o -> o.get("transformer"))
+                .toList()));
+    }
+
     @Override
     public String listModelsAsJson() {
         return cache("listModelsAsJson", () -> 
JsonMapper.serialize(findModelNames().stream()
diff --git 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java
 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java
index c7c9ada2018..308b0de64f9 100644
--- 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java
+++ 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java
@@ -28,10 +28,12 @@ public class DefaultRuntimeProvider implements 
RuntimeProvider {
     private static final String COMPONENT_DIR = 
"org/apache/camel/catalog/components";
     private static final String DATAFORMAT_DIR = 
"org/apache/camel/catalog/dataformats";
     private static final String LANGUAGE_DIR = 
"org/apache/camel/catalog/languages";
+    private static final String TRANSFORMER_DIR = 
"org/apache/camel/catalog/transformers";
     private static final String OTHER_DIR = "org/apache/camel/catalog/others";
     private static final String COMPONENTS_CATALOG = 
"org/apache/camel/catalog/components.properties";
     private static final String DATA_FORMATS_CATALOG = 
"org/apache/camel/catalog/dataformats.properties";
     private static final String LANGUAGE_CATALOG = 
"org/apache/camel/catalog/languages.properties";
+    private static final String TRANSFORMER_CATALOG = 
"org/apache/camel/catalog/transformers.properties";
     private static final String OTHER_CATALOG = 
"org/apache/camel/catalog/others.properties";
 
     private CamelCatalog camelCatalog;
@@ -83,6 +85,11 @@ public class DefaultRuntimeProvider implements 
RuntimeProvider {
         return LANGUAGE_DIR;
     }
 
+    @Override
+    public String getTransformerJSonSchemaDirectory() {
+        return TRANSFORMER_DIR;
+    }
+
     @Override
     public String getOtherJSonSchemaDirectory() {
         return OTHER_DIR;
@@ -100,6 +107,10 @@ public class DefaultRuntimeProvider implements 
RuntimeProvider {
         return LANGUAGE_CATALOG;
     }
 
+    protected String getTransformerCatalog() {
+        return TRANSFORMER_CATALOG;
+    }
+
     protected String getOtherCatalog() {
         return OTHER_CATALOG;
     }
@@ -155,6 +166,23 @@ public class DefaultRuntimeProvider implements 
RuntimeProvider {
         return names;
     }
 
+    @Override
+    public List<String> findTransformerNames() {
+        List<String> names = new ArrayList<>();
+        try (InputStream is = 
getCamelCatalog().getVersionManager().getResourceAsStream(getTransformerCatalog()))
 {
+            if (is != null) {
+                try {
+                    CatalogHelper.loadLines(is, names);
+                } catch (IOException e) {
+                    // ignore
+                }
+            }
+        } catch (IOException e1) {
+            // ignore
+        }
+        return names;
+    }
+
     @Override
     public List<String> findOtherNames() {
         List<String> names = new ArrayList<>();
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 747d7b2c980..6ca4c43b5ad 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
@@ -23,6 +23,7 @@ public enum Kind {
     component,
     dataformat,
     language,
+    transformer,
     other,
     eip
 }
diff --git 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java
 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java
index 7cb20d0da26..2122773f5dc 100644
--- 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java
+++ 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java
@@ -65,6 +65,11 @@ public interface RuntimeProvider {
      */
     String getLanguageJSonSchemaDirectory();
 
+    /**
+     * Gets the directory where the transformer json files are stored in the 
catalog JAR file
+     */
+    String getTransformerJSonSchemaDirectory();
+
     /**
      * Gets the directory where the other (miscellaneous) json files are 
stored in the catalog JAR file
      */
@@ -85,6 +90,11 @@ public interface RuntimeProvider {
      */
     List<String> findLanguageNames();
 
+    /**
+     * Find all the transfromer names from the Camel catalog supported by the 
provider
+     */
+    List<String> findTransformerNames();
+
     /**
      * Find all the other (miscellaneous) names from the Camel catalog 
supported by the provider
      */
diff --git 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java
 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java
index 84e58818272..bcdc8f19fc8 100644
--- 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java
+++ 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java
@@ -54,6 +54,10 @@ public class CamelCatalogJsonSchemaTest {
         return CATALOG.findLanguageNames().stream();
     }
 
+    static Stream<String> transformers() {
+        return CATALOG.findTransformerNames().stream();
+    }
+
     static Stream<String> models() {
         return CATALOG.findModelNames().stream();
     }
@@ -154,6 +158,21 @@ public class CamelCatalogJsonSchemaTest {
         assertTrue(tree.has("properties"), name);
     }
 
+    @ParameterizedTest
+    @MethodSource("transformers")
+    public void testValidateJsonTransformers(String name) throws Exception {
+        String json = CATALOG.transformerJSonSchema(name);
+        LOG.info("Validating {} transformer", name);
+        LOG.debug("with JSon: {}", json);
+
+        // validate we can parse the json
+        ObjectMapper mapper = new ObjectMapper();
+        JsonNode tree = mapper.readTree(json);
+        assertNotNull(tree);
+
+        assertTrue(tree.has("transformer"), name);
+    }
+
     @ParameterizedTest
     @MethodSource("models")
     public void testValidateJsonModels(String name) throws Exception {
diff --git 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index f4725ca3afc..7a020b5721f 100644
--- 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -84,7 +84,7 @@ public class CamelCatalogTest {
         assertTrue(names.contains("log"));
         assertTrue(names.contains("docker"));
         assertTrue(names.contains("jms"));
-        // TODO: camel4 assertTrue(names.contains("activemq"));
+        assertTrue(names.contains("activemq"));
         assertTrue(names.contains("zookeeper-master"));
     }
 
@@ -127,6 +127,17 @@ public class CamelCatalogTest {
         assertTrue(names.contains("hl7terser"));
     }
 
+    @Test
+    public void testFindTransformerNames() {
+        List<String> names = catalog.findTransformerNames();
+
+        assertTrue(names.contains("application-cloudevents-json"));
+        assertTrue(names.contains("application-x-java-object"));
+        assertTrue(names.contains("aws-cloudtrail-application-cloudevents"));
+        
assertTrue(names.contains("azure-storage-queue-application-cloudevents"));
+        assertTrue(names.contains("http-application-cloudevents"));
+    }
+
     @Test
     public void testFindModelNames() {
         List<String> names = catalog.findModelNames();
@@ -868,6 +879,17 @@ public class CamelCatalogTest {
         assertNotNull(tree);
     }
 
+    @Test
+    public void testListTransformersAsJson() throws Exception {
+        String json = catalog.listTransformersAsJson();
+        assertNotNull(json);
+
+        // validate we can parse the json
+        ObjectMapper mapper = new ObjectMapper();
+        JsonNode tree = mapper.readTree(json);
+        assertNotNull(tree);
+    }
+
     @Test
     public void testListModelsAsJson() throws Exception {
         String json = catalog.listModelsAsJson();
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java 
b/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java
index b388dd8fcca..a8bcc084e84 100644
--- a/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java
@@ -47,6 +47,14 @@ public interface CatalogCamelContext extends CamelContext {
      */
     String getLanguageParameterJsonSchema(String languageName) throws 
IOException;
 
+    /**
+     * Returns the JSON schema representation of the {@link 
org.apache.camel.spi.DataTypeTransformer}
+     * parameters for the given transformer name.
+     *
+     * @return the json or <tt>null</tt> if the transformer does not exist
+     */
+    String getTransformerParameterJsonSchema(String transformerName) throws 
IOException;
+
     /**
      * Returns the JSON schema representation of the EIP parameters for the 
given EIP name.
      *
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java 
b/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
index d54364fdede..788fc9b96b6 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
@@ -50,6 +50,14 @@ public interface JSonSchemaResolver {
      */
     String getLanguageJSonSchema(String name);
 
+    /**
+     * Returns the transformer information as JSON format.
+     *
+     * @param  name the transformer name
+     * @return      transformer details in JSon
+     */
+    String getTransformerJSonSchema(String name);
+
     /**
      * Returns the other (miscellaneous) information as JSON format.
      *
diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index c1aed60c68a..118af831990 100644
--- 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -1463,8 +1463,24 @@ public abstract class AbstractCamelContext extends 
BaseService
         return null;
     }
 
+    @Override
+    public String getTransformerParameterJsonSchema(String transformerName) 
throws IOException {
+        String name = sanitizeFileName(transformerName) + ".json";
+        String path = 
DefaultTransformerResolver.DATA_TYPE_TRANSFORMER_RESOURCE_PATH + name;
+        String inputStream = doLoadResource(transformerName, path, 
"transformer");
+        if (inputStream != null) {
+            return inputStream;
+        }
+        return null;
+    }
+
     // Helper methods
     // -----------------------------------------------------------------------
+
+    private String sanitizeFileName(String fileName) {
+        return fileName.replaceAll("[^A-Za-z0-9-]", "-");
+    }
+
     @Override
     public String getEipParameterJsonSchema(String eipName) throws IOException 
{
         // the eip json schema may be in some of the sub-packages so look until
diff --git 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
index 84d998fa840..89255902142 100644
--- 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
@@ -53,6 +53,7 @@ import org.apache.camel.tooling.model.JsonMapper;
 import org.apache.camel.tooling.model.LanguageModel;
 import org.apache.camel.tooling.model.MainModel;
 import org.apache.camel.tooling.model.OtherModel;
+import org.apache.camel.tooling.model.TransformerModel;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ReflectionHelper;
 import org.apache.camel.util.StringHelper;
@@ -112,6 +113,15 @@ public abstract class AbstractCamelCatalog {
         return json != null ? JsonMapper.generateLanguageModel(json) : null;
     }
 
+    public String transformerJSonSchema(String name) {
+        return getJSonSchemaResolver().getTransformerJSonSchema(name);
+    }
+
+    public TransformerModel transformerModel(String name) {
+        String json = transformerJSonSchema(name);
+        return json != null ? JsonMapper.generateTransformerModel(json) : null;
+    }
+
     public String otherJSonSchema(String name) {
         return getJSonSchemaResolver().getOtherJSonSchema(name);
     }
diff --git 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
index dbda9bd0d35..bf427a042c4 100644
--- 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
@@ -72,6 +72,16 @@ public class CamelContextJSonSchemaResolver implements 
JSonSchemaResolver {
         return null;
     }
 
+    @Override
+    public String getTransformerJSonSchema(String name) {
+        try {
+            return camelContext.getTransformerParameterJsonSchema(name);
+        } catch (IOException e) {
+            // ignore
+        }
+        return null;
+    }
+
     @Override
     public String getOtherJSonSchema(String name) {
         // not supported
diff --git 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java
index f88a7b1bf9b..0523b0d46fc 100644
--- 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/DefaultRuntimeCamelCatalog.java
@@ -29,6 +29,7 @@ import org.apache.camel.tooling.model.EipModel;
 import org.apache.camel.tooling.model.LanguageModel;
 import org.apache.camel.tooling.model.MainModel;
 import org.apache.camel.tooling.model.OtherModel;
+import org.apache.camel.tooling.model.TransformerModel;
 
 /**
  * Default {@link RuntimeCamelCatalog}.
@@ -116,6 +117,16 @@ public class DefaultRuntimeCamelCatalog extends 
AbstractCamelCatalog implements
         return cache("language-model-" + name, name, super::languageModel);
     }
 
+    @Override
+    public String transformerJSonSchema(String name) {
+        return cache("transformer-" + name, name, 
super::transformerJSonSchema);
+    }
+
+    @Override
+    public TransformerModel transformerModel(String name) {
+        return cache("transformer-model-" + name, name, 
super::transformerModel);
+    }
+
     @Override
     public String otherJSonSchema(String name) {
         return cache("other-" + name, name, super::otherJSonSchema);
diff --git 
a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
 
b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
index d9c2e6c0bf4..300ec9535d0 100644
--- 
a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
+++ 
b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
@@ -49,6 +49,11 @@ class ModelJSonSchemaResolver implements JSonSchemaResolver {
         throw new UnsupportedOperationException("Only getModelJSonSchema is in 
use");
     }
 
+    @Override
+    public String getTransformerJSonSchema(String name) {
+        throw new UnsupportedOperationException("Only getModelJSonSchema is in 
use");
+    }
+
     @Override
     public String getOtherJSonSchema(String name) {
         throw new UnsupportedOperationException("Only getModelJSonSchema is in 
use");

Reply via email to