private String generateModel()

in karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelDefinitionGenerator.java [57:97]


    private String generateModel(String classFullName, JsonObject obj, JsonObject definitions) {

        String className = classSimple(classFullName);
        String stepName = getStepNameForClass(className);
        Map<String, JsonObject> properties = getClassProperties(stepName, obj);

        List<String> required = obj.containsKey("required") ? obj.getJsonArray("required").getList() : List.of();
        List<String> attrs = new ArrayList<>();
        if (className.endsWith("Definition")) {
            attrs.add("    stepName?: string = '" + stepName + "'");
        } else if (className.endsWith("Expression")) {
            attrs.add("    expressionName?: string = '" + stepName + "'");
        } else if (className.endsWith("DataFormat")) {
            attrs.add("    dataFormatName?: string = '" + stepName + "'");
        }

        properties.keySet().stream().sorted(getComparator(stepName)).forEach(name -> {
            JsonObject attributeValue = properties.get(name);
            boolean req = required.contains(name);
            String generatedValue = ("id".equals(name) && stepName != null && !"routeConfiguration".equals(stepName)) ? "'" + stepName + "-' + uuidv4().substring(0,4)" : null;
            String attributeType = getAttributeType(name, attributeValue, req, definitions, generatedValue);

            var excludeProperty  = excludeProperty(stepName, name, attributeType);

            String r = req ? "" : "?";
            name = name.equals("constructor") ? "_constructor" : name; // exception for YAMLDataFormat
            if (className.equals("ChoiceDefinition") && name.equals("steps")) { // exception for ChoiceDefinition
            } else if (className.equals("SwitchDefinition") && name.equals("steps")) { // exception for SwitchDefinition
            } else if (className.equals("KameletDefinition") && name.equals("steps")) { // exception for KameletDefinition
            } else if ((className.equals("ParamDefinition") || className.equals("ResponseHeaderDefinition")) && name.equals("allowableValues")) { // exception for ParamDefinition
                attrs.add("    " + name + r + ": string [] = []");
            } else if (excludeProperty) {

            } else if (!Objects.equals(attributeType, "null")) {
                attrs.add("    " + name + r + ": " + attributeType);
            }
        });

        String s2 = String.join(";\n", attrs) + ((attrs.isEmpty()) ? "" : ";");
        return String.format(readFileText(modelTemplate), className, s2);
    }