/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package br.com.triadworks.issuetracker.controller.util; import java.util.Set; import javax.enterprise.context.spi.CreationalContext; import javax.enterprise.inject.spi.Bean; import javax.enterprise.inject.spi.BeanManager; import org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider; /** * * @author rpestano */ /** * CLasse responsável por buscar beans do CDI fora do contexto do CDI(onde @Inject não funciona) eg:filter, webservice etc... * @author rmpestano * */ public class BeanManagerController { @SuppressWarnings("rawtypes") public static Object getBeanByName(String name) { try{ BeanManager bm = BeanManagerProvider.getInstance().getBeanManager(); Set<Bean<?>> beans = bm.getBeans(name); if(beans != null && !beans.isEmpty()){ Bean bean = beans.iterator().next(); CreationalContext ctx = bm.createCreationalContext(bean); Object o = bm.getReference(bean, bean.getBeanClass(), ctx); return o; } }catch (Exception e) { // TODO: handle exception } return null; } @SuppressWarnings({"unchecked","rawtypes"}) public static <T> T getBeanByType(Class<T> type) { BeanManager bm = BeanManagerProvider.getInstance().getBeanManager(); Bean bean = bm.getBeans(type).iterator().next(); CreationalContext ctx = bm.createCreationalContext(bean); // could be inlined below T o = (T) bm.getReference(bean, type, ctx); // could be inlined with return return o; } }