in karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelMetadataGenerator.java [147:203]
private String getMetadataCode(String className, Map<String, JsonObject> classProps, Map<String, String> stepNames, String folder) {
StringBuilder code = new StringBuilder();
code.append(String.format("export const %s: ElementMeta[] = [\n", className));
classProps.entrySet().stream().filter(entry -> {
if (entry.getValue() == null) {
System.out.println(entry.getKey());
return false;
} else {
return true;
}
}).forEach(entry -> {
String name = entry.getKey();
JsonObject properties = entry.getValue();
String stepName = stepNames.get(name);
String json = folder.equals("model") ? getMetaModel(stepName) : (folder.equals("language") ? getMetaLanguage(stepName) : getMetaDataFormat(stepName));
if (json != null) {
JsonObject model = new JsonObject(json).getJsonObject("model");
JsonObject props = new JsonObject(json).getJsonObject("properties");
List propsLowerCase = props.getMap().keySet().stream().map(s -> s.toLowerCase()).collect(Collectors.toList());
Comparator<String> comparator = Comparator.comparing(e -> {
if (propsLowerCase.contains(e.toLowerCase())) return propsLowerCase.indexOf(e.toLowerCase());
else return propsLowerCase.size() + 1;
});
String title = model.getString("title");
String description = model.getString("description");
String label = model.getString("label");
code.append(String.format(" new ElementMeta('%s', '%s', '%s', \"%s\", '%s', [\n", stepName, name, title, description, label));
properties.getMap().keySet().stream().sorted(comparator).forEach((pname) -> {
Object v = properties.getMap().get(pname);
JsonObject p = props.getJsonObject(pname);
if ("inheritErrorHandler".equals(pname) && p == null) {
} else {
PropertyMeta pm = getAttributeType(new JsonObject((Map) v));
String displayName = p != null && p.containsKey("displayName") ? p.getString("displayName") : pname;
String desc = p != null && p.containsKey("description") ? p.getString("description") : pname;
String en = p != null && p.containsKey("enum") ? p.getString("enum").replace("[", "").replace("]", "") : "";
Boolean required = p != null && p.containsKey("required") ? p.getBoolean("required") : false;
Boolean secret = p != null && p.containsKey("secret") ? p.getBoolean("secret") : false;
String defaultValue = p != null && p.containsKey("defaultValue") ? p.getString("defaultValue") : "";
defaultValue = defaultValue.length() == 1 && defaultValue.toCharArray()[0] == '\\' ? "\\\\" : defaultValue;
String labels = p != null && p.containsKey("label") ? p.getString("label") : "";
String javaType = getJavaType(p);
if (name.equals("ProcessDefinition") && pname.equals("ref")) javaType = "org.apache.camel.Processor"; // exception for processor
code.append(String.format(
" new PropertyMeta('%s', '%s', \"%s\", '%s', '%s', '%s', %b, %b, %b, %b, '%s', '%s'),\n",
pname, displayName, desc, pm.type, en, defaultValue, required, secret, pm.isArray, (pm.isArray ? pm.type : pm.isObject), labels, javaType));
}
});
code.append(" ]),\n");
}
});
code.append("]\n\n");
return code.toString();
}