private static void mergeArray()

in flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/utils/FlinkUtils.java [113:142]


    private static void mergeArray(
            ArrayNode toChildNode, ArrayNode fromChildNode, boolean mergeArraysByName) {
        if (namesDefined(toChildNode) && namesDefined(fromChildNode) && mergeArraysByName) {
            var toGrouped = groupByName(toChildNode);
            var fromGrouped = groupByName(fromChildNode);
            fromGrouped.forEach(
                    (name, fromElement) ->
                            toGrouped.compute(
                                    name,
                                    (n, toElement) -> {
                                        if (toElement == null) {
                                            return fromElement;
                                        }
                                        mergeInto(toElement, fromElement, mergeArraysByName);
                                        return toElement;
                                    }));

            toChildNode.removeAll();
            toGrouped.values().forEach(toChildNode::add);
        } else {
            for (int i = 0; i < fromChildNode.size(); i++) {
                JsonNode updatedChildNode = fromChildNode.get(i);
                if (toChildNode.size() <= i) {
                    // append new node
                    toChildNode.add(updatedChildNode);
                }
                mergeInto(toChildNode.get(i), updatedChildNode, mergeArraysByName);
            }
        }
    }