1 | |
|
2 | |
|
3 | |
|
4 | |
|
5 | |
|
6 | |
|
7 | |
|
8 | |
|
9 | |
|
10 | |
|
11 | |
|
12 | |
|
13 | |
|
14 | |
|
15 | |
|
16 | |
|
17 | |
|
18 | |
|
19 | |
package org.apache.myfaces.config.impl.digester; |
20 | |
|
21 | |
import org.apache.commons.digester.Digester; |
22 | |
import org.apache.myfaces.config.FacesConfigUnmarshaller; |
23 | |
import org.apache.myfaces.config.impl.FacesConfigEntityResolver; |
24 | |
import org.apache.myfaces.config.impl.digester.elements.*; |
25 | |
import org.apache.myfaces.shared.util.ClassUtils; |
26 | |
import org.xml.sax.InputSource; |
27 | |
import org.xml.sax.SAXException; |
28 | |
|
29 | |
import javax.faces.context.ExternalContext; |
30 | |
import java.io.IOException; |
31 | |
import java.io.InputStream; |
32 | |
import java.io.Reader; |
33 | |
import org.apache.myfaces.config.element.FacesFlowDefinition; |
34 | |
|
35 | |
|
36 | |
|
37 | |
|
38 | 0 | public class DigesterFacesConfigUnmarshallerImpl implements FacesConfigUnmarshaller<FacesConfigImpl> |
39 | |
{ |
40 | |
private Digester digester; |
41 | |
|
42 | |
public DigesterFacesConfigUnmarshallerImpl(ExternalContext externalContext) |
43 | 0 | { |
44 | 0 | digester = new Digester(); |
45 | |
|
46 | 0 | digester.setValidating(false); |
47 | 0 | digester.setNamespaceAware(true); |
48 | 0 | digester.setEntityResolver(new FacesConfigEntityResolver(externalContext)); |
49 | |
|
50 | 0 | digester.setClassLoader(ClassUtils.getContextClassLoader()); |
51 | |
|
52 | 0 | digester.addObjectCreate("faces-config", FacesConfigImpl.class); |
53 | |
|
54 | 0 | digester.addSetProperties("faces-config", "metadata-complete", "metadataComplete"); |
55 | 0 | digester.addSetProperties("faces-config", "version", "version"); |
56 | |
|
57 | |
|
58 | |
|
59 | 0 | digester.addCallMethod("faces-config/protected-views/url-pattern", "addProtectedViewUrlPattern", 0); |
60 | |
|
61 | 0 | digester.addCallMethod("faces-config/name", "setName", 0); |
62 | 0 | digester.addObjectCreate("faces-config/ordering", OrderingImpl.class); |
63 | 0 | digester.addSetNext("faces-config/ordering", "setOrdering"); |
64 | 0 | digester.addObjectCreate("faces-config/ordering/before/name", FacesConfigNameSlotImpl.class); |
65 | 0 | digester.addSetNext("faces-config/ordering/before/name", "addBeforeSlot"); |
66 | 0 | digester.addCallMethod("faces-config/ordering/before/name", "setName",0); |
67 | 0 | digester.addObjectCreate("faces-config/ordering/before/others", ConfigOthersSlotImpl.class); |
68 | 0 | digester.addSetNext("faces-config/ordering/before/others", "addBeforeSlot"); |
69 | |
|
70 | 0 | digester.addObjectCreate("faces-config/ordering/after/name", FacesConfigNameSlotImpl.class); |
71 | 0 | digester.addSetNext("faces-config/ordering/after/name", "addAfterSlot"); |
72 | 0 | digester.addCallMethod("faces-config/ordering/after/name", "setName",0); |
73 | 0 | digester.addObjectCreate("faces-config/ordering/after/others", ConfigOthersSlotImpl.class); |
74 | 0 | digester.addSetNext("faces-config/ordering/after/others", "addAfterSlot"); |
75 | |
|
76 | 0 | digester.addObjectCreate("faces-config/absolute-ordering", AbsoluteOrderingImpl.class); |
77 | 0 | digester.addSetNext("faces-config/absolute-ordering", "setAbsoluteOrdering"); |
78 | 0 | digester.addObjectCreate("faces-config/absolute-ordering/name", FacesConfigNameSlotImpl.class); |
79 | 0 | digester.addSetNext("faces-config/absolute-ordering/name", "addOrderSlot"); |
80 | 0 | digester.addCallMethod("faces-config/absolute-ordering/name", "setName",0); |
81 | 0 | digester.addObjectCreate("faces-config/absolute-ordering/others", ConfigOthersSlotImpl.class); |
82 | 0 | digester.addSetNext("faces-config/absolute-ordering/others", "addOrderSlot"); |
83 | |
|
84 | |
|
85 | 0 | digester.addObjectCreate("faces-config/application", ApplicationImpl.class); |
86 | 0 | digester.addSetNext("faces-config/application", "addApplication"); |
87 | 0 | digester.addCallMethod("faces-config/application/action-listener", "addActionListener", 0); |
88 | 0 | digester.addCallMethod("faces-config/application/default-render-kit-id", "addDefaultRenderkitId", 0); |
89 | 0 | digester.addCallMethod("faces-config/application/default-validators", "setDefaultValidatorsPresent"); |
90 | 0 | digester.addCallMethod("faces-config/application/default-validators/validator-id", "addDefaultValidatorId", 0); |
91 | 0 | digester.addCallMethod("faces-config/application/message-bundle", "addMessageBundle", 0); |
92 | 0 | digester.addCallMethod("faces-config/application/navigation-handler", "addNavigationHandler", 0); |
93 | 0 | digester.addCallMethod("faces-config/application/partial-traversal", "addPartialTraversal", 0); |
94 | 0 | digester.addCallMethod("faces-config/application/view-handler", "addViewHandler", 0); |
95 | 0 | digester.addCallMethod("faces-config/application/state-manager", "addStateManager", 0); |
96 | 0 | digester.addCallMethod("faces-config/application/property-resolver", "addPropertyResolver", 0); |
97 | 0 | digester.addCallMethod("faces-config/application/variable-resolver", "addVariableResolver", 0); |
98 | 0 | digester.addObjectCreate("faces-config/application/locale-config", LocaleConfigImpl.class); |
99 | 0 | digester.addSetNext("faces-config/application/locale-config", "addLocaleConfig"); |
100 | 0 | digester.addCallMethod("faces-config/application/locale-config/default-locale", "setDefaultLocale", 0); |
101 | 0 | digester.addCallMethod("faces-config/application/locale-config/supported-locale", "addSupportedLocale", 0); |
102 | |
|
103 | |
|
104 | 0 | digester.addCallMethod("faces-config/application/el-resolver", "addElResolver", 0); |
105 | 0 | digester.addObjectCreate("faces-config/application/resource-bundle", ResourceBundleImpl.class); |
106 | 0 | digester.addSetNext("faces-config/application/resource-bundle", "addResourceBundle"); |
107 | 0 | digester.addCallMethod("faces-config/application/resource-bundle/base-name", "setBaseName", 0); |
108 | 0 | digester.addCallMethod("faces-config/application/resource-bundle/var", "setVar", 0); |
109 | 0 | digester.addCallMethod("faces-config/application/resource-bundle/display-name", "setDisplayName", 0); |
110 | |
|
111 | |
|
112 | |
|
113 | 0 | digester.addObjectCreate("faces-config/application/system-event-listener", SystemEventListenerImpl.class); |
114 | 0 | digester.addSetNext("faces-config/application/system-event-listener", "addSystemEventListener"); |
115 | 0 | digester.addCallMethod("faces-config/application/system-event-listener/system-event-listener-class", |
116 | |
"setSystemEventListenerClass",0); |
117 | 0 | digester.addCallMethod("faces-config/application/system-event-listener/system-event-class", |
118 | |
"setSystemEventClass",0); |
119 | 0 | digester.addCallMethod("faces-config/application/system-event-listener/source-class", "setSourceClass",0); |
120 | 0 | digester.addCallMethod("faces-config/application/resource-handler", "addResourceHandler", 0); |
121 | 0 | digester.addCallMethod("faces-config/factory/exception-handler-factory", "addExceptionHandlerFactory", 0); |
122 | 0 | digester.addCallMethod("faces-config/factory/external-context-factory", "addExternalContextFactory", 0); |
123 | 0 | digester.addCallMethod("faces-config/factory/view-declaration-language-factory", |
124 | |
"addViewDeclarationLanguageFactory", 0); |
125 | 0 | digester.addCallMethod("faces-config/factory/partial-view-context-factory", "addPartialViewContextFactory", 0); |
126 | 0 | digester.addCallMethod("faces-config/factory/tag-handler-delegate-factory", "addTagHandlerDelegateFactory", 0); |
127 | 0 | digester.addCallMethod("faces-config/factory/visit-context-factory", "addVisitContextFactory", 0); |
128 | |
|
129 | |
|
130 | 0 | digester.addObjectCreate("faces-config/application/resource-library-contracts/contract-mapping", |
131 | |
ContractMappingImpl.class); |
132 | 0 | digester.addSetNext("faces-config/application/resource-library-contracts/contract-mapping", |
133 | |
"addResourceLibraryContractMapping"); |
134 | 0 | digester.addCallMethod( |
135 | |
"faces-config/application/resource-library-contracts/contract-mapping/url-pattern", "addUrlPattern", 0); |
136 | 0 | digester.addCallMethod( |
137 | |
"faces-config/application/resource-library-contracts/contract-mapping/contracts", "addContract", 0); |
138 | |
|
139 | |
|
140 | 0 | digester.addCallMethod("faces-config/factory/facelet-cache-factory", "addFaceletCacheFactory", 0); |
141 | |
|
142 | |
|
143 | 0 | digester.addCallMethod("faces-config/factory/flash-factory", "addFlashFactory", 0); |
144 | |
|
145 | 0 | digester.addCallMethod("faces-config/factory/flow-handler-factory", "addFlowHandlerFactory", 0); |
146 | |
|
147 | |
|
148 | 0 | digester.addObjectCreate("faces-config/factory", FactoryImpl.class); |
149 | 0 | digester.addSetNext("faces-config/factory", "addFactory"); |
150 | 0 | digester.addCallMethod("faces-config/factory/application-factory", "addApplicationFactory", 0); |
151 | 0 | digester.addCallMethod("faces-config/factory/faces-context-factory", "addFacesContextFactory", 0); |
152 | 0 | digester.addCallMethod("faces-config/factory/lifecycle-factory", "addLifecycleFactory", 0); |
153 | 0 | digester.addCallMethod("faces-config/factory/render-kit-factory", "addRenderkitFactory", 0); |
154 | |
|
155 | 0 | digester.addCallMethod("faces-config/component", "addComponent", 2); |
156 | 0 | digester.addCallParam("faces-config/component/component-type", 0); |
157 | 0 | digester.addCallParam("faces-config/component/component-class", 1); |
158 | |
|
159 | 0 | digester.addObjectCreate("faces-config/converter", ConverterImpl.class); |
160 | 0 | digester.addSetNext("faces-config/converter", "addConverter"); |
161 | 0 | digester.addCallMethod("faces-config/converter/converter-id", "setConverterId", 0); |
162 | 0 | digester.addCallMethod("faces-config/converter/converter-for-class", "setForClass", 0); |
163 | 0 | digester.addCallMethod("faces-config/converter/converter-class", "setConverterClass", 0); |
164 | 0 | digester.addObjectCreate("faces-config/converter/attribute", AttributeImpl.class); |
165 | 0 | digester.addSetNext("faces-config/converter/attribute", "addAttribute"); |
166 | 0 | digester.addCallMethod("faces-config/converter/attribute/description", "addDescription", 0); |
167 | 0 | digester.addCallMethod("faces-config/converter/attribute/display-name", "addDisplayName", 0); |
168 | 0 | digester.addCallMethod("faces-config/converter/attribute/icon", "addIcon", 0); |
169 | 0 | digester.addCallMethod("faces-config/converter/attribute/attribute-name", "setAttributeName", 0); |
170 | 0 | digester.addCallMethod("faces-config/converter/attribute/attribute-class", "setAttributeClass", 0); |
171 | 0 | digester.addCallMethod("faces-config/converter/attribute/default-value", "setDefaultValue", 0); |
172 | 0 | digester.addCallMethod("faces-config/converter/attribute/suggested-value", "setSuggestedValue", 0); |
173 | 0 | digester.addCallMethod("faces-config/converter/attribute/attribute-extension", "addAttributeExtension", 0); |
174 | 0 | digester.addObjectCreate("faces-config/converter/property", PropertyImpl.class); |
175 | 0 | digester.addSetNext("faces-config/converter/property", "addProperty"); |
176 | 0 | digester.addCallMethod("faces-config/converter/property/description", "addDescription", 0); |
177 | 0 | digester.addCallMethod("faces-config/converter/property/display-name", "addDisplayName", 0); |
178 | 0 | digester.addCallMethod("faces-config/converter/property/icon", "addIcon", 0); |
179 | 0 | digester.addCallMethod("faces-config/converter/property/property-name", "setPropertyName", 0); |
180 | 0 | digester.addCallMethod("faces-config/converter/property/property-class", "setPropertyClass", 0); |
181 | 0 | digester.addCallMethod("faces-config/converter/property/default-value", "setDefaultValue", 0); |
182 | 0 | digester.addCallMethod("faces-config/converter/property/suggested-value", "setSuggestedValue", 0); |
183 | 0 | digester.addCallMethod("faces-config/converter/property/property-extension", "addPropertyExtension", 0); |
184 | |
|
185 | 0 | digester.addObjectCreate("faces-config/managed-bean", ManagedBeanImpl.class); |
186 | 0 | digester.addSetProperties("faces-config/managed-bean", "eager", "eager"); |
187 | 0 | digester.addSetNext("faces-config/managed-bean", "addManagedBean"); |
188 | 0 | digester.addCallMethod("faces-config/managed-bean/description", "setDescription", 0); |
189 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-bean-name", "setName", 0); |
190 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-bean-class", "setBeanClass", 0); |
191 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-bean-scope", "setScope", 0); |
192 | 0 | digester.addObjectCreate("faces-config/managed-bean/managed-property", ManagedPropertyImpl.class); |
193 | 0 | digester.addSetNext("faces-config/managed-bean/managed-property", "addProperty"); |
194 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/property-name", "setPropertyName", 0); |
195 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/property-class", "setPropertyClass", 0); |
196 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/null-value", "setNullValue"); |
197 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/value", "setValue", 0); |
198 | 0 | digester.addObjectCreate("faces-config/managed-bean/managed-property/map-entries", MapEntriesImpl.class); |
199 | 0 | digester.addSetNext("faces-config/managed-bean/managed-property/map-entries", "setMapEntries"); |
200 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/key-class", "setKeyClass", 0); |
201 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/value-class", |
202 | |
"setValueClass", 0); |
203 | 0 | digester.addObjectCreate("faces-config/managed-bean/managed-property/map-entries/map-entry", |
204 | |
MapEntriesImpl.Entry.class); |
205 | 0 | digester.addSetNext("faces-config/managed-bean/managed-property/map-entries/map-entry", "addEntry"); |
206 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/map-entry/key", "setKey", 0); |
207 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/map-entry/null-value", |
208 | |
"setNullValue"); |
209 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/map-entry/value", "setValue", 0); |
210 | 0 | digester.addObjectCreate("faces-config/managed-bean/managed-property/list-entries", ListEntriesImpl.class); |
211 | 0 | digester.addSetNext("faces-config/managed-bean/managed-property/list-entries", "setListEntries"); |
212 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/list-entries/value-class", "setValueClass", |
213 | |
0); |
214 | 0 | digester.addObjectCreate("faces-config/managed-bean/managed-property/list-entries/null-value", |
215 | |
ListEntriesImpl.Entry.class); |
216 | 0 | digester.addSetNext("faces-config/managed-bean/managed-property/list-entries/null-value", "addEntry"); |
217 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/list-entries/null-value", "setNullValue"); |
218 | 0 | digester.addObjectCreate("faces-config/managed-bean/managed-property/list-entries/value", |
219 | |
ListEntriesImpl.Entry.class); |
220 | 0 | digester.addSetNext("faces-config/managed-bean/managed-property/list-entries/value", "addEntry"); |
221 | 0 | digester.addCallMethod("faces-config/managed-bean/managed-property/list-entries/value", "setValue", 0); |
222 | 0 | digester.addObjectCreate("faces-config/managed-bean/map-entries", MapEntriesImpl.class); |
223 | 0 | digester.addSetNext("faces-config/managed-bean/map-entries", "setMapEntries"); |
224 | 0 | digester.addCallMethod("faces-config/managed-bean/map-entries/key-class", "setKeyClass", 0); |
225 | 0 | digester.addCallMethod("faces-config/managed-bean/map-entries/value-class", "setValueClass", 0); |
226 | 0 | digester.addObjectCreate("faces-config/managed-bean/map-entries/map-entry", MapEntriesImpl.Entry.class); |
227 | 0 | digester.addSetNext("faces-config/managed-bean/map-entries/map-entry", "addEntry"); |
228 | 0 | digester.addCallMethod("faces-config/managed-bean/map-entries/map-entry/key", "setKey", 0); |
229 | 0 | digester.addCallMethod("faces-config/managed-bean/map-entries/map-entry/null-value", "setNullValue"); |
230 | 0 | digester.addCallMethod("faces-config/managed-bean/map-entries/map-entry/value", "setValue", 0); |
231 | 0 | digester.addObjectCreate("faces-config/managed-bean/list-entries", ListEntriesImpl.class); |
232 | 0 | digester.addSetNext("faces-config/managed-bean/list-entries", "setListEntries"); |
233 | 0 | digester.addCallMethod("faces-config/managed-bean/list-entries/value-class", "setValueClass", 0); |
234 | 0 | digester.addObjectCreate("faces-config/managed-bean/list-entries/null-value", ListEntriesImpl.Entry.class); |
235 | 0 | digester.addSetNext("faces-config/managed-bean/list-entries/null-value", "addEntry"); |
236 | 0 | digester.addCallMethod("faces-config/managed-bean/list-entries/null-value", "setNullValue"); |
237 | 0 | digester.addObjectCreate("faces-config/managed-bean/list-entries/value", ListEntriesImpl.Entry.class); |
238 | 0 | digester.addSetNext("faces-config/managed-bean/list-entries/value", "addEntry"); |
239 | 0 | digester.addCallMethod("faces-config/managed-bean/list-entries/value", "setValue", 0); |
240 | |
|
241 | 0 | digester.addObjectCreate("faces-config/navigation-rule", NavigationRuleImpl.class); |
242 | 0 | digester.addSetNext("faces-config/navigation-rule", "addNavigationRule"); |
243 | 0 | digester.addCallMethod("faces-config/navigation-rule/from-view-id", "setFromViewId", 0); |
244 | 0 | digester.addObjectCreate("faces-config/navigation-rule/navigation-case", NavigationCaseImpl.class); |
245 | 0 | digester.addSetNext("faces-config/navigation-rule/navigation-case", "addNavigationCase"); |
246 | 0 | digester.addCallMethod("faces-config/navigation-rule/navigation-case/from-action", "setFromAction", 0); |
247 | 0 | digester.addCallMethod("faces-config/navigation-rule/navigation-case/from-outcome", "setFromOutcome", 0); |
248 | 0 | digester.addCallMethod("faces-config/navigation-rule/navigation-case/if", "setIf", 0); |
249 | 0 | digester.addCallMethod("faces-config/navigation-rule/navigation-case/to-view-id", "setToViewId", 0); |
250 | 0 | digester.addObjectCreate("faces-config/navigation-rule/navigation-case/redirect", RedirectImpl.class); |
251 | 0 | digester.addSetProperties("faces-config/navigation-rule/navigation-case/redirect", "include-view-params", |
252 | |
"includeViewParams"); |
253 | 0 | digester.addSetNext("faces-config/navigation-rule/navigation-case/redirect", "setRedirect"); |
254 | 0 | digester.addObjectCreate("faces-config/navigation-rule/navigation-case/redirect/view-param", |
255 | |
ViewParamImpl.class); |
256 | 0 | digester.addSetNext("faces-config/navigation-rule/navigation-case/redirect/view-param", "addViewParam"); |
257 | 0 | digester.addCallMethod("faces-config/navigation-rule/navigation-case/redirect/view-param/name", "setName",0); |
258 | 0 | digester.addCallMethod("faces-config/navigation-rule/navigation-case/redirect/view-param/value", "setValue",0); |
259 | |
|
260 | 0 | digester.addObjectCreate("faces-config/navigation-rule/navigation-case/redirect/redirect-param", |
261 | |
ViewParamImpl.class); |
262 | 0 | digester.addSetNext("faces-config/navigation-rule/navigation-case/redirect/redirect-param", |
263 | |
"addViewParam"); |
264 | 0 | digester.addCallMethod("faces-config/navigation-rule/navigation-case/redirect/redirect-param/name", |
265 | |
"setName",0); |
266 | 0 | digester.addCallMethod("faces-config/navigation-rule/navigation-case/redirect/redirect-param/value", |
267 | |
"setValue",0); |
268 | |
|
269 | 0 | digester.addObjectCreate("faces-config/render-kit", RenderKitImpl.class); |
270 | 0 | digester.addSetNext("faces-config/render-kit", "addRenderKit"); |
271 | 0 | digester.addCallMethod("faces-config/render-kit/render-kit-id", "setId", 0); |
272 | |
|
273 | 0 | digester.addCallMethod("faces-config/render-kit/render-kit-class", "addRenderKitClass", 0); |
274 | 0 | digester.addObjectCreate("faces-config/render-kit/renderer", RendererImpl.class); |
275 | 0 | digester.addSetNext("faces-config/render-kit/renderer", "addRenderer"); |
276 | 0 | digester.addCallMethod("faces-config/render-kit/renderer/component-family", "setComponentFamily", 0); |
277 | 0 | digester.addCallMethod("faces-config/render-kit/renderer/renderer-type", "setRendererType", 0); |
278 | 0 | digester.addCallMethod("faces-config/render-kit/renderer/renderer-class", "setRendererClass", 0); |
279 | 0 | digester.addObjectCreate("faces-config/render-kit/client-behavior-renderer", ClientBehaviorRendererImpl.class); |
280 | 0 | digester.addSetNext("faces-config/render-kit/client-behavior-renderer", "addClientBehaviorRenderer"); |
281 | 0 | digester.addCallMethod("faces-config/render-kit/client-behavior-renderer/client-behavior-renderer-type", |
282 | |
"setRendererType", 0); |
283 | 0 | digester.addCallMethod("faces-config/render-kit/client-behavior-renderer/client-behavior-renderer-class", |
284 | |
"setRendererClass", 0); |
285 | |
|
286 | |
|
287 | 0 | digester.addObjectCreate("faces-config/behavior", BehaviorImpl.class); |
288 | 0 | digester.addSetNext("faces-config/behavior", "addBehavior"); |
289 | 0 | digester.addCallMethod("faces-config/behavior/behavior-id", "setBehaviorId", 0); |
290 | 0 | digester.addCallMethod("faces-config/behavior/behavior-class", "setBehaviorClass", 0); |
291 | 0 | digester.addObjectCreate("faces-config/behavior/attribute", AttributeImpl.class); |
292 | 0 | digester.addSetNext("faces-config/behavior/attribute", "addAttribute"); |
293 | 0 | digester.addCallMethod("faces-config/behavior/attribute/description", "addDescription", 0); |
294 | 0 | digester.addCallMethod("faces-config/behavior/attribute/display-name", "addDisplayName", 0); |
295 | 0 | digester.addCallMethod("faces-config/behavior/attribute/icon", "addIcon", 0); |
296 | 0 | digester.addCallMethod("faces-config/behavior/attribute/attribute-name", "setAttributeName", 0); |
297 | 0 | digester.addCallMethod("faces-config/behavior/attribute/attribute-class", "setAttributeClass", 0); |
298 | 0 | digester.addCallMethod("faces-config/behavior/attribute/default-value", "setDefaultValue", 0); |
299 | 0 | digester.addCallMethod("faces-config/behavior/attribute/suggested-value", "setSuggestedValue", 0); |
300 | 0 | digester.addCallMethod("faces-config/behavior/attribute/attribute-extension", "addAttributeExtension", 0); |
301 | 0 | digester.addObjectCreate("faces-config/behavior/property", PropertyImpl.class); |
302 | 0 | digester.addSetNext("faces-config/behavior/property", "addProperty"); |
303 | 0 | digester.addCallMethod("faces-config/behavior/property/description", "addDescription", 0); |
304 | 0 | digester.addCallMethod("faces-config/behavior/property/display-name", "addDisplayName", 0); |
305 | 0 | digester.addCallMethod("faces-config/behavior/property/icon", "addIcon", 0); |
306 | 0 | digester.addCallMethod("faces-config/behavior/property/property-name", "setPropertyName", 0); |
307 | 0 | digester.addCallMethod("faces-config/behavior/property/property-class", "setPropertyClass", 0); |
308 | 0 | digester.addCallMethod("faces-config/behavior/property/default-value", "setDefaultValue", 0); |
309 | 0 | digester.addCallMethod("faces-config/behavior/property/suggested-value", "setSuggestedValue", 0); |
310 | 0 | digester.addCallMethod("faces-config/behavior/property/property-extension", "addPropertyExtension", 0); |
311 | |
|
312 | |
|
313 | 0 | digester.addCallMethod("faces-config/lifecycle/phase-listener", "addLifecyclePhaseListener", 0); |
314 | |
|
315 | 0 | digester.addCallMethod("faces-config/validator", "addValidator", 2); |
316 | 0 | digester.addCallParam("faces-config/validator/validator-id", 0); |
317 | 0 | digester.addCallParam("faces-config/validator/validator-class", 1); |
318 | |
|
319 | |
|
320 | 0 | digester.addObjectCreate("faces-config/faces-config-extension", FacesConfigExtensionImpl.class); |
321 | 0 | digester.addSetNext("faces-config/faces-config-extension", "addFacesConfigExtension"); |
322 | 0 | digester.addObjectCreate("faces-config/faces-config-extension/facelets-processing", |
323 | |
FaceletsProcessingImpl.class); |
324 | 0 | digester.addSetNext("faces-config/faces-config-extension/facelets-processing", "addFaceletsProcessing"); |
325 | 0 | digester.addCallMethod("faces-config/faces-config-extension/facelets-processing/file-extension", |
326 | |
"setFileExtension", 0); |
327 | 0 | digester.addCallMethod("faces-config/faces-config-extension/facelets-processing/process-as", "setProcessAs", 0); |
328 | |
|
329 | |
|
330 | |
|
331 | |
|
332 | 0 | digester.addCallMethod("faces-config/faces-config-extension/facelets-processing/oam-compress-spaces", |
333 | |
"setOamCompressSpaces", 0); |
334 | |
|
335 | 0 | addFacesFlowRules(externalContext); |
336 | |
|
337 | |
|
338 | 0 | } |
339 | |
|
340 | |
private void addNavigationRules(ExternalContext externalContext, String prefix, String method) |
341 | |
{ |
342 | 0 | digester.addObjectCreate(prefix, NavigationRuleImpl.class); |
343 | 0 | digester.addSetNext(prefix, method); |
344 | 0 | digester.addCallMethod(prefix+"/from-view-id", "setFromViewId", 0); |
345 | 0 | addNavigationCases(externalContext, prefix+"/navigation-case", "addNavigationCase"); |
346 | 0 | } |
347 | |
|
348 | |
private void addNavigationCases(ExternalContext externalContext, String prefix, String method) |
349 | |
{ |
350 | 0 | digester.addObjectCreate(prefix, NavigationCaseImpl.class); |
351 | 0 | digester.addSetNext(prefix, method); |
352 | 0 | digester.addCallMethod(prefix+"/from-action", "setFromAction", 0); |
353 | 0 | digester.addCallMethod(prefix+"/from-outcome", "setFromOutcome", 0); |
354 | 0 | digester.addCallMethod(prefix+"/if", "setIf", 0); |
355 | 0 | digester.addCallMethod(prefix+"/to-view-id", "setToViewId", 0); |
356 | 0 | digester.addObjectCreate(prefix+"/redirect", RedirectImpl.class); |
357 | 0 | digester.addSetProperties(prefix+"/redirect", "include-view-params", |
358 | |
"includeViewParams"); |
359 | 0 | digester.addSetNext(prefix+"/redirect", "setRedirect"); |
360 | 0 | digester.addObjectCreate(prefix+"/redirect/view-param", ViewParamImpl.class); |
361 | 0 | digester.addSetNext(prefix+"/redirect/view-param", "addViewParam"); |
362 | 0 | digester.addCallMethod(prefix+"/redirect/view-param/name", "setName",0); |
363 | 0 | digester.addCallMethod(prefix+"/redirect/view-param/value", "setValue",0); |
364 | |
|
365 | 0 | digester.addObjectCreate(prefix+"/redirect/redirect-param", ViewParamImpl.class); |
366 | 0 | digester.addSetNext(prefix+"/redirect/redirect-param", "addViewParam"); |
367 | 0 | digester.addCallMethod(prefix+"/redirect/redirect-param/name", "setName",0); |
368 | 0 | digester.addCallMethod(prefix+"/redirect/redirect-param/value", "setValue",0); |
369 | 0 | } |
370 | |
|
371 | |
private void addFacesFlowRules(ExternalContext externalContext) |
372 | |
{ |
373 | 0 | digester.addObjectCreate("faces-config/flow-definition", FacesFlowDefinitionImpl.class); |
374 | |
|
375 | 0 | digester.addSetNext("faces-config/flow-definition", "addFacesFlowDefinition"); |
376 | 0 | digester.addSetProperties("faces-config/flow-definition", "id", "id"); |
377 | |
|
378 | 0 | digester.addCallMethod("faces-config/flow-definition/start-node", "setStartNode", 0); |
379 | 0 | digester.addCallMethod("faces-config/flow-definition/initializer", "setInitializer", 0); |
380 | 0 | digester.addCallMethod("faces-config/flow-definition/finalizer", "setFinalizer", 0); |
381 | |
|
382 | 0 | digester.addObjectCreate("faces-config/flow-definition/view", FacesFlowViewImpl.class); |
383 | 0 | digester.addSetNext("faces-config/flow-definition/view", "addView"); |
384 | 0 | digester.addSetProperties("faces-config/flow-definition/view", "id", "id"); |
385 | 0 | digester.addCallMethod("faces-config/flow-definition/view/vdl-document", "setVdlDocument", 0); |
386 | |
|
387 | 0 | digester.addObjectCreate("faces-config/flow-definition/switch", FacesFlowSwitchImpl.class); |
388 | 0 | digester.addSetNext("faces-config/flow-definition/switch", "addSwitch"); |
389 | 0 | digester.addSetProperties("faces-config/flow-definition/switch", "id", "id"); |
390 | |
|
391 | 0 | digester.addObjectCreate("faces-config/flow-definition/switch/default-outcome", |
392 | |
NavigationCaseImpl.class); |
393 | 0 | digester.addSetNext("faces-config/flow-definition/switch/default-outcome", |
394 | |
"setDefaultOutcome"); |
395 | 0 | digester.addCallMethod("faces-config/flow-definition/switch/default-outcome", |
396 | |
"setFromOutcome", 0); |
397 | |
|
398 | 0 | addNavigationCases(externalContext, "faces-config/flow-definition/switch/case", |
399 | |
"addNavigationCase"); |
400 | |
|
401 | 0 | digester.addObjectCreate("faces-config/flow-definition/flow-return", FacesFlowReturnImpl.class); |
402 | 0 | digester.addSetNext("faces-config/flow-definition/flow-return", "addReturn"); |
403 | 0 | digester.addSetProperties("faces-config/flow-definition/flow-return", "id", "id"); |
404 | 0 | digester.addObjectCreate("faces-config/flow-definition/flow-return/from-outcome", |
405 | |
NavigationCaseImpl.class); |
406 | 0 | digester.addSetNext("faces-config/flow-definition/flow-return/from-outcome", |
407 | |
"setNavigationCase"); |
408 | 0 | digester.addCallMethod("faces-config/flow-definition/flow-return/from-outcome", |
409 | |
"setFromOutcome", 0); |
410 | |
|
411 | 0 | addNavigationRules(externalContext, "faces-config/flow-definition/navigation-rule", "addNavigationRule"); |
412 | |
|
413 | 0 | digester.addObjectCreate("faces-config/flow-definition/flow-call", FacesFlowCallImpl.class); |
414 | 0 | digester.addSetNext("faces-config/flow-definition/flow-call", "addFlowCall"); |
415 | 0 | digester.addSetProperties("faces-config/flow-definition/flow-call", "id", "id"); |
416 | 0 | digester.addObjectCreate("faces-config/flow-definition/flow-call/flow-reference", FacesFlowReferenceImpl.class); |
417 | 0 | digester.addSetNext("faces-config/flow-definition/flow-call/flow-reference", "setFlowReference"); |
418 | 0 | digester.addCallMethod("faces-config/flow-definition/flow-call/flow-reference/flow-document-id", |
419 | |
"setFlowDocumentId", 0); |
420 | 0 | digester.addCallMethod("faces-config/flow-definition/flow-call/flow-reference/flow-id", "setFlowId", 0); |
421 | |
|
422 | 0 | digester.addObjectCreate("faces-config/flow-definition/flow-call/outbound-parameter", |
423 | |
FacesFlowParameterImpl.class); |
424 | 0 | digester.addSetNext("faces-config/flow-definition/flow-call/outbound-parameter", |
425 | |
"addOutboundParameter"); |
426 | 0 | digester.addCallMethod("faces-config/flow-definition/flow-call/outbound-parameter/name", "setName", 0); |
427 | 0 | digester.addCallMethod("faces-config/flow-definition/flow-call/outbound-parameter/value", "setValue", 0); |
428 | |
|
429 | 0 | digester.addObjectCreate("faces-config/flow-definition/method-call", FacesFlowMethodCallImpl.class); |
430 | 0 | digester.addSetNext("faces-config/flow-definition/method-call", "addMethodCall"); |
431 | 0 | digester.addSetProperties("faces-config/flow-definition/method-call", "id", "id"); |
432 | 0 | digester.addCallMethod("faces-config/flow-definition/method-call/method", "setMethod", 0); |
433 | 0 | digester.addCallMethod("faces-config/flow-definition/method-call/default-outcome", |
434 | |
"setDefaultOutcome", 0); |
435 | 0 | digester.addObjectCreate("faces-config/flow-definition/method-call/parameter", |
436 | |
FacesFlowMethodParameterImpl.class); |
437 | 0 | digester.addSetNext("faces-config/flow-definition/method-call/parameter", "addParameter"); |
438 | 0 | digester.addCallMethod("faces-config/flow-definition/method-call/parameter/class", "setClassName", 0); |
439 | 0 | digester.addCallMethod("faces-config/flow-definition/method-call/parameter/value", "setValue", 0); |
440 | |
|
441 | 0 | digester.addObjectCreate("faces-config/flow-definition/inbound-parameter", |
442 | |
FacesFlowParameterImpl.class); |
443 | 0 | digester.addSetNext("faces-config/flow-definition/inbound-parameter", "addInboundParameter"); |
444 | 0 | digester.addCallMethod("faces-config/flow-definition/inbound-parameter/name", "setName", 0); |
445 | 0 | digester.addCallMethod("faces-config/flow-definition/inbound-parameter/value", "setValue", 0); |
446 | |
|
447 | |
|
448 | 0 | digester.addObjectCreate("faces-config/faces-config-extension/view-pool-mapping", |
449 | |
ViewPoolMappingImpl.class); |
450 | 0 | digester.addSetNext("faces-config/faces-config-extension/view-pool-mapping", |
451 | |
"addViewPoolMapping"); |
452 | 0 | digester.addCallMethod( |
453 | |
"faces-config/faces-config-extension/view-pool-mapping/url-pattern", "setUrlPattern", 0); |
454 | 0 | digester.addObjectCreate("faces-config/faces-config-extension/view-pool-mapping/parameter", |
455 | |
ViewPoolParameterImpl.class); |
456 | 0 | digester.addSetNext("faces-config/faces-config-extension/view-pool-mapping/parameter", "addParameter"); |
457 | 0 | digester.addCallMethod("faces-config/faces-config-extension/view-pool-mapping/parameter/name", "setName", 0); |
458 | 0 | digester.addCallMethod("faces-config/faces-config-extension/view-pool-mapping/parameter/value", "setValue", 0); |
459 | 0 | } |
460 | |
|
461 | |
private void postProcessFacesConfig(String systemId, FacesConfigImpl config) |
462 | |
{ |
463 | 0 | for (org.apache.myfaces.config.element.Application application : config.getApplications()) |
464 | |
{ |
465 | 0 | for (org.apache.myfaces.config.element.LocaleConfig localeConfig : application.getLocaleConfig()) |
466 | |
{ |
467 | 0 | if (!localeConfig.getSupportedLocales().contains(localeConfig.getDefaultLocale())) |
468 | |
{ |
469 | 0 | localeConfig.getSupportedLocales().add(localeConfig.getDefaultLocale()); |
470 | |
} |
471 | 0 | } |
472 | 0 | } |
473 | |
|
474 | 0 | for (FacesFlowDefinition facesFlowDefinition : config.getFacesFlowDefinitions()) |
475 | |
{ |
476 | |
|
477 | |
|
478 | |
|
479 | |
|
480 | |
|
481 | |
|
482 | |
|
483 | 0 | if (config.getName() != null) |
484 | |
{ |
485 | 0 | ((FacesFlowDefinitionImpl)facesFlowDefinition).setDefiningDocumentId( |
486 | |
config.getName()); |
487 | |
} |
488 | |
else |
489 | |
{ |
490 | 0 | ((FacesFlowDefinitionImpl)facesFlowDefinition).setDefiningDocumentId(""); |
491 | |
} |
492 | 0 | } |
493 | 0 | } |
494 | |
|
495 | |
public FacesConfigImpl getFacesConfig(InputStream in, String systemId) throws IOException, SAXException |
496 | |
{ |
497 | 0 | InputSource is = new InputSource(in); |
498 | 0 | is.setSystemId(systemId); |
499 | |
|
500 | |
|
501 | 0 | FacesConfigImpl config = (FacesConfigImpl) digester.parse(is); |
502 | |
|
503 | 0 | postProcessFacesConfig(systemId, config); |
504 | |
|
505 | 0 | return config; |
506 | |
} |
507 | |
|
508 | |
public FacesConfigImpl getFacesConfig(Reader r) throws IOException, SAXException |
509 | |
{ |
510 | |
|
511 | |
|
512 | |
|
513 | |
|
514 | 0 | FacesConfigImpl config = (FacesConfigImpl) digester.parse(r); |
515 | |
|
516 | 0 | postProcessFacesConfig(null, config); |
517 | |
|
518 | 0 | return config; |
519 | |
} |
520 | |
|
521 | |
} |