public JsonNode process()

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);
        }
    }