in cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java [117:159]
public boolean open() {
try (Syncro syncro = _lock.open()) {
if (containerState.bundleContext() == null) {
// this bundle was already removed
return false;
}
if (_containerInstance != null) {
return true;
}
if (containerState.containerDTO().components.isEmpty()) {
return false;
}
_log.debug(log -> log.debug("CCR container startup for {}", bundle()));
try {
// always use a new class loader
BundleClassLoader loader = new BundleClassLoader(containerState.bundle(), containerState.extenderBundle());
_initializer = getServiceObjects().getService();
processExtensions(loader, _initializer);
containerState.containerComponentTemplateDTO().properties.forEach(_initializer::addProperty);
_containerInstance = _initializer
.addBeanClasses(containerState.beansModel().getOSGiBeans().stream().map(OSGiBean::getBeanClass).toArray(Class<?>[]::new))
.addBeanXmls(containerState.beansModel().getBeansXml().toArray(new URL[0]))
.setBundleContext(bundle().getBundleContext())
.setClassLoader(loader)
.initialize();
withListeners(ContainerListener::onStartSuccess);
} catch (final RuntimeException re) {
withListeners(listener -> listener.onStartError(re));
throw re;
}
return true;
}
}