Iterator<Wire> iterator(ResolveContext context) throws ResolutionException { final Collection<Resource> optres = context.getOptionalResources(); final List<Capability> providers = context.findProviders(req); // Fail early if there are no providers for a non-optional requirement if (!optres.contains(req.getResource()) && !req.isOptional() && providers.isEmpty()) { Set<Requirement> unresolved = Collections.singleton(req); throw new ResolutionException("Cannot find provider for: " + req, null, unresolved); } return new Iterator<Wire>() { Iterator<Capability> delagate = providers.iterator(); @Override public boolean hasNext() { return delagate.hasNext(); } @Override public Wire next() { Capability cap = delagate.next(); return createWire(req, cap); } @Override public void remove() { throw new UnsupportedOperationException(); } }; } }
Iterator<Requirement> itreqs = manreqs.iterator(); while (itreqs.hasNext()) { if (itreqs.next().isOptional()) { itreqs.remove();