public boolean open()

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;
		}
	}