Skip to content

Commit 5f8f56c

Browse files
committed
Ensure bindings must not fail if no descriptor discovered, as there may be a service that requires a dependency, but itself is not required by any injection point.
1 parent 59eaa0f commit 5f8f56c

File tree

1 file changed

+4
-11
lines changed
  • service/registry/src/main/java/io/helidon/service/registry

1 file changed

+4
-11
lines changed

service/registry/src/main/java/io/helidon/service/registry/Bindings.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ private DependencyBinding(CoreServiceRegistry registry, ServiceInfo serviceInfo,
161161
.build();
162162
}
163163

164-
public List<ServiceInfo> descriptors() {
164+
List<ServiceInfo> descriptors() {
165165
return serviceInfos;
166166
}
167167

@@ -269,19 +269,12 @@ private List managers(List<ServiceInfo> serviceInfos) {
269269

270270
private void discoverBinding() {
271271
// lookup services, exclude ourselves (when doing chained injection, we lookup by weight)
272-
List<ServiceInfo> found = registry.lookupServices(lookup)
272+
// we need all service descriptors, as a service may not yield a service
273+
// (such as optional suppliers, ServicesFactory etc.), so we use the next one
274+
this.serviceInfos = registry.lookupServices(lookup)
273275
.stream()
274276
.filter(it -> it != serviceInfo)
275277
.collect(Collectors.toList());
276-
if (found.isEmpty() && (dependency.cardinality() == DependencyCardinality.REQUIRED)) {
277-
throw new ServiceRegistryException("There is no service in registry that satisfied this dependency: "
278-
+ dependency);
279-
}
280-
281-
// we need all service descriptors, as a service may not yield a service
282-
// (such as optional suppliers, ServicesFactory etc.), so we use the next one
283-
284-
this.serviceInfos = found;
285278
}
286279

287280
private static class DependencySupplier implements Supplier<Object> {

0 commit comments

Comments
 (0)