We stream all possible services, check their availability by invoking isSupported and instantiate an instance. But as soon as an exceptions is thrown (wether during support check or instantiation), the whole loading stream collapses and fails with ServiceConfigurationException. Even worse, this error is not documented, tearing down lib consumers (as can be seen in https://github.com/cryptomator/cryptomator/issues/3279)
We should refactor the loading in such a way, that failure on a single service does not affect loading of other services.
We locate and load load service providers with the
IntegrationsLoader
: https://github.com/cryptomator/integrations-api/blob/b58ecc65856a086a5295c9f977353844867792b0/src/main/java/org/cryptomator/integrations/common/IntegrationsLoader.java#L43-L53We stream all possible services, check their availability by invoking
isSupported
and instantiate an instance. But as soon as an exceptions is thrown (wether during support check or instantiation), the whole loading stream collapses and fails withServiceConfigurationException
. Even worse, this error is not documented, tearing down lib consumers (as can be seen in https://github.com/cryptomator/cryptomator/issues/3279)We should refactor the loading in such a way, that failure on a single service does not affect loading of other services.