1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.extensions.validator.core.startup;
20
21 import org.apache.myfaces.extensions.validator.internal.Priority;
22 import org.apache.myfaces.extensions.validator.internal.ToDo;
23 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
24 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
25 import org.apache.myfaces.extensions.validator.core.interceptor.ValidationInterceptor;
26 import org.apache.myfaces.extensions.validator.core.interceptor.HtmlCoreComponentsValidationExceptionInterceptor;
27 import org.apache.myfaces.extensions.validator.core.interceptor.ViolationSeverityValidationExceptionInterceptor;
28 import org.apache.myfaces.extensions.validator.core.interceptor.FacesMessagePropertyValidationInterceptor;
29 import org.apache.myfaces.extensions.validator.core.interceptor.ViolationExceptionInterceptor;
30 import org.apache.myfaces.extensions.validator.core.interceptor.ExtValViewRootInterceptor;
31 import org.apache.myfaces.extensions.validator.core.ExtValContext;
32 import org.apache.myfaces.extensions.validator.core.CustomInformation;
33 import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
34 import org.apache.myfaces.extensions.validator.core.DefaultExtValCoreConfiguration;
35 import org.apache.myfaces.extensions.validator.core.PhaseIdRecordingPhaseListener;
36 import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
37 .BeanValidationStrategyToMetaDataTransformerNameMapper;
38 import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
39 .SimpleValidationStrategyToMetaDataTransformerNameMapper;
40 import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
41 .DefaultValidationStrategyToMetaDataTransformerNameMapper;
42 import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
43 .CustomConventionValidationStrategyToMetaDataTransformerNameMapper;
44 import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
45 .CustomConfiguredValidationStrategyToMetaDataTransformerNameMapper;
46 import org.apache.myfaces.extensions.validator.core.validation.strategy.mapper
47 .CustomConventionAnnotationToValidationStrategyNameMapper;
48 import org.apache.myfaces.extensions.validator.core.validation.strategy.mapper
49 .DefaultAnnotationToValidationStrategyNameMapper;
50 import org.apache.myfaces.extensions.validator.core.validation.strategy.mapper
51 .CustomConfiguredAnnotationToValidationStrategyNameMapper;
52 import org.apache.myfaces.extensions.validator.core.validation.strategy.mapper
53 .SimpleAnnotationToValidationStrategyNameMapper;
54 import org.apache.myfaces.extensions.validator.core.validation.strategy.mapper
55 .AnnotationToValidationStrategyBeanNameMapper;
56 import org.apache.myfaces.extensions.validator.core.validation.message.resolver.mapper
57 .CustomConfiguredValidationStrategyToMsgResolverNameMapper;
58 import org.apache.myfaces.extensions.validator.core.validation.message.resolver.mapper
59 .CustomConventionValidationStrategyToMsgResolverNameMapper;
60 import org.apache.myfaces.extensions.validator.core.validation.message.resolver.mapper
61 .DefaultValidationStrategyToMsgResolverNameMapper;
62 import org.apache.myfaces.extensions.validator.core.validation.message.resolver.mapper
63 .DefaultModuleValidationStrategyToMsgResolverNameMapper;
64 import org.apache.myfaces.extensions.validator.core.validation.message.resolver.mapper
65 .SimpleValidationStrategyToMsgResolverNameMapper;
66 import org.apache.myfaces.extensions.validator.core.validation.parameter.DefaultViolationSeverityInterpreter;
67 import org.apache.myfaces.extensions.validator.core.validation.parameter.ViolationSeverity;
68 import org.apache.myfaces.extensions.validator.core.validation.parameter.DisableClientSideValidation;
69 import org.apache.myfaces.extensions.validator.util.ClassUtils;
70 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
71 import org.apache.myfaces.extensions.validator.util.JsfUtils;
72 import org.apache.myfaces.extensions.validator.ExtValInformation;
73
74
75
76
77 @UsageInformation(UsageCategory.INTERNAL)
78 public class ExtValStartupListener extends AbstractStartupListener
79 {
80 private static final long serialVersionUID = -2504826421086572012L;
81
82 protected void initModuleConfig()
83 {
84 ExtValCoreConfiguration.use(new DefaultExtValCoreConfiguration(), false);
85 }
86
87 protected void init()
88 {
89 if(ExtValInformation.VERSION != null && !ExtValInformation.VERSION.startsWith("null"))
90 {
91 logger.info("starting up MyFaces Extensions Validator v" + ExtValInformation.VERSION);
92 }
93 else
94 {
95 logger.info("starting up MyFaces Extensions Validator");
96 }
97
98 ExtValContext.getContext().registerRendererInterceptor(new ValidationInterceptor());
99
100 initNameMappers();
101 initValidationExceptionInterceptors();
102 initViolationSeverityInterpreter();
103 initPropertyValidationInterceptors();
104 initViewRootInterceptors();
105 initPhaseListeners();
106 initViolationSeverityKey();
107 initDisableClientSideValidationKey();
108 initRequiredInitialization();
109
110 executeCustomStartupListener();
111 }
112
113 private void initNameMappers()
114 {
115 if (ExtValCoreConfiguration.get().deactivateDefaultNameMappers())
116 {
117 return;
118 }
119
120
121 ExtValUtils.registerMetaDataToValidationStrategyNameMapper(
122 new CustomConfiguredAnnotationToValidationStrategyNameMapper());
123 ExtValUtils.registerMetaDataToValidationStrategyNameMapper(
124 new CustomConventionAnnotationToValidationStrategyNameMapper());
125 ExtValUtils.registerMetaDataToValidationStrategyNameMapper(
126 new DefaultAnnotationToValidationStrategyNameMapper());
127 ExtValUtils.registerMetaDataToValidationStrategyNameMapper(
128 new SimpleAnnotationToValidationStrategyNameMapper());
129
130 ExtValUtils.registerMetaDataToValidationStrategyNameMapper(
131 new AnnotationToValidationStrategyBeanNameMapper(
132 new CustomConfiguredAnnotationToValidationStrategyNameMapper()));
133 ExtValUtils.registerMetaDataToValidationStrategyNameMapper(
134 new AnnotationToValidationStrategyBeanNameMapper(
135 new CustomConventionAnnotationToValidationStrategyNameMapper()));
136 ExtValUtils.registerMetaDataToValidationStrategyNameMapper(
137 new AnnotationToValidationStrategyBeanNameMapper(
138 new DefaultAnnotationToValidationStrategyNameMapper()));
139 ExtValUtils.registerMetaDataToValidationStrategyNameMapper(
140 new AnnotationToValidationStrategyBeanNameMapper(
141 new SimpleAnnotationToValidationStrategyNameMapper()));
142
143
144 ExtValUtils.registerValidationStrategyToMessageResolverNameMapper(
145 new CustomConfiguredValidationStrategyToMsgResolverNameMapper());
146 ExtValUtils.registerValidationStrategyToMessageResolverNameMapper(
147 new CustomConventionValidationStrategyToMsgResolverNameMapper());
148 ExtValUtils.registerValidationStrategyToMessageResolverNameMapper(
149 new DefaultValidationStrategyToMsgResolverNameMapper());
150 ExtValUtils.registerValidationStrategyToMessageResolverNameMapper(
151 new DefaultModuleValidationStrategyToMsgResolverNameMapper());
152 ExtValUtils.registerValidationStrategyToMessageResolverNameMapper(
153 new SimpleValidationStrategyToMsgResolverNameMapper());
154
155
156 ExtValUtils.registerValidationStrategyToMetaDataTransformerNameMapper(
157 new CustomConfiguredValidationStrategyToMetaDataTransformerNameMapper());
158 ExtValUtils.registerValidationStrategyToMetaDataTransformerNameMapper(
159 new CustomConventionValidationStrategyToMetaDataTransformerNameMapper());
160 ExtValUtils.registerValidationStrategyToMetaDataTransformerNameMapper(
161 new DefaultValidationStrategyToMetaDataTransformerNameMapper());
162 ExtValUtils.registerValidationStrategyToMetaDataTransformerNameMapper(
163 new SimpleValidationStrategyToMetaDataTransformerNameMapper());
164 ExtValUtils.registerValidationStrategyToMetaDataTransformerNameMapper(
165 new BeanValidationStrategyToMetaDataTransformerNameMapper());
166 }
167
168 private void executeCustomStartupListener()
169 {
170 String customStartupListenerName = ExtValContext.getContext().getInformationProviderBean()
171 .get(CustomInformation.STARTUP_LISTENER);
172 AbstractStartupListener customStartupListener =
173 (AbstractStartupListener)ClassUtils.tryToInstantiateClassForName(customStartupListenerName);
174
175 if(customStartupListener != null)
176 {
177 logger.info("start init of " + customStartupListener.getClass().getName());
178
179 customStartupListener.init();
180
181 logger.info("init of " + customStartupListener.getClass().getName() + " finished");
182 }
183 }
184
185 private void initValidationExceptionInterceptors()
186 {
187 ExtValContext.getContext().addValidationExceptionInterceptor(
188 new HtmlCoreComponentsValidationExceptionInterceptor());
189 ExtValContext.getContext().addValidationExceptionInterceptor(
190 new ViolationSeverityValidationExceptionInterceptor());
191
192 ExtValContext.getContext().addValidationExceptionInterceptor(
193 new ViolationExceptionInterceptor());
194 }
195
196 private void initViolationSeverityInterpreter()
197 {
198 ExtValContext.getContext().setViolationSeverityInterpreter(new DefaultViolationSeverityInterpreter(), false);
199 }
200
201 private void initPropertyValidationInterceptors()
202 {
203 ExtValContext.getContext().addPropertyValidationInterceptor(new FacesMessagePropertyValidationInterceptor());
204 }
205
206 private void initViewRootInterceptors()
207 {
208 ExtValContext.getContext().addViewRootInterceptor(new ExtValViewRootInterceptor());
209 }
210
211 private void initPhaseListeners()
212 {
213 JsfUtils.registerPhaseListener(new PhaseIdRecordingPhaseListener());
214 }
215
216 @Deprecated
217 @ToDo(value=Priority.MEDIUM, description="DefaultValidationParameterFactory#tryToFindGlobalParameter still uses" +
218 "the global parameter")
219 private void initViolationSeverityKey()
220 {
221 ExtValContext.getContext().addGlobalProperty(ViolationSeverity.class.getName(),
222 ExtValCoreConfiguration.get().violationSeverity(), false);
223 }
224
225 @Deprecated
226 private void initDisableClientSideValidationKey()
227 {
228 ExtValContext.getContext().addGlobalProperty(DisableClientSideValidation.class.getName(),
229 ExtValCoreConfiguration.get().disableClientSideValidationValidationParameter(), false);
230 }
231
232 private void initRequiredInitialization()
233 {
234 boolean requiredInitialization = ExtValCoreConfiguration.get().activateRequiredInitialization();
235
236
237 addRequiredInitializationAsGlobalProperty(requiredInitialization);
238
239 initRequiredAttributeSupport();
240 }
241
242 @Deprecated
243 private void addRequiredInitializationAsGlobalProperty(boolean requiredInitialization)
244 {
245 ExtValContext.getContext().addGlobalProperty("mode:init:required", requiredInitialization, false);
246 }
247
248
249
250
251
252 @Deprecated
253 private void initRequiredAttributeSupport()
254 {
255 ExtValContext.getContext().addGlobalProperty("mode:reset:required",
256 ExtValCoreConfiguration.get().deactivateRequiredAttributeSupport(),
257 false);
258 }
259 }