in cdi-extension-servlet-common/src/main/java/org/apache/aries/cdi/extension/servlet/common/BaseServletExtension.java [122:158]
void webListener(
@Observes @FiltersOn(annotations = WebListener.class) ProcessPotentialService pat,
BeanManager beanManager) {
final AnnotatedType<?> annotatedType = pat.getAnnotatedType();
final Class<?> javaClass = annotatedType.getJavaClass();
final Class<?>[] serviceTypes = Stream.of(
ServletContextListener.class,
ServletContextAttributeListener.class,
ServletRequestListener.class,
ServletRequestAttributeListener.class,
HttpSessionListener.class,
HttpSessionAttributeListener.class,
HttpSessionIdListener.class)
.filter(c -> c.isAssignableFrom(javaClass))
.toArray(Class[]::new);
beanManager.fireEvent(MergeServiceTypes.forEvent(pat).withTypes(serviceTypes).build());
AnnotatedTypeConfigurator<?> configurator = pat.configureAnnotatedType();
WebListener webListener = annotatedType.getAnnotation(WebListener.class);
if (!annotatedType.isAnnotationPresent(HttpWhiteboardContextSelect.class)) {
ofNullable((String) configuration.get(HTTP_WHITEBOARD_CONTEXT_SELECT)).ifPresent(
select -> configurator.add(HttpWhiteboardContextSelect.Literal.of(select))
);
}
if (!annotatedType.isAnnotationPresent(HttpWhiteboardListener.class)) {
configurator.add(HttpWhiteboardListener.Literal.INSTANCE);
}
if (!annotatedType.isAnnotationPresent(ServiceDescription.class) && !webListener.value().isEmpty()) {
configurator.add(ServiceDescription.Literal.of(webListener.value()));
}
}