1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.webapp;
20
21 import javax.faces.FacesException;
22 import javax.servlet.ServletContext;
23
24 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
25 import org.apache.myfaces.shared.config.MyfacesConfig;
26 import org.apache.myfaces.shared.util.ClassUtils;
27 import org.apache.myfaces.util.ContainerUtils;
28
29
30
31
32
33
34
35
36 public class FacesInitializerFactory
37 {
38
39
40
41
42
43
44
45
46
47 @JSFWebConfigParam(since = "2.0.1", desc = "Class name of a custom FacesInitializer implementation.")
48 private static final String FACES_INITIALIZER_PARAM = "org.apache.myfaces.FACES_INITIALIZER";
49
50
51
52
53
54
55 public static FacesInitializer getFacesInitializer(ServletContext context)
56 {
57 FacesInitializer initializer = _getFacesInitializerFromInitParam(context);
58 if (initializer == null)
59 {
60 initializer = _getDefaultFacesInitializer(context);
61 }
62 return initializer;
63 }
64
65
66
67
68
69
70 private static FacesInitializer _getFacesInitializerFromInitParam(ServletContext context)
71 {
72 String initializerClassName = context.getInitParameter(FACES_INITIALIZER_PARAM);
73 if (initializerClassName != null)
74 {
75 try
76 {
77
78 Class<?> clazz = ClassUtils.classForName(initializerClassName);
79 if (!FacesInitializer.class.isAssignableFrom(clazz))
80 {
81 throw new FacesException("Class " + clazz
82 + " does not implement FacesInitializer");
83 }
84
85
86 return (FacesInitializer) ClassUtils.newInstance(clazz);
87 }
88 catch (ClassNotFoundException cnfe)
89 {
90 throw new FacesException("Could not find class of specified FacesInitializer", cnfe);
91 }
92 }
93 return null;
94 }
95
96
97
98
99
100
101 private static FacesInitializer _getDefaultFacesInitializer(ServletContext context)
102 {
103
104 String initParameter = context.getInitParameter(MyfacesConfig.INIT_PARAM_SUPPORT_JSP_AND_FACES_EL);
105 if (Boolean.FALSE.toString().equals(initParameter))
106 {
107 return new FaceletsInitilializer();
108 }
109 else if (ContainerUtils.isJsp21(context))
110 {
111 return new Jsp21FacesInitializer();
112 }
113 else
114 {
115 return new Jsp20FacesInitializer();
116 }
117 }
118
119 }