in winegrower-core/src/main/java/org/apache/winegrower/Ripener.java [320:361]
public Impl(final Configuration configuration) {
this.configuration = configuration;
final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
if (configuration.isUseLifecycleCallbacks()) {
final List<LifecycleCallbacks> callbacks = StreamSupport.stream(
ServiceLoader.load(LifecycleCallbacks.class, contextClassLoader).spliterator(), false)
.sorted(comparing(LifecycleCallbacks::order))
.collect(toList());
if (configuration.getLifecycleCallbacks() == null) {
configuration.setLifecycleCallbacks(callbacks);
} else {
configuration.setLifecycleCallbacks(Stream.concat(
configuration.getLifecycleCallbacks().stream(),
callbacks.stream()).sorted(comparing(LifecycleCallbacks::order))
.collect(toList()));
}
} else if (configuration.getLifecycleCallbacks() == null) {
configuration.setLifecycleCallbacks(emptyList());
}
runCallbacks(LifecycleCallbacks::processConfiguration, configuration);
final Collection<ConfigurationListener> configurationListeners = new ArrayList<>();
final Collection<DefaultEventAdmin.EventHandlerInstance> eventListeners = new ArrayList<>();
this.services = new OSGiServices(this, configurationListeners, eventListeners);
this.registry = new BundleRegistry(services, configuration);
try (final InputStream stream = contextClassLoader.getResourceAsStream("winegrower.properties")) {
loadConfiguration(stream);
} catch (final IOException e) {
LOGGER.warn(e.getMessage());
}
this.configurationAdmin = loadConfigurationAdmin(configurationListeners);
this.eventAdmin = loadEventAdmin(eventListeners);
registerBuiltInService(ConfigurationAdmin.class, this.configurationAdmin, new Hashtable<>());
registerBuiltInService(EventAdmin.class, this.eventAdmin, new Hashtable<>());
registerBuiltInService(org.osgi.service.log.LoggerFactory.class, loadLoggerFactory(), new Hashtable<>());
if (DefaultConfigurationAdmin.class.isInstance(configurationAdmin)) {
DefaultConfigurationAdmin.class.cast(configurationAdmin).preload(configuration.getDefaultConfigurationAdminPids());
}
}