View Javadoc

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              // note: toString() is important to instantiate the bean
27              beanManager.getReference(bean, bean.getBeanClass(), beanManager.createCreationalContext(bean)).toString();
28          }
29      }
30  }