1 16 package org.apache.myfaces.config.impl.digester; 17 18 import java.io.IOException ; 19 import java.io.InputStream ; 20 import javax.faces.context.ExternalContext; 21 22 import org.apache.myfaces.config.FacesConfigUnmarshaller; 23 import org.apache.myfaces.config.impl.digester.elements.*; 24 import org.apache.myfaces.config.impl.FacesConfigEntityResolver; 25 import org.apache.commons.digester.Digester; 26 import org.xml.sax.InputSource ; 27 import org.xml.sax.SAXException ; 28 29 30 53 public class DigesterFacesConfigUnmarshallerImpl implements FacesConfigUnmarshaller 54 { 55 56 private Digester digester; 57 58 59 public DigesterFacesConfigUnmarshallerImpl(ExternalContext externalContext) 60 { 61 digester = new Digester(); 62 digester.setValidating(true); 63 digester.setNamespaceAware(true); 64 digester.setEntityResolver(new FacesConfigEntityResolver(externalContext)); 65 digester.setUseContextClassLoader(true); 66 67 digester.addObjectCreate("faces-config", FacesConfig.class); 68 digester.addObjectCreate("faces-config/application", Application.class); 69 digester.addSetNext("faces-config/application", "addApplication"); 70 digester.addCallMethod("faces-config/application/action-listener", "addActionListener", 0); 71 digester.addCallMethod("faces-config/application/default-render-kit-id", "addDefaultRenderkitId", 0); 72 digester.addCallMethod("faces-config/application/message-bundle", "addMessageBundle", 0); 73 digester.addCallMethod("faces-config/application/navigation-handler", "addNavigationHandler", 0); 74 digester.addCallMethod("faces-config/application/view-handler", "addViewHandler", 0); 75 digester.addCallMethod("faces-config/application/state-manager", "addStateManager", 0); 76 digester.addCallMethod("faces-config/application/property-resolver", "addPropertyResolver", 0); 77 digester.addCallMethod("faces-config/application/variable-resolver", "addVariableResolver", 0); 78 digester.addObjectCreate("faces-config/application/locale-config", LocaleConfig.class); 79 digester.addSetNext("faces-config/application/locale-config", "addLocaleConfig"); 80 digester.addCallMethod("faces-config/application/locale-config/default-locale", "setDefaultLocale", 0); 81 digester.addCallMethod("faces-config/application/locale-config/supported-locale", "addSupportedLocale", 0); 82 83 digester.addObjectCreate("faces-config/factory", Factory.class); 84 digester.addSetNext("faces-config/factory", "addFactory"); 85 digester.addCallMethod("faces-config/factory/application-factory", "addApplicationFactory", 0); 86 digester.addCallMethod("faces-config/factory/faces-context-factory", "addFacesContextFactory", 0); 87 digester.addCallMethod("faces-config/factory/lifecycle-factory", "addLifecycleFactory", 0); 88 digester.addCallMethod("faces-config/factory/render-kit-factory", "addRenderkitFactory", 0); 89 90 digester.addCallMethod("faces-config/component", "addComponent", 2); 91 digester.addCallParam("faces-config/component/component-type", 0); 92 digester.addCallParam("faces-config/component/component-class", 1); 93 94 digester.addObjectCreate("faces-config/converter", Converter.class); 95 digester.addSetNext("faces-config/converter", "addConverter"); 96 digester.addCallMethod("faces-config/converter/converter-id", "setConverterId", 0); 97 digester.addCallMethod("faces-config/converter/converter-for-class", "setForClass", 0); 98 digester.addCallMethod("faces-config/converter/converter-class", "setConverterClass", 0); 99 digester.addObjectCreate("faces-config/converter/attribute",Attribute.class); 100 digester.addSetNext("faces-config/converter/attribute","addAttribute"); 101 digester.addCallMethod("faces-config/converter/attribute/description", "addDescription", 0); 102 digester.addCallMethod("faces-config/converter/attribute/display-name", "addDisplayName", 0); 103 digester.addCallMethod("faces-config/converter/attribute/icon", "addIcon", 0); 104 digester.addCallMethod("faces-config/converter/attribute/attribute-name", "setAttributeName", 0); 105 digester.addCallMethod("faces-config/converter/attribute/attribute-class", "setAttributeClass", 0); 106 digester.addCallMethod("faces-config/converter/attribute/default-value", "setDefaultValue", 0); 107 digester.addCallMethod("faces-config/converter/attribute/suggested-value", "setSuggestedValue", 0); 108 digester.addCallMethod("faces-config/converter/attribute/attribute-extension", "addAttributeExtension", 0); 109 digester.addObjectCreate("faces-config/converter/property",Property.class); 110 digester.addSetNext("faces-config/converter/property","addProperty"); 111 digester.addCallMethod("faces-config/converter/property/description", "addDescription", 0); 112 digester.addCallMethod("faces-config/converter/property/display-name", "addDisplayName", 0); 113 digester.addCallMethod("faces-config/converter/property/icon", "addIcon", 0); 114 digester.addCallMethod("faces-config/converter/property/property-name", "setPropertyName", 0); 115 digester.addCallMethod("faces-config/converter/property/property-class", "setPropertyClass", 0); 116 digester.addCallMethod("faces-config/converter/property/default-value", "setDefaultValue", 0); 117 digester.addCallMethod("faces-config/converter/property/suggested-value", "setSuggestedValue", 0); 118 digester.addCallMethod("faces-config/converter/property/property-extension", "addPropertyExtension", 0); 119 120 digester.addObjectCreate("faces-config/managed-bean", ManagedBean.class); 121 digester.addSetNext("faces-config/managed-bean", "addManagedBean"); 122 digester.addCallMethod("faces-config/managed-bean/managed-bean-name", "setName", 0); 123 digester.addCallMethod("faces-config/managed-bean/managed-bean-class", "setBeanClass", 0); 124 digester.addCallMethod("faces-config/managed-bean/managed-bean-scope", "setScope", 0); 125 digester.addObjectCreate("faces-config/managed-bean/managed-property", ManagedProperty.class); 126 digester.addSetNext("faces-config/managed-bean/managed-property", "addProperty"); 127 digester.addCallMethod("faces-config/managed-bean/managed-property/property-name", "setPropertyName", 0); 128 digester.addCallMethod("faces-config/managed-bean/managed-property/property-class", "setPropertyClass", 0); 129 digester.addCallMethod("faces-config/managed-bean/managed-property/null-value", "setNullValue"); 130 digester.addCallMethod("faces-config/managed-bean/managed-property/value", "setValue", 0); 131 digester.addObjectCreate("faces-config/managed-bean/managed-property/map-entries", MapEntries.class); 132 digester.addSetNext("faces-config/managed-bean/managed-property/map-entries", "setMapEntries"); 133 digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/key-class", "setKeyClass", 0); 134 digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/value-class", "setValueClass", 0); 135 digester.addObjectCreate("faces-config/managed-bean/managed-property/map-entries/map-entry", MapEntries.Entry.class); 136 digester.addSetNext("faces-config/managed-bean/managed-property/map-entries/map-entry", "addEntry"); 137 digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/map-entry/key", "setKey", 0); 138 digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/map-entry/null-value", "setNullValue"); 139 digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/map-entry/value", "setValue", 0); 140 digester.addObjectCreate("faces-config/managed-bean/managed-property/list-entries", ListEntries.class); 141 digester.addSetNext("faces-config/managed-bean/managed-property/list-entries", "setListEntries"); 142 digester.addCallMethod("faces-config/managed-bean/managed-property/list-entries/value-class", "setValueClass", 0); 143 digester.addObjectCreate("faces-config/managed-bean/managed-property/list-entries/null-value", ListEntries.Entry.class); 144 digester.addSetNext("faces-config/managed-bean/managed-property/list-entries/null-value", "addEntry"); 145 digester.addCallMethod("faces-config/managed-bean/managed-property/list-entries/null-value", "setNullValue"); 146 digester.addObjectCreate("faces-config/managed-bean/managed-property/list-entries/value", ListEntries.Entry.class); 147 digester.addSetNext("faces-config/managed-bean/managed-property/list-entries/value", "addEntry"); 148 digester.addCallMethod("faces-config/managed-bean/managed-property/list-entries/value", "setValue", 0); 149 digester.addObjectCreate("faces-config/managed-bean/map-entries", MapEntries.class); 150 digester.addSetNext("faces-config/managed-bean/map-entries", "setMapEntries"); 151 digester.addCallMethod("faces-config/managed-bean/map-entries/key-class", "setKeyClass", 0); 152 digester.addCallMethod("faces-config/managed-bean/map-entries/value-class", "setValueClass", 0); 153 digester.addObjectCreate("faces-config/managed-bean/map-entries/map-entry", MapEntries.Entry.class); 154 digester.addSetNext("faces-config/managed-bean/map-entries/map-entry", "addEntry"); 155 digester.addCallMethod("faces-config/managed-bean/map-entries/map-entry/key", "setKey", 0); 156 digester.addCallMethod("faces-config/managed-bean/map-entries/map-entry/null-value", "setNullValue"); 157 digester.addCallMethod("faces-config/managed-bean/map-entries/map-entry/value", "setValue", 0); 158 digester.addObjectCreate("faces-config/managed-bean/list-entries", ListEntries.class); 159 digester.addSetNext("faces-config/managed-bean/list-entries", "setListEntries"); 160 digester.addCallMethod("faces-config/managed-bean/list-entries/value-class", "setValueClass", 0); 161 digester.addObjectCreate("faces-config/managed-bean/list-entries/null-value", ListEntries.Entry.class); 162 digester.addSetNext("faces-config/managed-bean/list-entries/null-value", "addEntry"); 163 digester.addCallMethod("faces-config/managed-bean/list-entries/null-value", "setNullValue"); 164 digester.addObjectCreate("faces-config/managed-bean/list-entries/value", ListEntries.Entry.class); 165 digester.addSetNext("faces-config/managed-bean/list-entries/value", "addEntry"); 166 digester.addCallMethod("faces-config/managed-bean/list-entries/value", "setValue", 0); 167 168 digester.addObjectCreate("faces-config/navigation-rule", NavigationRule.class); 169 digester.addSetNext("faces-config/navigation-rule", "addNavigationRule"); 170 digester.addCallMethod("faces-config/navigation-rule/from-view-id", "setFromViewId", 0); 171 digester.addObjectCreate("faces-config/navigation-rule/navigation-case", NavigationCase.class); 172 digester.addSetNext("faces-config/navigation-rule/navigation-case", "addNavigationCase"); 173 digester.addCallMethod("faces-config/navigation-rule/navigation-case/from-action", "setFromAction", 0); 174 digester.addCallMethod("faces-config/navigation-rule/navigation-case/from-outcome", "setFromOutcome", 0); 175 digester.addCallMethod("faces-config/navigation-rule/navigation-case/to-view-id", "setToViewId", 0); 176 digester.addCallMethod("faces-config/navigation-rule/navigation-case/redirect", "setRedirect"); 177 178 digester.addObjectCreate("faces-config/render-kit", RenderKit.class); 179 digester.addSetNext("faces-config/render-kit", "addRenderKit"); 180 digester.addCallMethod("faces-config/render-kit/render-kit-id", "setId", 0); 181 digester.addCallMethod("faces-config/render-kit/render-kit-class", "setRenderKitClass", 0); 182 digester.addObjectCreate("faces-config/render-kit/renderer", Renderer.class); 183 digester.addSetNext("faces-config/render-kit/renderer", "addRenderer"); 184 digester.addCallMethod("faces-config/render-kit/renderer/component-family", "setComponentFamily", 0); 185 digester.addCallMethod("faces-config/render-kit/renderer/renderer-type", "setRendererType", 0); 186 digester.addCallMethod("faces-config/render-kit/renderer/renderer-class", "setRendererClass", 0); 187 188 digester.addCallMethod("faces-config/lifecycle/phase-listener", "addLifecyclePhaseListener", 0); 189 190 digester.addCallMethod("faces-config/validator", "addValidator", 2); 191 digester.addCallParam("faces-config/validator/validator-id", 0); 192 digester.addCallParam("faces-config/validator/validator-class", 1); 193 } 194 195 196 public Object getFacesConfig(InputStream in, String systemId) throws IOException , SAXException 197 { 198 InputSource is = new InputSource (in); 199 is.setSystemId(systemId); 200 return digester.parse(is); 201 } 202 203 204 } 205 | Popular Tags |