private String generateModel()

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


    private String generateModel(String classFullName, JsonObject obj, JsonObject definitions, Map<String, String> stepNames, Map<String, JsonObject> dslMetadata) {
        String className = classSimple(classFullName);
        JsonObject properties = obj.containsKey("oneOf")
                ? obj.getJsonArray("oneOf").getJsonObject(1).getJsonObject("properties")
                : obj.getJsonObject("properties");

        List<String> required = obj.containsKey("required") ? obj.getJsonArray("required").getList() : List.of();
        List<String> attrs = new ArrayList<>();
        String stepName = stepNames.get(className);
        if (className.endsWith("Definition") && stepNames.containsKey(className)) {
            attrs.add("    stepName?: string = '" + stepName + "'");
        } else if (className.endsWith("Expression") && stepNames.containsKey(className)) {
            attrs.add("    expressionName?: string = '" + stepNames.get(className) + "'");
        } else if (className.endsWith("DataFormat") && stepNames.containsKey(className)) {
            attrs.add("    dataFormatName?: string = '" + stepNames.get(className) + "'");
        }
        if (properties != null) {
            properties.getMap().keySet().stream().sorted(getComparator(stepName)).forEach(name -> {
                JsonObject attributeValue = properties.getJsonObject(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(attributeValue, req, definitions, generatedValue);
                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 {
                    attrs.add("    " + name + r + ": " + attributeType);
                }
            });
        }
        String s2 = attrs.stream().collect(Collectors.joining(";\n")) + ((attrs.isEmpty()) ? "" : ";");
        return String.format(readFileText(modelTemplate), className, s2);
    }