in karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelDefinitionGenerator.java [57:97]
private String generateModel(String classFullName, JsonObject obj, JsonObject definitions) {
String className = classSimple(classFullName);
String stepName = getStepNameForClass(className);
Map<String, JsonObject> properties = getClassProperties(stepName, obj);
List<String> required = obj.containsKey("required") ? obj.getJsonArray("required").getList() : List.of();
List<String> attrs = new ArrayList<>();
if (className.endsWith("Definition")) {
attrs.add(" stepName?: string = '" + stepName + "'");
} else if (className.endsWith("Expression")) {
attrs.add(" expressionName?: string = '" + stepName + "'");
} else if (className.endsWith("DataFormat")) {
attrs.add(" dataFormatName?: string = '" + stepName + "'");
}
properties.keySet().stream().sorted(getComparator(stepName)).forEach(name -> {
JsonObject attributeValue = properties.get(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(name, attributeValue, req, definitions, generatedValue);
var excludeProperty = excludeProperty(stepName, name, attributeType);
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 if ((className.equals("ParamDefinition") || className.equals("ResponseHeaderDefinition")) && name.equals("allowableValues")) { // exception for ParamDefinition
attrs.add(" " + name + r + ": string [] = []");
} else if (excludeProperty) {
} else if (!Objects.equals(attributeType, "null")) {
attrs.add(" " + name + r + ": " + attributeType);
}
});
String s2 = String.join(";\n", attrs) + ((attrs.isEmpty()) ? "" : ";");
return String.format(readFileText(modelTemplate), className, s2);
}