You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2022/08/18 08:11:31 UTC

[camel-k-runtime] 09/10: chore: remove deprecated yaml dsl mojos

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

lburgazzoli pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git

commit 38defedf4bc50db54a9d911670888de57eff5f1b
Author: Luca Burgazzoli <lb...@gmail.com>
AuthorDate: Wed Aug 17 16:48:27 2022 +0200

    chore: remove deprecated yaml dsl mojos
---
 pom.xml                                            |   4 -
 .../tooling/maven/GenerateYamlEndpointsSchema.java | 146 ------
 .../maven/GenerateYamlLoaderSupportClasses.java    | 272 ----------
 .../maven/GenerateYamlParserSupportClasses.java    | 290 -----------
 .../camel/k/tooling/maven/GenerateYamlSchema.java  | 564 ---------------------
 .../camel/k/tooling/maven/GenerateYamlSupport.java | 176 -------
 .../k/tooling/maven/support/IndexerSupport.java    | 114 -----
 .../k/tooling/maven/support/MavenSupport.java      |  24 -
 .../k/tooling/maven/support/ToolingSupport.java    |  58 ---
 .../processors/GenerateYamlSupportClassesTest.java |  57 ---
 10 files changed, 1705 deletions(-)

diff --git a/pom.xml b/pom.xml
index 53e00e87..3eea8ea4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -50,10 +50,6 @@
         <groovy-version>3.0.12</groovy-version>
         <immutables-version>2.9.0</immutables-version>
 
-        <!-- overridden camel dependencies versions -->
-        <json-schema-validator-version>2.2.14</json-schema-validator-version>
-        <jandex-version>2.4.3.Final</jandex-version>
-
         <!-- plugins -->
         <gmavenplus-plugin-version>1.13.1</gmavenplus-plugin-version>
         <maven-compiler-plugin-version>3.10.1</maven-compiler-plugin-version>
diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlEndpointsSchema.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlEndpointsSchema.java
deleted file mode 100644
index f4b42987..00000000
--- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlEndpointsSchema.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * 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.k.tooling.maven;
-
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Objects;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.camel.catalog.CamelCatalog;
-import org.apache.camel.catalog.DefaultCamelCatalog;
-import org.apache.camel.k.tooling.maven.support.ToolingSupport;
-import org.apache.camel.tooling.model.ComponentModel;
-import org.apache.camel.util.StringHelper;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.plugins.annotations.ResolutionScope;
-
-@Mojo(
-    name = "generate-yaml-endpoints-schema",
-    inheritByDefault = false,
-    defaultPhase = LifecyclePhase.GENERATE_SOURCES,
-    requiresDependencyResolution = ResolutionScope.COMPILE,
-    threadSafe = true,
-    requiresProject = false)
-public class GenerateYamlEndpointsSchema extends GenerateYamlSupport {
-    @Parameter
-    protected List<String> bannedDefinitions;
-    @Parameter(property = "camel.k.yaml.schema", defaultValue = "${project.build.directory}/yaml-${project.version}.json")
-    private File outputFile;
-
-    private ObjectNode definitions;
-
-    @Override
-    public void execute() throws MojoFailureException {
-        final ObjectMapper mapper = new ObjectMapper();
-        final ObjectNode root = mapper.createObjectNode();
-
-        // Schema
-        root.put("$schema", "http://json-schema.org/draft-04/schema#");
-        root.put("type", "object");
-
-        // Schema sections
-        this.definitions = root.putObject("definitions");
-
-        final CamelCatalog catalog = new DefaultCamelCatalog();
-        for (String componentName : catalog.findComponentNames()) {
-            ComponentModel component = catalog.componentModel(componentName);
-            if (!definitions.has(component.getScheme())) {
-                ObjectNode node = definitions.putObject(component.getScheme());
-                node.put("type", "object");
-
-                processEndpointOption(node, component.getEndpointPathOptions());
-                processEndpointOption(node, component.getEndpointParameterOptions());
-            }
-
-            if (component.getAlternativeSchemes() != null) {
-                for (String scheme: component.getAlternativeSchemes().split(",")) {
-                    if (!definitions.has(scheme)) {
-                        definitions.putObject(scheme)
-                            .put("type", "object")
-                            .put("$ref", "#/definitions/" + component.getScheme());
-                    }
-                }
-            }
-        }
-
-        try {
-            ToolingSupport.mkparents(outputFile);
-
-            mapper.writerWithDefaultPrettyPrinter().writeValue(outputFile, root);
-        } catch (IOException e) {
-            throw new MojoFailureException(e.getMessage(), e);
-        }
-    }
-
-    private void processEndpointOption(ObjectNode root, Collection<ComponentModel.EndpointOptionModel> options) {
-        options.stream()
-            .sorted(Comparator.comparing(ComponentModel.EndpointOptionModel::getName))
-            .forEach(option -> {
-                if (option.isRequired()) {
-                    root.withArray("required").add(option.getName());
-                }
-
-                String name = StringHelper.camelCaseToDash(option.getName());
-                ObjectNode node = root.with("properties").putObject(name);
-
-                processEndpointOption(node, option);
-            });
-    }
-
-    private void processEndpointOption(ObjectNode root, ComponentModel.EndpointOptionModel option) {
-        if (option.getDescription() != null) {
-            root.put("description", option.getDescription());
-        }
-        if (option.getDefaultValue() != null) {
-            root.put("default", Objects.toString(option.getDefaultValue()));
-        }
-        if (option.getEnums() != null) {
-            option.getEnums().forEach(value -> root.withArray("enum").add(value));
-        }
-
-        switch (option.getType()) {
-            case "string":
-            case "object":
-            case "array":
-            case "duration":
-                root.put("type", "string");
-                break;
-            case "boolean":
-                root.put("type", "boolean");
-                break;
-            case "integer":
-                root.put("type", "integer");
-                break;
-            case "number":
-                root.put("type", "number");
-                break;
-            default:
-                throw new IllegalArgumentException(
-                    "Unable to determine type for name: " + option.getName() + ", type: " + option.getType());
-
-        }
-    }
-}
diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlLoaderSupportClasses.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlLoaderSupportClasses.java
deleted file mode 100644
index 6ba81af3..00000000
--- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlLoaderSupportClasses.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * 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.k.tooling.maven;
-
-
-import java.io.IOException;
-import java.nio.file.Paths;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.lang.model.element.Modifier;
-
-import com.fasterxml.jackson.core.Version;
-import com.fasterxml.jackson.databind.Module;
-import com.squareup.javapoet.ClassName;
-import com.squareup.javapoet.CodeBlock;
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.TypeSpec;
-import org.apache.camel.catalog.CamelCatalog;
-import org.apache.camel.catalog.DefaultCamelCatalog;
-import org.apache.camel.k.tooling.maven.support.ToolingSupport;
-import org.apache.camel.util.AntPathMatcher;
-import org.apache.camel.util.StringHelper;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.plugins.annotations.ResolutionScope;
-import org.jboss.jandex.AnnotationInstance;
-import org.jboss.jandex.AnnotationValue;
-import org.jboss.jandex.ClassInfo;
-
-@Mojo(
-    name = "generate-yaml-loader-support-classes",
-    inheritByDefault = false,
-    defaultPhase = LifecyclePhase.GENERATE_SOURCES,
-    requiresDependencyResolution = ResolutionScope.COMPILE,
-    threadSafe = true,
-    requiresProject = false)
-public class GenerateYamlLoaderSupportClasses extends GenerateYamlSupport {
-    @Parameter
-    protected List<String> bannedDefinitions;
-    @Parameter(defaultValue = "${project.build.directory}/generated-sources/camel")
-    protected String output;
-
-    @Override
-    public void execute() throws MojoFailureException {
-        try {
-            JavaFile.builder("org.apache.camel.k.loader.yaml", generateJacksonModule())
-                .indent("    ")
-                .build()
-                .writeTo(Paths.get(output));
-            JavaFile.builder("org.apache.camel.k.loader.yaml", generateReifiers())
-                .indent("    ")
-                .build()
-                .writeTo(Paths.get(output));
-            JavaFile.builder("org.apache.camel.k.loader.yaml", generateResolver())
-                .indent("    ")
-                .build()
-                .writeTo(Paths.get(output));
-        } catch (IOException e) {
-            throw new MojoFailureException(e.getMessage(), e);
-        }
-    }
-
-    public final TypeSpec generateJacksonModule() {
-        TypeSpec.Builder type = TypeSpec.classBuilder("YamlModule");
-        type.addModifiers(Modifier.PUBLIC, Modifier.FINAL);
-        type.superclass(Module.class);
-        type.addMethod(
-            MethodSpec.methodBuilder("getModuleName")
-                .addModifiers(Modifier.PUBLIC)
-                .addAnnotation(Override.class)
-                .returns(String.class)
-                .addCode(CodeBlock.builder().addStatement("return $S", "camel-yaml").build())
-                .build()
-        );
-        type.addMethod(
-            MethodSpec.methodBuilder("version")
-                .addModifiers(Modifier.PUBLIC)
-                .addAnnotation(Override.class)
-                .returns(Version.class)
-                .addCode(CodeBlock.builder().addStatement("return $L", "Version.unknownVersion()").build())
-                .build()
-        );
-
-        MethodSpec.Builder mb = MethodSpec.methodBuilder("setupModule")
-            .addModifiers(Modifier.PUBLIC)
-            .addParameter(Module.SetupContext.class, "context");
-
-        definitions(EXPRESSION_DEFINITION_CLASS).forEach(
-            (k, v) -> mb.addStatement("context.registerSubtypes(new com.fasterxml.jackson.databind.jsontype.NamedType($L.class, $S))", v.name().toString(), k)
-        );
-        definitions(DATAFORMAT_DEFINITION_CLASS).forEach(
-            (k, v) -> mb.addStatement("context.registerSubtypes(new com.fasterxml.jackson.databind.jsontype.NamedType($L.class, $S))", v.name().toString(), k)
-        );
-        definitions(LOAD_BALANCE_DEFINITION_CLASS).forEach(
-            (k, v) -> mb.addStatement("context.registerSubtypes(new com.fasterxml.jackson.databind.jsontype.NamedType($L.class, $S))", v.name().toString(), k)
-        );
-
-        annotated(YAML_MIXIN_ANNOTATION).forEach(i -> {
-            final AnnotationInstance annotation = i.classAnnotation(YAML_MIXIN_ANNOTATION);
-            final AnnotationValue targets = annotation.value("value");
-
-            String name = i.toString();
-            if (i.nestingType() == ClassInfo.NestingType.INNER) {
-                name = i.enclosingClass().toString() + "." + i.simpleName();
-            }
-
-            if (targets != null) {
-                for (String target: targets.asStringArray()) {
-                    mb.addStatement("context.setMixInAnnotations($L.class, $L.class);", target, name);
-                }
-            }
-        });
-
-
-        type.addMethod(mb.build());
-
-        return type.build();
-    }
-
-    public final TypeSpec generateReifiers() {
-        TypeSpec.Builder type = TypeSpec.classBuilder("YamlReifiers");
-        type.addModifiers(Modifier.PUBLIC, Modifier.FINAL);
-
-        MethodSpec.Builder mb = MethodSpec.methodBuilder("registerReifiers")
-            .addModifiers(Modifier.PUBLIC)
-            .addModifiers(Modifier.STATIC);
-
-        annotated(YAML_NODE_DEFINITION_ANNOTATION).forEach(i -> {
-            final AnnotationInstance annotation = i.classAnnotation(YAML_NODE_DEFINITION_ANNOTATION);
-            final AnnotationValue reifiers = annotation.value("reifiers");
-
-            if (reifiers != null) {
-                String name = i.toString();
-                if (i.nestingType() == ClassInfo.NestingType.INNER) {
-                    name = i.enclosingClass().toString() + "." + i.simpleName();
-                }
-
-                for (String reifier: reifiers.asStringArray()) {
-                    mb.addStatement("org.apache.camel.reifier.ProcessorReifier.registerReifier($L.class, $L::new)", name, reifier);
-                }
-            }
-        });
-
-        type.addMethod(mb.build());
-
-        return type.build();
-    }
-
-    public final TypeSpec generateResolver() {
-        Set<String> ids = new HashSet<>();
-
-        MethodSpec.Builder mb = MethodSpec.methodBuilder("resolve")
-            .addAnnotation(Override.class)
-            .addModifiers(Modifier.PUBLIC)
-            .addParameter(ClassName.get("org.apache.camel", "CamelContext"), "camelContext")
-            .addParameter(ClassName.get("java.lang", "String"), "id")
-            .returns(ClassName.get("org.apache.camel.k.loader.yaml.spi", "StepParser"));
-
-        mb.beginControlFlow("switch(id)");
-
-        mb.addComment("custom parsers");
-
-        annotated(YAML_STEP_PARSER_ANNOTATION)
-            .sorted(Comparator.comparing(i -> i.name().toString()))
-            .forEach(
-                i -> {
-                    AnnotationValue id = i.classAnnotation(YAML_STEP_PARSER_ANNOTATION).value("id");
-                    if (id != null && ids.add(id.asString())) {
-                        mb.beginControlFlow("case $S:", id.asString());
-                        mb.addStatement("return new $L()", i.name().toString());
-                        mb.endControlFlow();
-                    }
-
-                    AnnotationValue aliases = i.classAnnotation(YAML_STEP_PARSER_ANNOTATION).value("aliases");
-                    if (aliases != null) {
-                        for (String alias : aliases.asStringArray()) {
-                            if (ids.add(alias)) {
-                                mb.beginControlFlow("case $S:", alias);
-                                mb.addStatement("return new $L()", i.name().toString());
-                                mb.endControlFlow();
-                            }
-                        }
-                    }
-                }
-            );
-
-        mb.addComment("auto generated parsers");
-
-        annotated(XML_ROOT_ELEMENT_ANNOTATION_CLASS)
-            .forEach(
-                i -> {
-                    AnnotationInstance meta = i.classAnnotation(METADATA_ANNOTATION);
-                    AnnotationInstance root = i.classAnnotation(XML_ROOT_ELEMENT_ANNOTATION_CLASS);
-
-                    if (meta == null || root == null) {
-                        return;
-                    }
-
-                    AnnotationValue name = root.value("name");
-                    AnnotationValue label = meta.value("label");
-
-                    if (name == null || label == null) {
-                        return;
-                    }
-
-                    if (bannedDefinitions != null) {
-                        for (String bannedDefinition: bannedDefinitions) {
-                            if (AntPathMatcher.INSTANCE.match(bannedDefinition.replace('.', '/'), i.name().toString('/'))) {
-                                getLog().debug("Skipping definition: " + i.name().toString());
-                                return;
-                            }
-                        }
-                    }
-
-                    Set<String> labels = Set.of(label.asString().split(",", -1));
-                    if (labels.contains("eip")) {
-                        String id = StringHelper.camelCaseToDash(name.asString());
-                        if (ids.add(id)) {
-                            mb.beginControlFlow("case $S:", id);
-                            mb.addStatement("return new org.apache.camel.k.loader.yaml.parser.TypedProcessorStepParser($L.class)", i.name().toString());
-                            mb.endControlFlow();
-                        }
-                    }
-                }
-            );
-
-        mb.addComment("endpoint dsl");
-
-        CamelCatalog catalog = new DefaultCamelCatalog();
-        catalog.findComponentNames().stream()
-            .sorted()
-            .map(catalog::componentModel)
-            .flatMap(component -> ToolingSupport.combine(component.getScheme(), component.getAlternativeSchemes()))
-            .filter(ids::add)
-            .forEach(scheme -> {
-                mb.beginControlFlow("case $S:", scheme);
-                mb.addStatement("return new org.apache.camel.k.loader.yaml.parser.EndpointStepParser($S)", scheme);
-                mb.endControlFlow();
-            });
-
-        mb.beginControlFlow("default:");
-        mb.addStatement("return lookup(camelContext, id)");
-        mb.endControlFlow();
-        mb.endControlFlow();
-
-        return TypeSpec.classBuilder("YamlStepResolver")
-            .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
-            .addSuperinterface(ClassName.get("org.apache.camel.k.loader.yaml.spi", "StepParser.Resolver"))
-            .addMethod(mb.build())
-            .build();
-    }
-}
diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlParserSupportClasses.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlParserSupportClasses.java
deleted file mode 100644
index 88b8a835..00000000
--- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlParserSupportClasses.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * 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.k.tooling.maven;
-
-
-import java.io.IOException;
-import java.nio.file.Paths;
-import java.util.Map;
-
-import javax.lang.model.element.Modifier;
-
-import com.fasterxml.jackson.annotation.JsonAlias;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.squareup.javapoet.AnnotationSpec;
-import com.squareup.javapoet.ClassName;
-import com.squareup.javapoet.CodeBlock;
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.ParameterizedTypeName;
-import com.squareup.javapoet.TypeSpec;
-import org.apache.camel.catalog.CamelCatalog;
-import org.apache.camel.catalog.DefaultCamelCatalog;
-import org.apache.camel.k.tooling.maven.support.ToolingSupport;
-import org.apache.camel.model.DataFormatDefinition;
-import org.apache.camel.model.LoadBalancerDefinition;
-import org.apache.camel.model.language.ExpressionDefinition;
-import org.apache.camel.util.StringHelper;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.plugins.annotations.ResolutionScope;
-
-@Mojo(
-    name = "generate-yaml-parser-support-classes",
-    inheritByDefault = false,
-    defaultPhase = LifecyclePhase.GENERATE_SOURCES,
-    requiresDependencyResolution = ResolutionScope.COMPILE,
-    threadSafe = true)
-public class GenerateYamlParserSupportClasses extends GenerateYamlSupport {
-    @Parameter(defaultValue = "${project.build.directory}/generated-sources/camel")
-    protected String output;
-
-    @Override
-    public void execute() throws MojoFailureException {
-        try {
-            JavaFile.builder("org.apache.camel.k.loader.yaml.parser", generateHasExpression())
-                .indent("    ")
-                .build()
-                .writeTo(Paths.get(output));
-            JavaFile.builder("org.apache.camel.k.loader.yaml.parser", generateHasDataFormat())
-                .indent("    ")
-                .build()
-                .writeTo(Paths.get(output));
-            JavaFile.builder("org.apache.camel.k.loader.yaml.parser", generateHasLoadBalancerType())
-                .indent("    ")
-                .build()
-                .writeTo(Paths.get(output));
-            JavaFile.builder("org.apache.camel.k.loader.yaml.parser", generateHasEndpointConsumer())
-                .indent("    ")
-                .build()
-                .writeTo(Paths.get(output));
-            JavaFile.builder("org.apache.camel.k.loader.yaml.parser", generateHasEndpointProducer())
-                .indent("    ")
-                .build()
-                .writeTo(Paths.get(output));
-        } catch (IOException e) {
-            throw new MojoFailureException(e.getMessage(), e);
-        }
-    }
-
-    public final TypeSpec generateHasExpression() {
-        TypeSpec.Builder type = TypeSpec.interfaceBuilder("HasExpression");
-        type.addModifiers(Modifier.PUBLIC);
-        type.addMethod(
-            MethodSpec.methodBuilder("setExpression")
-                .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
-                .addParameter(ExpressionDefinition.class, "expressionDefinition")
-                .addAnnotation(
-                    AnnotationSpec.builder(JsonTypeInfo.class)
-                        .addMember("use", "$L", "JsonTypeInfo.Id.NAME")
-                        .addMember("include", "$L", "JsonTypeInfo.As.WRAPPER_OBJECT")
-                        .build())
-                .build()
-        );
-
-        type.addMethod(
-            MethodSpec.methodBuilder("getExpression")
-                .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
-                .returns(ExpressionDefinition.class)
-                .build()
-        );
-
-        definitions(EXPRESSION_DEFINITION_CLASS).forEach(
-            (k, v) -> {
-                String name = k;
-                name = StringHelper.capitalize(name);
-                name = name.replace("_", "");
-                name = name.replace("-", "");
-
-                type.addMethod(MethodSpec.methodBuilder("set" + name)
-                    .addAnnotation(
-                        AnnotationSpec.builder(JsonAlias.class).addMember("value", "$S", k).build())
-                    .addModifiers(Modifier.PUBLIC, Modifier.DEFAULT)
-                    .addParameter(loadClass(v), "definition")
-                    .addCode(
-                        CodeBlock.builder()
-                            .beginControlFlow("if (getExpression() != null)")
-                            .addStatement("throw new IllegalArgumentException(\"And expression has already been set\")")
-                            .endControlFlow()
-                            .addStatement("setExpression(definition);").build())
-                    .build()
-                );
-            }
-        );
-
-        return type.build();
-    }
-
-    public final TypeSpec generateHasDataFormat() {
-        TypeSpec.Builder type = TypeSpec.interfaceBuilder("HasDataFormat");
-        type.addModifiers(Modifier.PUBLIC);
-        type.addMethod(
-            MethodSpec.methodBuilder("setDataFormatType")
-                .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
-                .addParameter(DataFormatDefinition.class, "dataFormatType")
-                .addAnnotation(
-                    AnnotationSpec.builder(JsonAlias.class).
-                        addMember("value", "{$S, $S}", "data-format-type", "data-format")
-                        .build())
-                .addAnnotation(
-                    AnnotationSpec.builder(JsonTypeInfo.class)
-                        .addMember("use", "$L", "JsonTypeInfo.Id.NAME")
-                        .addMember("include", "$L", "JsonTypeInfo.As.WRAPPER_OBJECT")
-                        .build())
-                .build()
-        );
-
-        type.addMethod(
-            MethodSpec.methodBuilder("getDataFormatType")
-                .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
-                .returns(DataFormatDefinition.class)
-                .build()
-        );
-
-        definitions(DATAFORMAT_DEFINITION_CLASS).forEach(
-            (k, v) -> {
-                String name = k;
-                name = StringHelper.capitalize(name);
-                name = name.replace("_", "");
-                name = name.replace("-", "");
-
-                type.addMethod(MethodSpec.methodBuilder("set" + name)
-                    .addAnnotation(
-                        AnnotationSpec.builder(JsonAlias.class).addMember("value", "$S", k).build())
-                    .addModifiers(Modifier.PUBLIC, Modifier.DEFAULT)
-                    .addParameter(loadClass(v), "definition")
-                    .addCode(
-                        CodeBlock.builder()
-                            .beginControlFlow("if (getDataFormatType() != null)")
-                            .addStatement("throw new IllegalArgumentException(\"A data format has already been set\")")
-                            .endControlFlow()
-                            .addStatement("setDataFormatType(definition);")
-                            .build())
-                    .build()
-                );
-            }
-        );
-
-        return type.build();
-    }
-
-    public final TypeSpec generateHasLoadBalancerType() {
-        TypeSpec.Builder type = TypeSpec.interfaceBuilder("HasLoadBalancerType");
-        type.addModifiers(Modifier.PUBLIC);
-        type.addMethod(
-            MethodSpec.methodBuilder("setLoadBalancerType")
-                .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
-                .addParameter(LoadBalancerDefinition.class, "loadbalancer")
-                .addAnnotation(
-                    AnnotationSpec.builder(JsonTypeInfo.class)
-                        .addMember("use", "$L", "JsonTypeInfo.Id.NAME")
-                        .addMember("include", "$L", "JsonTypeInfo.As.WRAPPER_OBJECT")
-                        .build())
-                .build()
-        );
-
-        type.addMethod(
-            MethodSpec.methodBuilder("getLoadBalancerType")
-                .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
-                .returns(LoadBalancerDefinition.class)
-                .build()
-        );
-
-        definitions(LOAD_BALANCE_DEFINITION_CLASS).forEach(
-            (k, v) -> {
-                String name = k;
-                name = StringHelper.capitalize(name);
-                name = name.replace("_", "");
-                name = name.replace("-", "");
-
-                type.addMethod(MethodSpec.methodBuilder("set" + name)
-                    .addAnnotation(
-                        AnnotationSpec.builder(JsonAlias.class).addMember("value", "$S", k).build())
-                    .addModifiers(Modifier.PUBLIC, Modifier.DEFAULT)
-                    .addParameter(loadClass(v), "definition")
-                    .addCode(
-                        CodeBlock.builder()
-                            .beginControlFlow("if (getLoadBalancerType() != null)")
-                            .addStatement("throw new IllegalArgumentException(\"A load-balancer has already been set\")")
-                            .endControlFlow()
-                            .addStatement("setLoadBalancerType(definition);").build())
-                    .build()
-                );
-            }
-        );
-
-        return type.build();
-    }
-
-    public final TypeSpec generateHasEndpointConsumer() {
-        TypeSpec.Builder type = TypeSpec.interfaceBuilder("HasEndpointConsumer");
-        type.addModifiers(Modifier.PUBLIC);
-        type.addSuperinterface(ClassName.get("org.apache.camel.k.loader.yaml.spi", "HasEndpoint"));
-
-        CamelCatalog catalog = new DefaultCamelCatalog();
-        catalog.findComponentNames().stream()
-            .map(catalog::componentModel)
-            .filter(component -> !component.isProducerOnly())
-            .flatMap(component -> ToolingSupport.combine(component.getScheme(), component.getAlternativeSchemes()))
-            .sorted()
-            .distinct()
-            .forEach(scheme -> generateHasEndpointProducer(scheme, type));
-
-        return type.build();
-    }
-
-    public final TypeSpec generateHasEndpointProducer() {
-        TypeSpec.Builder type = TypeSpec.interfaceBuilder("HasEndpointProducer");
-        type.addModifiers(Modifier.PUBLIC);
-        type.addSuperinterface(ClassName.get("org.apache.camel.k.loader.yaml.spi", "HasEndpoint"));
-
-        CamelCatalog catalog = new DefaultCamelCatalog();
-        catalog.findComponentNames().stream()
-            .map(catalog::componentModel)
-            .filter(component -> !component.isConsumerOnly())
-            .flatMap(component -> ToolingSupport.combine(component.getScheme(), component.getAlternativeSchemes()))
-            .sorted()
-            .distinct()
-            .forEach(scheme -> generateHasEndpointProducer(scheme, type));
-
-        return type.build();
-    }
-
-    private static void generateHasEndpointProducer(String scheme, TypeSpec.Builder type) {
-        String name = StringHelper.dashToCamelCase(scheme);
-        name = name.replaceAll("[^a-zA-Z0-9]", "");
-        name = name.toLowerCase();
-
-        type.addMethod(MethodSpec.methodBuilder("set_" + name)
-            .addAnnotation(AnnotationSpec.builder(JsonProperty.class).addMember("value", "$S", scheme).build())
-            .addModifiers(Modifier.PUBLIC, Modifier.DEFAULT)
-            .addParameter(ParameterizedTypeName.get(Map.class, String.class, Object.class), "parameters")
-            .addCode(
-                CodeBlock.builder()
-                    .beginControlFlow("if (getEndpointScheme() != null)")
-                    .addStatement("throw new IllegalArgumentException(\"And endpoint has already been set\")")
-                    .endControlFlow()
-                    .addStatement("setEndpointScheme($S);", scheme)
-                    .addStatement("setParameters(parameters);")
-                    .build())
-            .build()
-        );
-    }
-}
diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlSchema.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlSchema.java
deleted file mode 100644
index c8b16851..00000000
--- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlSchema.java
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
- * 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.k.tooling.maven;
-
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.camel.k.tooling.maven.support.IndexerSupport;
-import org.apache.camel.k.tooling.maven.support.MavenSupport;
-import org.apache.camel.k.tooling.maven.support.ToolingSupport;
-import org.apache.camel.util.AntPathMatcher;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.StringHelper;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.plugins.annotations.ResolutionScope;
-import org.jboss.jandex.AnnotationInstance;
-import org.jboss.jandex.AnnotationValue;
-import org.jboss.jandex.ClassInfo;
-import org.jboss.jandex.DotName;
-import org.jboss.jandex.FieldInfo;
-import org.jboss.jandex.MethodInfo;
-import org.jboss.jandex.ParameterizedType;
-import org.jboss.jandex.Type;
-
-@Mojo(
-    name = "generate-yaml-schema",
-    inheritByDefault = false,
-    defaultPhase = LifecyclePhase.GENERATE_SOURCES,
-    requiresDependencyResolution = ResolutionScope.COMPILE,
-    threadSafe = true,
-    requiresProject = false)
-public class GenerateYamlSchema extends GenerateYamlSupport {
-    @Parameter
-    protected List<String> bannedDefinitions;
-    @Parameter(property = "camel.k.yaml.schema", defaultValue = "${project.build.directory}/yaml-${project.version}.json")
-    private File outputFile;
-
-    private ObjectNode items;
-    private ObjectNode definitions;
-
-    @Override
-    public void execute() throws MojoFailureException {
-        final ObjectMapper mapper = new ObjectMapper();
-        final ObjectNode root = mapper.createObjectNode();
-
-        // Schema
-        root.put("$schema", "http://json-schema.org/draft-04/schema#");
-        root.put("type", "array");
-
-        // Schema sections
-        this.items = root.putObject("items");
-        this.definitions = this.items.putObject("definitions");
-
-        definitions(EXPRESSION_DEFINITION_CLASS).entrySet().stream()
-            .sorted(Map.Entry.comparingByKey())
-            .forEach(entry -> {
-                processType(
-                    definitions.with(entry.getValue().name().toString()),
-                    entry.getValue());
-
-                definitions.with("expressions")
-                    .put("type", "object")
-                    .with("properties")
-                        .putObject(StringHelper.camelCaseToDash(entry.getKey()))
-                        .put("$ref", "#/items/definitions/" + entry.getValue().name().toString());
-            });
-        definitions(DATAFORMAT_DEFINITION_CLASS).entrySet().stream()
-            .sorted(Map.Entry.comparingByKey())
-            .forEach(entry -> {
-                processType(
-                    definitions.with(entry.getValue().name().toString()),
-                    entry.getValue());
-
-                definitions.with("dataformats")
-                    .put("type", "object")
-                    .with("properties")
-                        .putObject(StringHelper.camelCaseToDash(entry.getKey()))
-                        .put("$ref", "#/items/definitions/" + entry.getValue().name().toString());
-            });
-
-        // custom node definitions
-        annotated(YAML_NODE_DEFINITION_ANNOTATION)
-            .sorted(Comparator.comparing(entry -> entry.name().toString()))
-            .forEach(i -> processType(definitions.with(i.name().toString()), i));
-
-        Set<String> ids = new HashSet<>();
-
-        implementors(ERROR_HANDLER_CLASS)
-            .sorted(Comparator.comparing(entry -> entry.name().toString()))
-            .forEach(
-                entry -> {
-                    ObjectNode node = definitions.putObject(entry.name().toString());
-                    if (hasStringConstructor(entry)) {
-                        ArrayNode anyOf = node.putArray("anyOf");
-                        anyOf.addObject()
-                            .put("type", "string");
-
-                        node = anyOf.addObject();
-                    }
-
-                    node.put("type", "object");
-
-                    for (MethodInfo mi: IndexerSupport.methods(view.get(), entry)) {
-                        if (mi.returnType().kind() != Type.Kind.VOID) {
-                            continue;
-                        }
-                        if (mi.parameters().size() != 1) {
-                            continue;
-                        }
-                        if (mi.parameters().get(0).kind() != Type.Kind.PRIMITIVE) {
-                            continue;
-                        }
-                        if (!mi.name().startsWith("set")) {
-                            continue;
-                        }
-
-                        String methodName = StringHelper.after(mi.name(), "set");
-                        String propertyName = StringHelper.camelCaseToDash(methodName);
-                        ObjectNode property = node.with("properties").with(propertyName);
-
-                        setJsonSchemaType(property, mi.parameters().get(0));
-                    }
-                }
-            );
-
-        // custom parsers
-        annotated(YAML_STEP_PARSER_ANNOTATION)
-            .sorted(Comparator.comparing(entry -> entry.name().toString()))
-            .forEach(
-                entry -> {
-                    boolean schema = annotationValue(entry, YAML_STEP_PARSER_ANNOTATION, "schema")
-                        .map(AnnotationValue::asBoolean)
-                        .orElse(true);
-
-                    if (!schema) {
-                        return;
-                    }
-
-                    String stepId = annotationValue(entry, YAML_STEP_PARSER_ANNOTATION, "id")
-                        .map(AnnotationValue::asString)
-                        .orElseThrow(() -> new IllegalArgumentException("Missing id field"));
-
-                    if (!ids.add(stepId)) {
-                        return;
-                    }
-
-                    String model = annotationValue(entry, YAML_STEP_PARSER_ANNOTATION, "definition")
-                        .map(AnnotationValue::asString)
-                        .orElseThrow(() -> new IllegalArgumentException("Missing definitions field"));
-
-                    DotName name = DotName.createSimple(model);
-
-                    if (implementsInterface(entry, START_STEP_PARSER_CLASS)) {
-                        items.put("maxProperties", 1);
-                        items.with("properties")
-                            .putObject(stepId)
-                            .put("$ref", "#/items/definitions/" + name.toString());
-                    }
-
-                    if (implementsInterface(entry, PROCESSOR_STEP_PARSER_CLASS)) {
-                        ObjectNode stepNode = definitions.with("step");
-                        stepNode.put("type", "object");
-                        stepNode.put("maxProperties", 1);
-
-                        stepNode.with("properties")
-                            .putObject(stepId)
-                            .put("$ref", "#/items/definitions/" + name.toString());
-                    }
-                }
-            );
-
-        // auto generated parsers
-        annotated(XML_ROOT_ELEMENT_ANNOTATION_CLASS)
-            .forEach(
-                i -> {
-                    AnnotationInstance meta = i.classAnnotation(METADATA_ANNOTATION);
-                    AnnotationInstance xmlRoot = i.classAnnotation(XML_ROOT_ELEMENT_ANNOTATION_CLASS);
-
-                    if (meta == null || xmlRoot == null) {
-                        return;
-                    }
-
-                    AnnotationValue name = xmlRoot.value("name");
-                    AnnotationValue label = meta.value("label");
-
-                    if (name == null || label == null) {
-                        return;
-                    }
-
-                    if (bannedDefinitions != null) {
-                        for (String bannedDefinition: bannedDefinitions) {
-                            if (AntPathMatcher.INSTANCE.match(bannedDefinition.replace('.', '/'), i.name().toString('/'))) {
-                                getLog().debug("Skipping definition: " + i.name().toString());
-                                return;
-                            }
-                        }
-                    }
-
-                    Set<String> labels = Set.of(label.asString().split(",", -1));
-                    if (labels.contains("eip")) {
-                        String stepId = StringHelper.camelCaseToDash(name.asString());
-                        if (!ids.add(stepId)) {
-                            return;
-                        }
-
-                        processType(definitions.with(i.name().toString()), i);
-
-                        ObjectNode stepNode = definitions.with("step");
-                        stepNode.put("type", "object");
-                        stepNode.put("maxProperties", 1);
-
-                        stepNode.with("properties")
-                            .putObject(stepId)
-                            .put("$ref", "#/items/definitions/" + i.name().toString());
-                    }
-                }
-            );
-
-        try {
-            ToolingSupport.mkparents(outputFile);
-
-            mapper.writerWithDefaultPrettyPrinter().writeValue(outputFile, root);
-        } catch (IOException e) {
-            throw new MojoFailureException(e.getMessage(), e);
-        }
-    }
-
-    protected void processType(ObjectNode root, ClassInfo type) {
-        if (hasStringConstructor(type)) {
-            ArrayNode anyOf = root.putArray("anyOf");
-            anyOf.addObject()
-                .put("type", "string");
-
-            root = anyOf.addObject();
-        }
-
-        root.put("type", "object");
-
-        boolean allOf = false;
-        if (implementsInterface(type, HAS_EXPRESSION_CLASS)) {
-            root.withArray("allOf").addObject().put("$ref", "#/items/definitions/expressions");
-            allOf = true;
-        }
-        if (implementsInterface(type, HAS_DATAFORMAT_CLASS)) {
-            root.withArray("allOf").addObject().put("$ref", "#/items/definitions/dataformats");
-            allOf = true;
-        }
-
-        if (allOf) {
-            root = root.withArray("allOf").addObject();
-        }
-
-        processFields(root, type);
-        processMethods(root, type);
-    }
-
-    protected void processFields(ObjectNode root, ClassInfo type) {
-        for (FieldInfo fi : IndexerSupport.fields(view.get(), type)) {
-            if (fi.hasAnnotation(XML_TRANSIENT_CLASS)
-                || fi.hasAnnotation(JSON_IGNORE_CLASS)) {
-                continue;
-            }
-            if (!fi.hasAnnotation(XML_VALUE_ANNOTATION_CLASS)
-                && !fi.hasAnnotation(XML_ATTRIBUTE_ANNOTATION_CLASS)
-                && !fi.hasAnnotation(JSON_PROPERTY_CLASS)) {
-                continue;
-            }
-
-            String fieldName = firstPresent(
-                annotationValue(fi, XML_VALUE_ANNOTATION_CLASS, "name")
-                    .map(AnnotationValue::asString)
-                    .filter(value -> !"##default".equals(value)),
-                annotationValue(fi, XML_ATTRIBUTE_ANNOTATION_CLASS, "name")
-                    .map(AnnotationValue::asString)
-                    .filter(value -> !"##default".equals(value)),
-                annotationValue(fi, JSON_PROPERTY_CLASS, "value")
-                    .map(AnnotationValue::asString)
-                    .filter(value -> !"##default".equals(value))
-            ).orElseGet(fi::name);
-
-            String propertyName = StringHelper.camelCaseToDash(fieldName);
-            ObjectNode property = root.with("properties").with(propertyName);
-
-            setJsonSchemaType(property, fi.type());
-
-            annotationValue(fi, METADATA_ANNOTATION, "defaultValue")
-                .map(AnnotationValue::asString)
-                .filter(ObjectHelper::isEmpty)
-                .ifPresent(val -> property.put("default", val));
-            annotationValue(fi, METADATA_ANNOTATION, "description")
-                .map(AnnotationValue::asString)
-                .filter(ObjectHelper::isEmpty)
-                .ifPresent(val -> property.put("description", val));
-            annotationValue(fi, METADATA_ANNOTATION, "enums")
-                .map(AnnotationValue::asString)
-                .ifPresent(val -> setEnum(property, "enum", val));
-
-            if (isRequired(fi)) {
-                root.withArray("required").add(propertyName);
-            }
-        }
-    }
-
-    protected void processMethods(ObjectNode root, ClassInfo type) {
-        for (MethodInfo mi : IndexerSupport.methods(view.get(), type)) {
-            if (mi.hasAnnotation(JSON_IGNORE_CLASS)) {
-                continue;
-            }
-            if (!mi.hasAnnotation(JSON_PROPERTY_CLASS) && !mi.hasAnnotation(JSON_ALIAS_CLASS)) {
-                continue;
-            }
-            if (mi.parameters().size() != 1) {
-                continue;
-            }
-
-            String methodName = firstPresent(
-                annotationValue(mi, JSON_ALIAS_CLASS, "value")
-                    .map(AnnotationValue::asStringArray)
-                    .filter(values -> values.length > 0)
-                    .map(values -> values[0])
-                    .filter(ObjectHelper::isNotEmpty),
-                annotationValue(mi, JSON_PROPERTY_CLASS, "value")
-                    .map(AnnotationValue::asString)
-                    .filter(ObjectHelper::isNotEmpty)
-            ).orElseGet(mi::name);
-
-            if (methodName.startsWith("set")) {
-                methodName = StringHelper.after(methodName, "set");
-            }
-
-            String propertyName = StringHelper.camelCaseToDash(methodName);
-            ObjectNode property = root.with("properties").with(propertyName);
-
-            Type param =  mi.parameters().get(0);
-
-            // register types for classes
-            if (param.kind() == Type.Kind.CLASS) {
-                ClassInfo ci = view.get().getClassByName(param.name());
-                if (ci != null && !definitions.has(ci.name().toString())) {
-                    processType(definitions.putObject(ci.name().toString()), ci);
-                }
-            }
-
-            setJsonSchemaType(property, param);
-
-            annotationValue(mi, METADATA_ANNOTATION, "defaultValue")
-                .map(AnnotationValue::asString)
-                .filter(ObjectHelper::isEmpty)
-                .ifPresent(val -> property.put("default", val));
-            annotationValue(mi, METADATA_ANNOTATION, "description")
-                .map(AnnotationValue::asString)
-                .filter(ObjectHelper::isEmpty)
-                .ifPresent(val -> property.put("description", val));
-            annotationValue(mi, METADATA_ANNOTATION, "enums")
-                .map(AnnotationValue::asString)
-                .ifPresent(val -> setEnum(property, "enum", val));
-
-            if (isRequired(mi)) {
-                root.withArray("required").add(propertyName);
-            }
-        }
-    }
-
-    // *******************************************
-    //
-    // Helpers
-    //
-    // *******************************************
-
-    protected boolean isRequired(FieldInfo fi) {
-        return firstPresent(
-            annotationValue(fi, METADATA_ANNOTATION, "required")
-                .map(AnnotationValue::asBoolean),
-            annotationValue(fi, JSON_PROPERTY_CLASS, "required")
-                .map(AnnotationValue::asBoolean),
-            annotationValue(fi, XML_VALUE_ANNOTATION_CLASS, "required")
-                .map(AnnotationValue::asBoolean)
-        ).orElse(false);
-    }
-
-    protected boolean isRequired(MethodInfo mi) {
-        return firstPresent(
-            annotationValue(mi, METADATA_ANNOTATION, "required")
-                .map(AnnotationValue::asBoolean),
-            annotationValue(mi, JSON_PROPERTY_CLASS, "required")
-                .map(AnnotationValue::asBoolean)
-        ).orElse(false);
-    }
-
-    protected static void setEnum(ObjectNode root, String name, String enumValues) {
-        ObjectHelper.notNull(root, "root");
-        ObjectHelper.notNull(name, "name");
-
-        if (ObjectHelper.isEmpty(enumValues)) {
-            return;
-        }
-
-        ArrayNode array = root.putArray(name);
-        for (String enumValue: enumValues.split(",")) {
-            array.add(enumValue);
-        }
-    }
-
-    protected static boolean hasStringConstructor(ClassInfo type) {
-        DotName javaLangString = DotName.createSimple("java.lang.String");
-
-        for (MethodInfo mi: type.methods()) {
-            if (!"<init>".equals(mi.name())) {
-                continue;
-            }
-            if (mi.parameters().size() != 1) {
-                continue;
-            }
-            if (mi.parameters().get(0).name().equals(javaLangString)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    protected static boolean implementsInterface(ClassInfo type, DotName interfaceName) {
-        return type.interfaceNames().stream().anyMatch(i -> i.equals(interfaceName));
-    }
-
-    protected void setJsonSchemaType(ObjectNode node, Type type) {
-        if (type.kind() == Type.Kind.PARAMETERIZED_TYPE) {
-            ParameterizedType parameterized = type.asParameterizedType();
-
-            if (parameterized.arguments().size() == 1) {
-                final Type parametrizedType = parameterized.arguments().get(0);
-                final ClassInfo parametrizedTypeInfo = view.get().getClassByName(parametrizedType.name());
-
-                if (parameterized.name().equals(LIST_CLASS) && parametrizedTypeInfo != null) {
-                    if (parametrizedTypeInfo.name().equals(STEP_CLASS)) {
-                        node.put("type", "array");
-                        node.with("items").put("$ref", "#/items/definitions/step");
-                        return;
-                    }
-                    if (parametrizedTypeInfo.classAnnotation(YAML_NODE_DEFINITION_ANNOTATION) != null) {
-                        node.put("type", "array");
-                        node.with("items").put("$ref", "#/items/definitions/" + parametrizedTypeInfo.name().toString());
-                        return;
-                    }
-                }
-            }
-        }
-
-        final ClassInfo typeClass = view.get().getClassByName(type.name());
-        if (typeClass != null && typeClass.classAnnotation(YAML_NODE_DEFINITION_ANNOTATION) != null) {
-            node.put("$ref", "#/items/definitions/" + type.name().toString());
-            return;
-        }
-
-        final String javaType = type.name().toString();
-        switch (javaType) {
-            /*
-             * <tr><th scope="row"> boolean            <td style="text-align:center"> Z
-             * <tr><th scope="row"> byte               <td style="text-align:center"> B
-             * <tr><th scope="row"> char               <td style="text-align:center"> C
-             * <tr><th scope="row"> class or interface <td style="text-align:center"> L<i>classname</i>;
-             * <tr><th scope="row"> double             <td style="text-align:center"> D
-             * <tr><th scope="row"> float              <td style="text-align:center"> F
-             * <tr><th scope="row"> int                <td style="text-align:center"> I
-             * <tr><th scope="row"> long               <td style="text-align:center"> J
-             * <tr><th scope="row"> short              <td style="text-align:center"> S
-             */
-            case "java.lang.Class":
-                node.put("type", "string");
-                break;
-            case "[B":
-                node.put("type", "string");
-                node.put("format", "binary");
-                break;
-            case "[Ljava.lang.Class;":
-                node.put("type", "array");
-                node.with("items").put("type", "string");
-                break;
-            case "boolean":
-                node.put("type", "boolean");
-                break;
-            case "char":
-                node.put("type", "string");
-                break;
-            case "int":
-            case "float":
-            case "long":
-            case "double":
-                node.put("type", "number");
-                break;
-            default:
-                if (definitions.has(javaType)) {
-                    node.put("$ref", "#/items/definitions/" + javaType);
-                } else {
-                    try {
-                        Class<?> clazz = MavenSupport.getClassLoader(project).loadClass(javaType);
-
-                        if (clazz.isEnum()) {
-                            ArrayNode array = node.putArray("enum");
-                            for (Object t : clazz.getEnumConstants()) {
-                                array.add(((Enum) t).name());
-                            }
-                        } else if (CharSequence.class.isAssignableFrom(clazz)) {
-                            node.put("type", "string");
-                        } else if (Boolean.class.isAssignableFrom(clazz)) {
-                            node.put("type", "boolean");
-                        } else if (Number.class.isAssignableFrom(clazz)) {
-                            node.put("type", "number");
-                        } else if (Collection.class.isAssignableFrom(clazz)) {
-                            node.put("type", "array");
-                            node.with("items").put("type", "string");
-                        } else if (Map.class.isAssignableFrom(clazz)) {
-                            node.put("type", "object");
-                        } else {
-                            throw new IllegalStateException("Unknown java_type: " + javaType + " on node: " + node);
-                        }
-                    } catch (ClassNotFoundException e) {
-                        throw new IllegalStateException("Unknown java_type: " + javaType + " on node: " + node, e);
-                    }
-                }
-        }
-    }
-
-
-    @SafeVarargs
-    protected final <T> Optional<T> firstPresent(Optional<T>... optionals) {
-        for (Optional<T> optional: optionals) {
-            if (optional.isPresent()) {
-                return optional;
-            }
-        }
-
-        return Optional.empty();
-
-    }
-}
diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlSupport.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlSupport.java
deleted file mode 100644
index 3dc12eab..00000000
--- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlSupport.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * 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.k.tooling.maven;
-
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.function.Supplier;
-import java.util.stream.Stream;
-
-import org.apache.camel.k.tooling.maven.support.IndexerSupport;
-import org.apache.camel.k.tooling.maven.support.MavenSupport;
-import org.apache.camel.util.function.Suppliers;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-import org.jboss.jandex.AnnotationInstance;
-import org.jboss.jandex.AnnotationTarget;
-import org.jboss.jandex.AnnotationValue;
-import org.jboss.jandex.ClassInfo;
-import org.jboss.jandex.DotName;
-import org.jboss.jandex.FieldInfo;
-import org.jboss.jandex.IndexView;
-import org.jboss.jandex.MethodInfo;
-
-public abstract class GenerateYamlSupport extends AbstractMojo {
-
-    public static final DotName LIST_CLASS =
-        DotName.createSimple("java.util.List");
-
-    public static final DotName XML_ROOT_ELEMENT_ANNOTATION_CLASS =
-        DotName.createSimple("javax.xml.bind.annotation.XmlRootElement");
-    public static final DotName XML_ATTRIBUTE_ANNOTATION_CLASS =
-        DotName.createSimple("javax.xml.bind.annotation.XmlAttribute");
-    public static final DotName XML_VALUE_ANNOTATION_CLASS =
-        DotName.createSimple("javax.xml.bind.annotation.XmlValue");
-    public static final DotName XML_TRANSIENT_CLASS =
-        DotName.createSimple("javax.xml.bind.annotation.XmlTransient");
-
-    public static final DotName JSON_PROPERTY_CLASS =
-        DotName.createSimple("com.fasterxml.jackson.annotation.JsonProperty");
-    public static final DotName JSON_IGNORE_CLASS =
-        DotName.createSimple("com.fasterxml.jackson.annotation.JsonIgnore");
-    public static final DotName JSON_ALIAS_CLASS =
-        DotName.createSimple("com.fasterxml.jackson.annotation.JsonAlias");
-
-    public static final DotName METADATA_ANNOTATION =
-        DotName.createSimple("org.apache.camel.spi.Metadata");
-    public static final DotName EXPRESSION_DEFINITION_CLASS =
-        DotName.createSimple("org.apache.camel.model.language.ExpressionDefinition");
-    public static final DotName DATAFORMAT_DEFINITION_CLASS =
-        DotName.createSimple("org.apache.camel.model.DataFormatDefinition");
-    public static final DotName ERROR_HANDLER_CLASS =
-        DotName.createSimple("org.apache.camel.builder.ErrorHandlerBuilder");
-
-    public static final DotName YAML_NODE_DEFINITION_ANNOTATION =
-        DotName.createSimple("org.apache.camel.k.annotation.yaml.YAMLNodeDefinition");
-    public static final DotName YAML_STEP_PARSER_ANNOTATION =
-        DotName.createSimple("org.apache.camel.k.annotation.yaml.YAMLStepParser");
-    public static final DotName YAML_MIXIN_ANNOTATION =
-        DotName.createSimple("org.apache.camel.k.annotation.yaml.YAMLMixIn");
-    public static final DotName JSON_SCHEMA_IGNORE_ANNOTATION =
-        DotName.createSimple("org.apache.camel.k.annotation.yaml.JsonSchemaIgnore");
-    public static final DotName LOAD_BALANCE_DEFINITION_CLASS =
-        DotName.createSimple("org.apache.camel.model.LoadBalancerDefinition");
-    public static final DotName START_STEP_PARSER_CLASS =
-        DotName.createSimple("org.apache.camel.k.loader.yaml.spi.StartStepParser");
-    public static final DotName PROCESSOR_STEP_PARSER_CLASS =
-        DotName.createSimple("org.apache.camel.k.loader.yaml.spi.ProcessorStepParser");
-    public static final DotName HAS_EXPRESSION_CLASS =
-        DotName.createSimple("org.apache.camel.k.loader.yaml.parser.HasExpression");
-    public static final DotName HAS_DATAFORMAT_CLASS =
-        DotName.createSimple("org.apache.camel.k.loader.yaml.parser.HasDataFormat");
-    public static final DotName HAS_ENDPOINT_CONSUMER_CLASS =
-        DotName.createSimple("org.apache.camel.k.loader.yaml.parser.HasEndpointConsumer");
-    public static final DotName HAS_ENDPOINT_PRODUCER_CLASS =
-        DotName.createSimple("org.apache.camel.k.loader.yaml.parser.HasEndpointProducer");
-    public static final DotName HAS_URI_PRODUCER_CLASS =
-        DotName.createSimple("org.apache.camel.k.loader.yaml.parser.HasUri");
-    public static final DotName STEP_CLASS =
-        DotName.createSimple("org.apache.camel.k.loader.yaml.model.Step");
-
-
-    @Parameter(defaultValue = "${project}", readonly = true, required = true)
-    protected MavenProject project;
-
-    protected final Supplier<IndexView> view;
-
-    GenerateYamlSupport() {
-        this.view = Suppliers.memorize(() -> IndexerSupport.get(project));
-    }
-
-    protected Map<String, ClassInfo> definitions(DotName type) {
-        Map<String, ClassInfo> definitions = new HashMap<>();
-
-        for (ClassInfo ci: view.get().getAllKnownSubclasses(type)) {
-            AnnotationInstance instance = ci.classAnnotation(XML_ROOT_ELEMENT_ANNOTATION_CLASS);
-            if (instance != null) {
-                AnnotationValue name = instance.value("name");
-                if (name != null) {
-                    definitions.put(name.asString(), ci);
-                }
-            }
-        }
-
-        return Collections.unmodifiableMap(definitions);
-    }
-
-    protected Stream<ClassInfo> implementors(DotName type) {
-        return view.get().getAllKnownImplementors(type).stream();
-    }
-
-    protected Stream<ClassInfo> annotated(DotName type) {
-        return view.get().getAnnotations(type).stream()
-            .map(AnnotationInstance::target)
-            .filter(t -> t.kind() == AnnotationTarget.Kind.CLASS)
-            .map(AnnotationTarget::asClass);
-    }
-
-    protected Optional<AnnotationValue> annotationValue(AnnotationInstance instance, String name) {
-        return instance != null
-            ? Optional.ofNullable(instance.value(name))
-            : Optional.empty();
-    }
-
-    protected Optional<AnnotationValue> annotationValue(ClassInfo target, DotName annotationName, String name) {
-        return annotationValue(
-            target.classAnnotation(annotationName),
-            name
-        );
-    }
-
-    protected Optional<AnnotationValue> annotationValue(FieldInfo target, DotName annotationName, String name) {
-        return annotationValue(
-            target.annotation(annotationName),
-            name
-        );
-    }
-
-
-    protected Optional<AnnotationValue> annotationValue(MethodInfo target, DotName annotationName, String name) {
-        return annotationValue(
-            target.annotation(annotationName),
-            name
-        );
-    }
-
-
-    protected Class<?> loadClass(ClassInfo ci) {
-        return loadClass(ci.name().toString());
-    }
-
-    protected Class<?> loadClass(String className) {
-        try {
-            return MavenSupport.getClassLoader(project).loadClass(className);
-        } catch (ClassNotFoundException e) {
-            throw new RuntimeException(e);
-        }
-    }
-}
diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/IndexerSupport.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/IndexerSupport.java
deleted file mode 100644
index 455c63c4..00000000
--- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/IndexerSupport.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * 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.k.tooling.maven.support;
-
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.function.Predicate;
-
-import org.apache.maven.project.MavenProject;
-import org.jboss.jandex.ClassInfo;
-import org.jboss.jandex.CompositeIndex;
-import org.jboss.jandex.FieldInfo;
-import org.jboss.jandex.IndexReader;
-import org.jboss.jandex.IndexView;
-import org.jboss.jandex.MethodInfo;
-import org.jboss.jandex.Type;
-
-public final class IndexerSupport {
-    private IndexerSupport() {
-    }
-
-    public static IndexView get(MavenProject project) {
-        try {
-            ClassLoader classLoader = MavenSupport.getClassLoader(project);
-            Enumeration<URL> elements = classLoader.getResources("META-INF/jandex.idx");
-            List<IndexView> allIndex = new ArrayList<>();
-            Set<URL> locations = new HashSet<>();
-
-            while (elements.hasMoreElements()) {
-                URL url = elements.nextElement();
-                if (locations.add(url)) {
-                    try (InputStream is = url.openStream()) {
-                        allIndex.add(new IndexReader(is).read());
-                    }
-                }
-            }
-
-            return CompositeIndex.create(allIndex);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public static List<FieldInfo> fields(IndexView view, ClassInfo type) {
-        return fields(view, type, fi -> true);
-    }
-
-    public static List<FieldInfo> fields(IndexView view, ClassInfo type, Predicate<FieldInfo> filter) {
-        List<FieldInfo> answer = new ArrayList<>();
-
-        for (ClassInfo current = type; current != null;) {
-            for (FieldInfo fieldInfo: current.fields()) {
-                if (filter.test(fieldInfo)) {
-                    answer.add(fieldInfo);
-                }
-            }
-
-            Type superType = current.superClassType();
-            if (superType == null) {
-                break;
-            }
-
-            current = view.getClassByName(superType.name());
-        }
-
-        return answer;
-    }
-
-
-
-    public static List<MethodInfo> methods(IndexView view, ClassInfo type) {
-        return methods(view, type, mi -> true);
-    }
-
-    public static List<MethodInfo> methods(IndexView view, ClassInfo type, Predicate<MethodInfo> filter) {
-        List<MethodInfo> answer = new ArrayList<>();
-
-        for (ClassInfo current = type; current != null;) {
-            for (MethodInfo methodInfo: current.methods()) {
-                if (filter.test(methodInfo)) {
-                    answer.add(methodInfo);
-                }
-            }
-
-            Type superType = current.superClassType();
-            if (superType == null) {
-                break;
-            }
-
-            current = view.getClassByName(superType.name());
-        }
-
-        return answer;
-    }
-}
diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/MavenSupport.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/MavenSupport.java
index e45b5292..ee6e64c6 100644
--- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/MavenSupport.java
+++ b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/MavenSupport.java
@@ -16,41 +16,17 @@
  */
 package org.apache.camel.k.tooling.maven.support;
 
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
-import java.net.URLClassLoader;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Properties;
 import java.util.function.Consumer;
 
-import org.apache.maven.project.MavenProject;
-
 public final class MavenSupport {
     private MavenSupport() {
     }
 
-    public static ClassLoader getClassLoader(MavenProject project) {
-        if (project == null) {
-            return IndexerSupport.class.getClassLoader();
-        }
-
-        try {
-            List<String> elements = new ArrayList<>(project.getCompileClasspathElements());
-            URL[] urls = new URL[elements.size()];
-            for (int i = 0; i < elements.size(); ++i) {
-                urls[i] = new File(elements.get(i)).toURI().toURL();
-            }
-            return new URLClassLoader(urls, IndexerSupport.class.getClassLoader());
-        } catch (Exception e) {
-            return IndexerSupport.class.getClassLoader();
-        }
-    }
-
     public static String getVersion(Class<?> clazz, String path) {
         String version = null;
 
diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/ToolingSupport.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/ToolingSupport.java
deleted file mode 100644
index d7aca34e..00000000
--- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/ToolingSupport.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.k.tooling.maven.support;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.stream.Stream;
-
-public final class ToolingSupport {
-    private ToolingSupport() {
-    }
-
-    /**
-     * Combines the given items assuming they can be also composed
-     * by comma separated elements.
-     *
-     * @param items the items
-     * @return a stream of individual items
-     */
-    public static Stream<String> combine(String... items) {
-        Set<String> answer = new TreeSet<>();
-
-        for (String item: items) {
-            if (item == null) {
-                continue;
-            }
-
-            String[] elements = item.split(",");
-            for (String element: elements) {
-                answer.add(element);
-            }
-        }
-
-        return answer.stream();
-    }
-
-    public static void mkparents(File path) throws IOException {
-        if (!path.getParentFile().exists() && !path.getParentFile().mkdirs()) {
-            throw new IOException("Unable to create directory " + path.getParentFile());
-        }
-    }
-}
diff --git a/support/camel-k-maven-plugin/src/test/java/org/apache/camel/k/tooling/maven/processors/GenerateYamlSupportClassesTest.java b/support/camel-k-maven-plugin/src/test/java/org/apache/camel/k/tooling/maven/processors/GenerateYamlSupportClassesTest.java
deleted file mode 100644
index 52bfb261..00000000
--- a/support/camel-k-maven-plugin/src/test/java/org/apache/camel/k/tooling/maven/processors/GenerateYamlSupportClassesTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.k.tooling.maven.processors;
-
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.TypeSpec;
-import org.apache.camel.k.tooling.maven.GenerateYamlLoaderSupportClasses;
-import org.apache.camel.k.tooling.maven.GenerateYamlParserSupportClasses;
-import org.junit.jupiter.api.Test;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class GenerateYamlSupportClassesTest {
-    @Test
-    public void testGenerateHasDataFormat() {
-        final TypeSpec spec = new GenerateYamlParserSupportClasses().generateHasDataFormat();
-        final JavaFile file = JavaFile.builder("org.apache.camel.k.loader.yaml.parser", spec).build();
-
-        assertThat(file.packageName).isEqualTo("org.apache.camel.k.loader.yaml.parser");
-        assertThat(spec.name).isEqualTo("HasDataFormat");
-        assertThat(spec.methodSpecs).isNotEmpty();
-    }
-
-    @Test
-    public void testGenerateHasExpression() {
-        final TypeSpec spec = new GenerateYamlParserSupportClasses().generateHasExpression();
-        final JavaFile file = JavaFile.builder("org.apache.camel.k.loader.yaml.parser", spec).build();
-
-        assertThat(file.packageName).isEqualTo("org.apache.camel.k.loader.yaml.parser");
-        assertThat(spec.name).isEqualTo("HasExpression");
-        assertThat(spec.methodSpecs).isNotEmpty();
-    }
-
-    @Test
-    public void testGenerateJacksonModule() {
-        final TypeSpec spec = new GenerateYamlLoaderSupportClasses().generateJacksonModule();
-        final JavaFile file = JavaFile.builder("org.apache.camel.k.loader.yaml", spec).build();
-
-        assertThat(file.packageName).isEqualTo("org.apache.camel.k.loader.yaml");
-        assertThat(spec.name).isEqualTo("YamlModule");
-        assertThat(spec.methodSpecs).isNotEmpty();
-    }
-}