1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.cdi.view;
20
21 import javax.enterprise.event.Observes;
22 import javax.enterprise.inject.spi.AfterBeanDiscovery;
23 import javax.enterprise.inject.spi.AnnotatedType;
24 import javax.enterprise.inject.spi.BeanManager;
25 import javax.enterprise.inject.spi.BeforeBeanDiscovery;
26 import javax.enterprise.inject.spi.Extension;
27 import javax.faces.view.ViewScoped;
28
29
30
31
32
33
34 public class ViewScopeContextExtension implements Extension
35 {
36 private ViewScopeContextImpl viewScopeContext;
37
38 void beforeBeanDiscovery(
39 @Observes final BeforeBeanDiscovery event, BeanManager beanManager)
40 {
41 event.addScope(ViewScoped.class, true, true);
42
43
44 AnnotatedType appContext = beanManager.createAnnotatedType(ApplicationContextBean.class);
45 event.addAnnotatedType(appContext);
46 AnnotatedType bean = beanManager.createAnnotatedType(ViewScopeBeanHolder.class);
47 event.addAnnotatedType(bean);
48 }
49
50 void afterBeanDiscovery(@Observes AfterBeanDiscovery afterBeanDiscovery, BeanManager beanManager)
51 {
52 viewScopeContext = new ViewScopeContextImpl(beanManager);
53 afterBeanDiscovery.addContext(viewScopeContext);
54 }
55 }