diff options
-rw-r--r-- | bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java index c48483a2e..c55afa11e 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java @@ -606,7 +606,9 @@ final class ModuleResolver { this.optionals = new LinkedHashSet<>(unresolved); if (this.triggersMandatory) { // do this the hard way because the 'optimization' in removeAll hurts us - this.optionals.removeAll(triggers); + for (ModuleRevision triggerRevision : triggers) { + this.optionals.remove(triggerRevision); + } } this.wirings = new HashMap<>(wirings); this.previouslyResolved = new HashSet<>(wirings.keySet()); @@ -1404,7 +1406,9 @@ final class ModuleResolver { Collection<ModuleRevision> enabledCandidates = new ArrayList<>(unresolved); hook.filterResolvable(InternalUtils.asListBundleRevision((List<? extends BundleRevision>) enabledCandidates)); // do this the hard way because the 'optimization' in removeAll hurts us - disabled.removeAll(enabledCandidates); + for (ModuleRevision enabledRevision : enabledCandidates) { + disabled.remove(enabledRevision); + } for (ModuleRevision revision : disabled) { reportBuilder.addEntry(revision, Entry.Type.FILTERED_BY_RESOLVER_HOOK, null); if (DEBUG_HOOKS) { |