private void loadFractionManifests()

in core/bootstrap/src/main/java/org/wildfly/swarm/bootstrap/env/ApplicationEnvironment.java [248:306]


    private void loadFractionManifests(ClassLoader cl) throws IOException {
        if (this.manifests != null) {
            return;
        }

        this.manifests = new ArrayList<>();

        Enumeration<URL> results = cl.getResources(FractionManifest.CLASSPATH_LOCATION);
        Set<MavenArtifactDescriptor> fractionDependencies = new HashSet<>();

        while (results.hasMoreElements()) {
            URL each = results.nextElement();
            FractionManifest manifest = new FractionManifest(each);
            this.manifests.add(manifest);
            if (manifest.getModule() != null) {
                this.bootstrapModules.add(manifest.getModule());
            }
            if (this.mode == Mode.CLASSPATH) {

                MavenArtifactDescriptor fraction = new MavenArtifactDescriptor(
                        manifest.getGroupId(),
                        manifest.getArtifactId(),
                        manifest.getVersion()
                );

                if (dependencyTree.isPresent()) {

                    for (MavenArtifactDescriptor directDep : dependencyTree.get().getDirectDeps()) {
                        if (fraction.equals(directDep)) {
                            fractionDependencies.add(directDep);
                        }
                    }

                }

                this.removeableDependencies.add(fraction.mavenGav());
                this.removeableDependencies.addAll(manifest.getDependencies());

            }
        }

        if (dependencyTree.isPresent()) {

            Set<String> applicationDependencies = new HashSet<>();
            Set<MavenArtifactDescriptor> keep = new HashSet<>(dependencyTree.get().getDirectDeps());
            keep.removeAll(fractionDependencies);


            for (MavenArtifactDescriptor dep : keep) {
                // the dep itself
                applicationDependencies.add(dep.mavenGav());

                // it's transient dependencies
                applicationDependencies.addAll(dependencyTree.get().getTransientDeps(dep).stream().map(t -> t.mavenGav()).collect(Collectors.toList()));
            }

            this.removeableDependencies.removeAll(applicationDependencies);
        }
    }