private void createCamelDefinitions()

in karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelDefinitionYamlStepGenerator.java [44:92]


    private void createCamelDefinitions() throws Exception {
        StringBuilder camelModel = new StringBuilder();
        camelModel.append(readFileText(modelHeader));

        String camelYamlDSL = getCamelYamlDSL();
        JsonObject definitions = new JsonObject(camelYamlDSL).getJsonObject("items").getJsonObject("definitions");

        List<String> modelList = getClasses(definitions, "org.apache.camel");
        modelList.forEach(classFullName -> {
            String className = classSimple(classFullName);
            camelModel.append("    ").append(className).append(",\n");
        });
        camelModel.append("} from '../model/CamelDefinition';\n");
        camelModel.append("import {CamelUtil} from './CamelUtil';\n");
        camelModel.append("import {CamelMetadataApi} from '../model/CamelMetadata';\n");
        camelModel.append("import {ComponentApi} from './ComponentApi';\n\n");


        camelModel.append("export class CamelDefinitionYamlStep { \n\n");

        // generate create functions for Definitions
        modelList.forEach(classFullName -> {
            String model = generateModelApi(classFullName, definitions.getJsonObject(classFullName));
            camelModel.append(model).append(System.lineSeparator());
        });
        // generate readStep function
        Map<String, String> stepNames  = getProcessorStepName(definitions.getJsonObject("org.apache.camel.model.ProcessorDefinition").getJsonObject("properties"));
        StringBuilder cs = new StringBuilder(
                "    static readStep = (body: any, clone: boolean = false): CamelElement => {\n" +
                "        const name = Object.getOwnPropertyNames(body)[0];\n" +
                "        const newBody = CamelUtil.camelizeBody(name, body[name], clone);\n" +
                "        switch (name) { \n"
        );
        stepNames.forEach((className, stepName) -> {
            String code = String.format("            case '%1$s': return CamelDefinitionYamlStep.read%2$s(newBody);\n",stepName, className);
            cs.append(code);
        });
        cs.append("            case 'toD': return CamelDefinitionYamlStep.readToDynamicDefinition(newBody);\n");  //exception for ToDynamicDefinition
        cs.append(
                "            default: return new CamelElement('');\n" +
                "        }\n" +
                "    }\n");
        camelModel.append(cs);

        camelModel.append(readFileText(modelFooter));

        camelModel.append("}\n");
        writeFileText(targetModel, camelModel.toString());
    }