583
584 @Override
585 boolean hasNextService() {
586
587 // already have the next provider cached
588 if (nextProvider != null)
589 return true;
590
591 while (true) {
592
593 // next provider
594 if (providersIterator != null && providersIterator.hasNext()) {
595 nextProvider = providersIterator.next();
596 return true;
597 }
598
599 // next descriptor
600 if (descriptorIterator.hasNext()) {
601 ModuleDescriptor descriptor = descriptorIterator.next();
602
603 nextModule = currentLayer.findModule(descriptor.name()).get();
604
605 Provides provides = descriptor.provides().get(serviceName);
606 providersIterator = provides.providers().iterator();
607
608 continue;
609 }
610
611 // next layer
612 Layer parent = currentLayer.parent().orElse(null);
613 if (parent == null)
614 return false;
615
616 currentLayer = parent;
617 descriptorIterator = descriptors(currentLayer, serviceName);
618 }
619 }
620
621 @Override
622 S nextService() {
623 if (!hasNextService())
|
583
584 @Override
585 boolean hasNextService() {
586
587 // already have the next provider cached
588 if (nextProvider != null)
589 return true;
590
591 while (true) {
592
593 // next provider
594 if (providersIterator != null && providersIterator.hasNext()) {
595 nextProvider = providersIterator.next();
596 return true;
597 }
598
599 // next descriptor
600 if (descriptorIterator.hasNext()) {
601 ModuleDescriptor descriptor = descriptorIterator.next();
602
603 nextModule = currentLayer.findModule(descriptor.name()).getWhenPresent();
604
605 Provides provides = descriptor.provides().get(serviceName);
606 providersIterator = provides.providers().iterator();
607
608 continue;
609 }
610
611 // next layer
612 Layer parent = currentLayer.parent().orElse(null);
613 if (parent == null)
614 return false;
615
616 currentLayer = parent;
617 descriptorIterator = descriptors(currentLayer, serviceName);
618 }
619 }
620
621 @Override
622 S nextService() {
623 if (!hasNextService())
|