public boolean open()

in cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/ExtendedComponentInstanceDTO.java [158:248]


	public boolean open() {
		try (Syncro open = sync.open()) {
			if (!configurationsResolved() || (properties != null)) {
				return false;
			}

			ConfigurationDTO containerConfiguration = containerConfiguration();

			if (containerConfiguration != null) {
				Boolean enabled = Conversions.convert(
					containerConfiguration.properties.get(
						template.name.concat(".enabled"))
				).defaultValue(Boolean.TRUE).to(Boolean.class);

				if (!enabled) {
					_containerState.containerDTO().components.stream().filter(
						c -> c.template == template
					).forEach(c -> c.enabled = false);

					return false;
				}
				else {
					_containerState.containerDTO().components.stream().filter(
						c -> c.template == template
					).forEach(c -> c.enabled = true);
				}
			}

			properties = componentProperties(null);

			template.references.stream().map(ExtendedReferenceTemplateDTO.class::cast).forEach(
				t -> {
					ExtendedReferenceDTO referenceDTO = new ExtendedReferenceDTO();

					if (t.collectionType == CollectionType.BINDER_SERVICE) {
						referenceDTO.binder = new BindServiceImpl<>(_containerState);
					}
					else if (t.collectionType == CollectionType.BINDER_REFERENCE) {
						referenceDTO.binder = new BindServiceReferenceImpl<>(_containerState);
					}
					else if (t.collectionType == CollectionType.BINDER_BEAN_SERVICE_OBJECTS) {
						referenceDTO.binder = new BindBeanServiceObjectsImpl<>(_containerState);
					}

					referenceDTO.matches = new CopyOnWriteArrayList<>();
					referenceDTO.minimumCardinality = minimumCardinality(t.name, t.minimumCardinality);
					referenceDTO.targetFilter = targetFilter(t.serviceType, t.name, t.targetFilter);
					referenceDTO.template = t;
					referenceDTO.serviceTracker = new ServiceTracker<>(
						_containerState.bundleContext(),
						asFilter(referenceDTO.targetFilter),
						new ReferenceSync(_containerState, referenceDTO, this, _builder));

					references.add(referenceDTO);
				}
			);

			_containerState.submit(
				Op.of(Mode.OPEN, Type.REFERENCES, ident()),
				() -> {
					references.stream().map(ExtendedReferenceDTO.class::cast).forEach(
						r -> r.serviceTracker.open()
					);

					return referencesResolved();
				}
			).then(
				s -> {
					if (s.getValue()) {
						// none of the reference dependencies are required
						_noRequiredDependenciesActivator.set(_builder.setInstance(this).build());

						return _containerState.submit(
							_noRequiredDependenciesActivator.get().openOp(),
							() -> _noRequiredDependenciesActivator.get().open()
						).onFailure(
							f -> {
								_log.error(l -> l.error("CCR Error in OPEN on {}", ident(), f));

								_containerState.error(f);
							}
						);
					}

					return s;
				}
			);

			return true;
		}
	}