1 package org.jcr_blog.commons.cdi.eager;
2
3
4 import java.util.ArrayList;
5 import java.util.List;
6 import javax.enterprise.context.ApplicationScoped;
7 import javax.enterprise.event.Observes;
8 import javax.enterprise.inject.spi.AfterDeploymentValidation;
9 import javax.enterprise.inject.spi.Bean;
10 import javax.enterprise.inject.spi.BeanManager;
11 import javax.enterprise.inject.spi.Extension;
12 import javax.enterprise.inject.spi.ProcessBean;
13
14 public class EagerExtension implements Extension {
15 private List<Bean<?>> eagerBeansList = new ArrayList<>();
16
17 public <T> void collect(@Observes ProcessBean<T> event) {
18 if (event.getAnnotated().isAnnotationPresent(Eager.class)
19 && event.getAnnotated().isAnnotationPresent(ApplicationScoped.class)) {
20 eagerBeansList.add(event.getBean());
21 }
22 }
23
24 public void load(@Observes AfterDeploymentValidation event, BeanManager beanManager) {
25 for (Bean<?> bean : eagerBeansList) {
26
27 beanManager.getReference(bean, bean.getBeanClass(), beanManager.createCreationalContext(bean)).toString();
28 }
29 }
30 }