public static List orderAfterMerge()

in src/main/java/org/apache/maven/plugin/resources/remote/ModelUtils.java [121:163]


    public static List<Plugin> orderAfterMerge(
            List<Plugin> merged, List<Plugin> highPrioritySource, List<Plugin> lowPrioritySource) {
        List<Plugin> results = new ArrayList<>();

        if (!merged.isEmpty()) {
            results.addAll(merged);
        }

        List<Plugin> missingFromResults = new ArrayList<>();

        List<List<Plugin>> sources = new ArrayList<>();

        sources.add(highPrioritySource);
        sources.add(lowPrioritySource);

        for (List<Plugin> source : sources) {
            for (Plugin item : source) {
                if (results.contains(item)) {
                    if (!missingFromResults.isEmpty()) {
                        int idx = results.indexOf(item);

                        if (idx < 0) {
                            idx = 0;
                        }

                        results.addAll(idx, missingFromResults);

                        missingFromResults.clear();
                    }
                } else {
                    missingFromResults.add(item);
                }
            }

            if (!missingFromResults.isEmpty()) {
                results.addAll(missingFromResults);

                missingFromResults.clear();
            }
        }

        return results;
    }