1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.cdi.util;
20
21 import java.lang.reflect.Type;
22 import java.util.Set;
23
24 import javax.enterprise.context.spi.CreationalContext;
25 import javax.enterprise.inject.spi.Bean;
26 import javax.enterprise.inject.spi.BeanManager;
27 import javax.faces.context.ExternalContext;
28 import org.apache.myfaces.webapp.AbstractFacesInitializer;
29
30
31
32
33 public class CDIUtils
34 {
35 public static BeanManager getBeanManager(ExternalContext externalContext)
36 {
37 return (BeanManager) externalContext.getApplicationMap().get(
38 AbstractFacesInitializer.CDI_BEAN_MANAGER_INSTANCE);
39 }
40
41
42
43 public static <T> T lookup(BeanManager bm, Class<T> clazz)
44 {
45 Set<Bean<?>> beans = bm.getBeans(clazz);
46 return resolveInstance(bm, beans, clazz);
47 }
48
49 public static Object lookup(BeanManager bm, String name)
50 {
51 Set<Bean<?>> beans = bm.getBeans(name);
52 return resolveInstance(bm, beans, Object.class);
53 }
54
55 private static <T> T resolveInstance(BeanManager bm, Set<Bean<?>> beans, Type type)
56 {
57 Bean<?> bean = bm.resolve(beans);
58 CreationalContext<?> cc = bm.createCreationalContext(bean);
59 T dao = (T) bm.getReference(bean, type, cc);
60 return dao;
61
62 }
63 }