in cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/Discovery.java [317:351]
void discoverActivations(OSGiBean osgiBean, Class<?> declaringClass, final Annotated component,
AnnotatedMember<?> producer, Class<? extends Annotation> scope,
List<String> serviceTypeNames) {
String className = declaringClass.getName();
if (!_containerTemplate.beans.contains(className)) {
_containerTemplate.beans.add(className);
}
if (!serviceTypeNames.isEmpty()) {
if (!scope.equals(ApplicationScoped.class) &&
!scope.equals(Dependent.class)) {
_containerState.error(
new IllegalStateException(
String.format(
"@Service can only be used on @ApplicationScoped, @Dependent, @SingleComponent, and @FactoryComponent: %s",
osgiBean.getBeanClass())));
return;
}
ExtendedActivationTemplateDTO activationTemplate = new ExtendedActivationTemplateDTO();
activationTemplate.cdiScope = scope;
activationTemplate.declaringClass = declaringClass;
activationTemplate.producer = producer;
activationTemplate.properties = Annotates.componentProperties(component);
activationTemplate.scope = Annotates.serviceScope(component);
activationTemplate.serviceClasses = serviceTypeNames;
_containerTemplate.activations.add(activationTemplate);
}
osgiBean.setComponent(_containerState, _containerTemplate);
}