in karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelDefinitionGenerator.java [71:105]
private String generateModel(String classFullName, JsonObject obj, JsonObject definitions, Map<String, String> stepNames, Map<String, JsonObject> dslMetadata) {
String className = classSimple(classFullName);
JsonObject properties = obj.containsKey("oneOf")
? obj.getJsonArray("oneOf").getJsonObject(1).getJsonObject("properties")
: obj.getJsonObject("properties");
List<String> required = obj.containsKey("required") ? obj.getJsonArray("required").getList() : List.of();
List<String> attrs = new ArrayList<>();
String stepName = stepNames.get(className);
if (className.endsWith("Definition") && stepNames.containsKey(className)) {
attrs.add(" stepName?: string = '" + stepName + "'");
} else if (className.endsWith("Expression") && stepNames.containsKey(className)) {
attrs.add(" expressionName?: string = '" + stepNames.get(className) + "'");
} else if (className.endsWith("DataFormat") && stepNames.containsKey(className)) {
attrs.add(" dataFormatName?: string = '" + stepNames.get(className) + "'");
}
if (properties != null) {
properties.getMap().keySet().stream().sorted(getComparator(stepName)).forEach(name -> {
JsonObject attributeValue = properties.getJsonObject(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(attributeValue, req, definitions, generatedValue);
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 {
attrs.add(" " + name + r + ": " + attributeType);
}
});
}
String s2 = attrs.stream().collect(Collectors.joining(";\n")) + ((attrs.isEmpty()) ? "" : ";");
return String.format(readFileText(modelTemplate), className, s2);
}