From dd4cc062a6041788b9cd50fbe65a40444c3251d1 Mon Sep 17 00:00:00 2001 From: Thebora Kompanioni Date: Thu, 22 Oct 2020 01:55:10 +0200 Subject: [PATCH] call delegate `#getService()` when looking up single service as classes implementing `ServiceProvider` may define their own custom behaviour, let the `ServiceProvider` instance itself fetch a single service by name instead of using an own standard strategy (using the first one returned by `#getServices(Class)`) this way it is prevented that a `ServiceProvider` must load all services of the class even if they are not generellay needed (including all side effects e.g. loading data from remote services) --- src/main/java/javax/money/spi/Bootstrap.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/javax/money/spi/Bootstrap.java b/src/main/java/javax/money/spi/Bootstrap.java index 46003271..93dbeaf9 100644 --- a/src/main/java/javax/money/spi/Bootstrap.java +++ b/src/main/java/javax/money/spi/Bootstrap.java @@ -111,18 +111,14 @@ public static Collection getServices(Class serviceType) { } /** - * Delegate method for {@link ServiceProvider#getServices(Class)}. + * Delegate method for {@link ServiceProvider#getService(Class)}. * * @param serviceType the service type. * @return the service found, or {@code null}. * @see ServiceProvider#getServices(Class) */ public static T getService(Class serviceType) { - List services = getServiceProvider().getServices(serviceType); - return services - .stream() - .findFirst() - .orElse(null); + return getServiceProvider().getService(serviceType); } }