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