We need to register the TranslatorPluginManager with the ServiceListener, to allow modules and application configuration to provide additional plugin configuration.
Since the ServiceListener is configured before modules are loaded, options for configuring it are limited. Adding delegator factories is out of the question, as that would require altering the application default services configuration, which is non-trivial.
While this approach is slightly brittle — if any modules are registered prior to it that have translator plugin configuration, that configuration will be ignored — the goal is to have components registered before modules, which has some reasonable certainty of ensuring that the init() is called before any configuration is provided.
We need to register the
TranslatorPluginManager
with theServiceListener
, to allow modules and application configuration to provide additional plugin configuration.Since the
ServiceListener
is configured before modules are loaded, options for configuring it are limited. Adding delegator factories is out of the question, as that would require altering the application default services configuration, which is non-trivial.While this approach is slightly brittle — if any modules are registered prior to it that have translator plugin configuration, that configuration will be ignored — the goal is to have components registered before modules, which has some reasonable certainty of ensuring that the
init()
is called before any configuration is provided.