private String generateModelApi()

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


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

        String s1 = getStringToRequired(obj, className);
        AtomicReference<String> s3 = new AtomicReference<>("");

        JsonObject properties = obj.containsKey("oneOf")
                ? obj.getJsonArray("oneOf").getJsonObject(1).getJsonObject("properties")
                : obj.getJsonObject("properties");

        Map<String, String> attrs = new HashMap<>();
        if (properties != null) {
            properties.getMap().keySet().forEach(aName -> {
                if (aName.equals("uri")) {
                    s3.set("\n        def = ComponentApi.parseElementUri(def);");
                }
                JsonObject aValue = properties.getJsonObject(aName);
                if (isAttributeRefArray(aValue) && aName.equals("steps") && ! className.equals("ChoiceDefinition") && ! className.equals("SwitchDefinition") && ! className.equals("KameletDefinition")) {
                    attrs.put(aName, "        def.steps = CamelDefinitionYamlStep.readSteps(element?.steps);\n");
                } else if (isAttributeRefArray(aValue) && !aName.equals("steps")) {
                    String format = Arrays.asList("intercept", "interceptFrom", "interceptSendToEndpoint", "onCompletion", "onException").contains(aName)
                            ? "        def.%1$s = element && element?.%1$s ? element?.%1$s.map((x:any) => CamelDefinitionYamlStep.read%2$s(x.%1$s)) :[]; \n"
                            : "        def.%1$s = element && element?.%1$s ? element?.%1$s.map((x:any) => CamelDefinitionYamlStep.read%2$s(x)) :[]; \n";

                    String code = String.format(format, aName, getAttributeArrayClass(aValue));
                    attrs.put(aName, code);
                } else if (isAttributeRef(aValue) && getAttributeClass(aValue).equals("ExpressionDefinition")) { // Expressions implicits
                    String code = String.format(
                                    "        if (element?.%1$s !== undefined) { \n" +
                                    "            def.%1$s = CamelDefinitionYamlStep.read%2$s(element.%1$s); \n" +
                                    "        } else {\n" +
                                    "            const languageName: string | undefined = Object.keys(element).filter(key => CamelMetadataApi.hasLanguage(key))[0] || undefined;\n" +
                                    "            if (languageName){\n" +
                                    "                const exp:any = {};\n" +
                                    "                exp[languageName] = element[languageName]\n" +
                                    "                def.%1$s = CamelDefinitionYamlStep.readExpressionDefinition(exp);\n" +
                                    "                delete (def as any)[languageName];\n" +
                                    "            }\n" +
                                    "        }\n"
                            , aName, getAttributeClass(aValue));
                    attrs.put(aName, 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)
                            ) {
                    String code = String.format(
                                    "        if (element?.%1$s !== undefined) { \n" +
                                    "            if (Array.isArray(element.%1$s)) { \n" +
                                    "               def.%1$s = CamelDefinitionYamlStep.read%2$s(element.%1$s[0]); \n" +
                                    "            } else { \n" +
                                    "               def.%1$s = CamelDefinitionYamlStep.read%2$s(element.%1$s); \n" +
                                    "            } \n" +
                                    "        } \n"
                            , aName, getAttributeClass(aValue));
                    attrs.put(aName, code);
                } else {

                }
            });
        }
        return String.format(readFileText(modelTemplate), className, s1, s3, attrs.values().stream().collect(Collectors.joining("")));
    }