in library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ReplaceField.java [36:71]
public JsonNode process(@ExchangeProperty("enabled") String enabled, @ExchangeProperty("disabled") String disabled, @ExchangeProperty("renames") String renames,Exchange ex) throws InvalidPayloadException {
ObjectMapper mapper = new ObjectMapper();
List<String> enabledFields = new ArrayList<>();
List<String> disabledFields = new ArrayList<>();
List<String> renameFields = new ArrayList<>();
JsonNode jsonNodeBody = ex.getMessage().getBody(JsonNode.class);
Map<Object, Object> body = mapper.convertValue(jsonNodeBody, new TypeReference<Map<Object, Object>>(){});
if (ObjectHelper.isNotEmpty(enabled) && !enabled.equalsIgnoreCase("all")) {
enabledFields = Arrays.stream(enabled.split(",")).collect(Collectors.toList());
}
if (ObjectHelper.isNotEmpty(disabled) && !disabled.equalsIgnoreCase("none")) {
disabledFields = Arrays.stream(disabled.split(",")).collect(Collectors.toList());
}
if (ObjectHelper.isNotEmpty(disabled)) {
renameFields = Arrays.stream(renames.split(",")).collect(Collectors.toList());
}
Map<Object, Object> updatedBody = new HashMap<>();
if (ObjectHelper.isNotEmpty(renameFields)) {
Map<String, String> renamingMap = parseNames(renameFields);
for (Map.Entry entry :
body.entrySet()) {
final String fieldName = (String) entry.getKey();
if (filterNames(fieldName, enabledFields, disabledFields)) {
final Object fieldValue = entry.getValue();
updatedBody.put(renameOptional(fieldName, renamingMap), fieldValue);
}
}
}
if (!updatedBody.isEmpty()) {
return mapper.valueToTree(updatedBody);
} else {
return mapper.valueToTree(body);
}
}