void webListener()

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