in karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelDefinitionApiGenerator.java [133:177]
private String generateModelApi(String classFullName, JsonObject obj) {
String className = classSimple(classFullName);
JsonObject properties = obj.containsKey("oneOf")
? obj.getJsonArray("oneOf").getJsonObject(1).getJsonObject("properties")
: obj.getJsonObject("properties");
List<String> attrs = new ArrayList<>();
AtomicBoolean hasId = new AtomicBoolean(false);
if (properties != null) {
properties.getMap().keySet().forEach(name -> {
JsonObject aValue = properties.getJsonObject(name);
if ("id".equals(name)) {
hasId.set(true);
}
if (isAttributeRefArray(aValue) && name.equals("steps") && ! className.equals("ChoiceDefinition") && ! className.equals("SwitchDefinition") && ! className.equals("KameletDefinition")) {
attrs.add(" def.steps = CamelDefinitionApi.createSteps(element?.steps);");
} else if (isAttributeRefArray(aValue) && !name.equals("steps")) {
String code = String.format(
" def.%1$s = element && element?.%1$s ? element?.%1$s.map((x:any) => CamelDefinitionApi.create%2$s(x)) :[];"
, name, getAttributeArrayClass(aValue));
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)
) {
String attributeClass = getAttributeClass(aValue);
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);
} else {
}
});
}
String stringToRequired = getStringToRequired(obj, className);
String s2 = stringToRequired.isEmpty() ? "" : "\n" + stringToRequired;
String s3 = attrs.size() > 0 ? "\n" + attrs.stream().collect(Collectors.joining("\n")) : "";
return String.format(readFileText(modelTemplate), className, s2, s3);
}