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);
}