in karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelDefinitionYamlStepGenerator.java [93:166]
private String generateModelApi(String classFullName, JsonObject obj) {
String className = classSimple(classFullName);
String stepName = getStepNameForClass(className);
String s1 = getStringToRequired(obj, className);
AtomicReference<String> s3 = new AtomicReference<>("");
Map<String, JsonObject> properties = getClassProperties(stepName, obj);
Map<String, String> attrs = new HashMap<>();
properties.keySet().stream().sorted(getComparator(stepName)).forEach(aName -> {
if (aName.equals("uri")) {
s3.set("\n def = ComponentApi.parseElementUri(def);");
}
JsonObject aValue = properties.get(aName);
boolean attributeIsArray = isAttributeRefArray(aValue);
String attributeArrayClass = getAttributeArrayClass(aName, aValue);
if (attributeIsArray && aName.equals("steps") && ! className.equals("ChoiceDefinition") && ! className.equals("SwitchDefinition") && ! className.equals("KameletDefinition")) {
attrs.put(aName, " def.steps = CamelDefinitionYamlStep.readSteps(element?.steps);\n");
} else if (attributeIsArray && !aName.equals("steps") && !attributeArrayClass.equals("string") && !getDeprecatedClasses().contains(attributeArrayClass)&& !Objects.equals(aName, "allowableValues")) { // exception for allowableValues
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, attributeArrayClass);
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)
&& !getDeprecatedClasses().contains(getAttributeClass(aValue)) // exception for deprecated classes
) {
String attributeClass = getAttributeClass(aValue);
var excludeProperty = excludeProperty(stepName, aName, attributeClass);
if (!excludeProperty) {
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 if ("YAMLDataFormat".equals(className) && "constructor".equals(aName)) {
String yamlConstructor =
" if (element.constructor !== undefined) {\n" +
" def._constructor = element.constructor;\n" +
" delete (def as any).constructor;\n" +
" }";
attrs.put(aName, yamlConstructor);
}
});
return String.format(readFileText(modelTemplate), className, s1, s3, attrs.values().stream().collect(Collectors.joining("")));
}