private static void mergeReportPluginLists()

in src/main/java/org/apache/maven/plugin/resources/remote/ModelInheritanceAssembler.java [308:354]


    private static void mergeReportPluginLists(Reporting child, Reporting parent, boolean handleAsInheritance) {
        if ((child == null) || (parent == null)) {
            // nothing to do.
            return;
        }

        List<ReportPlugin> parentPlugins = parent.getPlugins();

        if ((parentPlugins != null) && !parentPlugins.isEmpty()) {
            Map<String, ReportPlugin> assembledPlugins = new TreeMap<>();

            Map<String, ReportPlugin> childPlugins = child.getReportPluginsAsMap();

            for (ReportPlugin parentPlugin : parentPlugins) {
                String parentInherited = parentPlugin.getInherited();

                if (!handleAsInheritance || (parentInherited == null) || Boolean.parseBoolean(parentInherited)) {

                    ReportPlugin assembledPlugin = parentPlugin;

                    ReportPlugin childPlugin = childPlugins.get(parentPlugin.getKey());

                    if (childPlugin != null) {
                        assembledPlugin = childPlugin;

                        mergeReportPluginDefinitions(childPlugin, parentPlugin, handleAsInheritance);
                    }

                    if (handleAsInheritance && (parentInherited == null)) {
                        assembledPlugin.unsetInheritanceApplied();
                    }

                    assembledPlugins.put(assembledPlugin.getKey(), assembledPlugin);
                }
            }

            for (ReportPlugin childPlugin : childPlugins.values()) {
                if (!assembledPlugins.containsKey(childPlugin.getKey())) {
                    assembledPlugins.put(childPlugin.getKey(), childPlugin);
                }
            }

            child.setPlugins(new ArrayList<>(assembledPlugins.values()));

            child.flushReportPluginMap();
        }
    }