private String generateModelApi()

in karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelDefinitionApiGenerator.java [132:181]


    private String generateModelApi(String classFullName, JsonObject obj) {
        String className = classSimple(classFullName);
        String stepName = getStepNameForClass(className);

        Map<String, JsonObject> properties = getClassProperties(stepName, obj);

        List<String> attrs = new ArrayList<>();
        AtomicBoolean hasId = new AtomicBoolean(false);
        if (className.equals("ExpressionDefinition")) {
            attrs.add("        element = element !== undefined ? element : {groovy: CamelDefinitionApi.createGroovyExpression({expression: \"\"})}");
        }
        properties.keySet().stream().sorted(getComparator(stepName)).forEach(name -> {
            JsonObject aValue = properties.get(name);
            if ("id".equals(name)) {
                hasId.set(true);
            }
            boolean attributeIsArray = isAttributeRefArray(aValue);
            String attributeArrayClass = getAttributeArrayClass(name, aValue);
            if (attributeIsArray && name.equals("steps") && ! className.equals("ChoiceDefinition") && ! className.equals("SwitchDefinition") && ! className.equals("KameletDefinition")) {
                attrs.add("        def.steps = CamelDefinitionApi.createSteps(element?.steps);");
            } else if (attributeIsArray && !name.equals("steps") && !attributeArrayClass.equals("string") && !Objects.equals(name, "allowableValues")) { // exception for allowableValues
                String code = String.format(
                        "        def.%1$s = element && element?.%1$s ? element?.%1$s.map((x:any) => CamelDefinitionApi.create%2$s(x)) :[];"
                        , name, attributeArrayClass);
                attrs.add(code);
            } else if (isAttributeRef(aValue)
                    && !getAttributeClass(aValue).equals("SagaActionUriDefinition") // SagaActionUriDefinition is exception
                    && !getAttributeClass(aValue).equals("ToDefinition") // exception for ToDefinition (in REST Methods)
                    && !getAttributeClass(aValue).equals("ToDynamicDefinition") // exception for ToDynamicDefinition (in REST Methods)
                    && !getDeprecatedClasses().contains(getAttributeClass(aValue)) // exception for deprecated classes
            ) {
                String attributeClass = getAttributeClass(aValue);

                var excludeProperty  = excludeProperty(stepName, name, attributeClass);
                if (!excludeProperty) {
                    String template = attributeClass.equals("ExpressionDefinition")
                            ? "        def.%1$s = CamelDefinitionApi.create%2$s(element.%1$s); \n"
                            : "        if (element?.%1$s !== undefined) { \n" +
                            "            def.%1$s = CamelDefinitionApi.create%2$s(element.%1$s); \n" +
                            "        }";
                    String code = String.format(template, name, getAttributeClass(aValue));
                    attrs.add(code);
                }
            }
        });
        String stringToRequired = getStringToRequired(obj, className);
        String s2 = stringToRequired.isEmpty() ? "" : "\n" + stringToRequired;
        String s3 = !attrs.isEmpty() ? "\n" + String.join("\n", attrs) : "";
        return String.format(readFileText(modelTemplate), className, s2, s3);
    }