Example usage for org.xml.sax EntityResolver EntityResolver

List of usage examples for org.xml.sax EntityResolver EntityResolver

Introduction

In this page you can find the example usage for org.xml.sax EntityResolver EntityResolver.

Prototype

EntityResolver

Source Link

Usage

From source file:com.autentia.mvn.plugin.changes.BugzillaChangesMojo.java

/**
 * Gets bugs XML document from Bugzilla.
 * //from  w  ww. ja  v a2 s.  co m
 * @param client
 * @param bugsIds
 * @return
 * @throws MojoExecutionException
 */
private Document getBugsDocument(final HttpClient client, final String bugsIds) throws MojoExecutionException {
    final String link = this.bugzillaUrl + SHOWBUG_URL;
    try {
        final byte[] response = this.httpRequest.sendPostRequest(client, link, bugsIds);

        final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        final DocumentBuilder db = dbf.newDocumentBuilder();
        db.setEntityResolver(new EntityResolver() {

            public InputSource resolveEntity(final String publicId, final String systemId)
                    throws SAXException, IOException {
                return new InputSource(
                        this.getClass().getClassLoader().getResourceAsStream("bugzilla3/bugzilla.dtd"));
            }
        });
        final ByteArrayInputStream bais = new ByteArrayInputStream(response);

        final Document docBugzilla = db.parse(bais);
        this.cleanBugzillaDocument(docBugzilla);
        return docBugzilla;
    } catch (final HttpStatusException e) {
        this.getLog().warn("Can not recover bugs in XML", e);
        throw new MojoExecutionException("Can not recover bugs in XML.", e);
    } catch (final IOException e) {
        this.getLog().warn("Can not recover bugs in XML", e);
        throw new MojoExecutionException("Can not recover bugs in XML.", e);
    } catch (final ParserConfigurationException e) {
        this.getLog().warn("Can not parse XML bugs", e);
        throw new MojoExecutionException("Can not parse XML bugs.", e);
    } catch (final SAXException e) {
        this.getLog().warn("Can not build bugs XML document", e);
        throw new MojoExecutionException("Can not build bugs XML document.", e);
    }
}

From source file:de.betterform.xml.xforms.XFormsProcessorImpl.java

private DocumentBuilder getDocumentBuilder() throws XFormsException {
    // ensure xerces dom
    try {/*from w  ww  .  java2 s  . c  o m*/
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        factory.setValidating(false);
        factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
        // factory.setAttribute("http://apache.org/xml/properties/dom/document-class-name", "org.apache.xerces.dom.DocumentImpl");

        DocumentBuilder db = factory.newDocumentBuilder();
        // use an empty entity resolver to avoid that Xerces may try to
        // download the system DTD (can cause latency problems)
        db.setEntityResolver(new EntityResolver() {
            public InputSource resolveEntity(String publicId, String systemId)
                    throws SAXException, IOException {
                return null;
            };
        });
        return db;
    } catch (Exception e) {
        throw new XFormsException(e);
    }
}

From source file:com.twinsoft.convertigo.engine.util.XMLUtils.java

public static EntityResolver getEntityResolver() {
    return new EntityResolver() {
        public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
            if ("-//W3C//ENTITIES Latin 1 for XHTML//EN".equals(publicId))
                return new InputSource(new FileInputStream(Engine.DTD_PATH + "/xhtml-lat1.ent"));
            if ("-//W3C//ENTITIES Special for XHTML//EN".equals(publicId))
                return new InputSource(new FileInputStream(Engine.DTD_PATH + "/xhtml-special.ent"));
            if ("-//W3C//ENTITIES Symbols for XHTML//EN".equals(publicId))
                return new InputSource(new FileInputStream(Engine.DTD_PATH + "/xhtml-symbol.ent"));
            if ("-//W3C//DTD XHTML 1.0 Strict//EN".equals(publicId))
                return new InputSource(new FileInputStream(Engine.DTD_PATH + "/xhtml1-strict.dtd"));
            if ("-//W3C//DTD XHTML 1.0 Transitional//EN".equals(publicId))
                return new InputSource(new FileInputStream(Engine.DTD_PATH + "/xhtml1-transitional.dtd"));
            return new InputSource(new FileInputStream(systemId));
        }//from ww  w. j  a  va  2 s.c  o m
    };
}

From source file:net.yacy.cora.document.feed.RSSReader.java

public RSSReader(final int maxsize, InputStream stream) throws IOException {
    this(maxsize);
    if (!(stream instanceof ByteArrayInputStream) && !(stream instanceof BufferedInputStream))
        stream = new BufferedInputStream(stream);
    try {/* w  w w  . ja va2 s. co m*/
        final SAXParser saxParser = getParser();
        // do not look at external dtd - see: http://www.ibm.com/developerworks/xml/library/x-tipcfsx/index.html
        saxParser.getXMLReader().setEntityResolver(new EntityResolver() {
            @Override
            public InputSource resolveEntity(final String arg0, final String arg1)
                    throws SAXException, IOException {
                return new InputSource(new StringReader(""));
            }
        });
        saxParser.parse(stream, this);
    } catch (final SAXException e) {
        throw new IOException(e.getMessage());
    }
}

From source file:net.yacy.cora.document.feed.RSSReader.java

public RSSReader(final int maxsize, final long maxBytes, InputStream stream) throws IOException {
    this(maxsize);

    if (!(stream instanceof ByteArrayInputStream) && !(stream instanceof BufferedInputStream)) {
        stream = new BufferedInputStream(stream);
    }//from   ww w  . j a v a2s.com

    StrictLimitInputStream limitedSource = new StrictLimitInputStream(stream, maxBytes);

    try {
        final SAXParser saxParser = getParser();
        // do not look at external dtd - see: http://www.ibm.com/developerworks/xml/library/x-tipcfsx/index.html
        saxParser.getXMLReader().setEntityResolver(new EntityResolver() {
            @Override
            public InputSource resolveEntity(final String arg0, final String arg1)
                    throws SAXException, IOException {
                return new InputSource(new StringReader(""));
            }
        });
        saxParser.parse(limitedSource, this);
    } catch (final SAXException e) {
        throw new IOException(e.getMessage());
    } catch (StreamLimitException e) {
        this.maxBytesExceeded = true;
    }
}

From source file:nl.armatiek.xslweb.serializer.RequestSerializer.java

private XMLReader getFilteredXMLReader() throws SAXException {
    if (this.xmlReader == null) {
        XMLFilterImpl filter = new BodyFilter();
        filter.setContentHandler(new ContentHandlerToXMLStreamWriter(xsw));
        this.xmlReader = XMLReaderFactory.createXMLReader();
        this.xmlReader.setFeature("http://xml.org/sax/features/validation", false);
        this.xmlReader.setFeature("http://xml.org/sax/features/namespaces", true);
        this.xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", false);
        if (Context.getInstance().getParserHardening()) {
            this.xmlReader.setFeature("http://xml.org/sax/features/external-general-entities", false);
            this.xmlReader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
            this.xmlReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
            this.xmlReader.setEntityResolver(new EntityResolver() {
                @Override//from   ww w.j  a v a2  s.  c o m
                public InputSource resolveEntity(String publicId, String systemId)
                        throws SAXException, IOException {
                    return null;
                }
            });
            this.xmlReader.setProperty("http://apache.org/xml/properties/security-manager",
                    "org.apache.xerces.util.SecurityManager");
        }
        this.xmlReader.setContentHandler(filter);
    }
    return this.xmlReader;
}

From source file:org.ajax4jsf.resource.ResourceBuilderImpl.java

private void registerConfig(URL resourceConfig) {
    try {//w  w  w .j  a v  a 2 s.com
        if (log.isDebugEnabled()) {
            log.debug("Process resources configuration file " + resourceConfig.toExternalForm());
        }

        InputStream in = URLToStreamHelper.urlToStream(resourceConfig);
        try {
            Digester digester = new Digester();
            digester.setValidating(false);
            digester.setEntityResolver(new EntityResolver() {
                // Dummi resolver - alvays do nothing
                public InputSource resolveEntity(String publicId, String systemId)
                        throws SAXException, IOException {
                    return new InputSource(new StringReader(""));
                }
            });
            digester.setNamespaceAware(false);
            digester.setUseContextClassLoader(true);
            digester.push(this);
            digester.addObjectCreate("resource-config/resource", "class", JarResource.class);
            digester.addObjectCreate("resource-config/resource/renderer", "class", HTMLRenderer.class);
            digester.addCallMethod("resource-config/resource/renderer/content-type", "setContentType", 0);
            digester.addSetNext("resource-config/resource/renderer", "setRenderer",
                    ResourceRenderer.class.getName());
            digester.addCallMethod("resource-config/resource/name", "setKey", 0);
            digester.addCallMethod("resource-config/resource/path", "setPath", 0);
            digester.addCallMethod("resource-config/resource/cacheable", "setCacheable", 0);
            digester.addCallMethod("resource-config/resource/session-aware", "setSessionAware", 0);
            digester.addCallMethod("resource-config/resource/property", "setProperty", 2);
            digester.addCallParam("resource-config/resource/property/name", 0);
            digester.addCallParam("resource-config/resource/property/value", 1);
            digester.addCallMethod("resource-config/resource/content-type", "setContentType", 0);
            digester.addSetNext("resource-config/resource", "addResource", InternetResource.class.getName());
            digester.parse(in);
        } finally {
            in.close();
        }
    } catch (IOException e) {
        throw new FacesException(e);
    } catch (SAXException e) {
        throw new FacesException(e);
    }
}

From source file:org.apache.axis2.jaxbri.CodeGenerationUtility.java

/**
 * @param additionalSchemas/*from  w  w  w  .  java  2  s  .  c  o m*/
 * @throws RuntimeException
 */
public static TypeMapper processSchemas(final List schemas, Element[] additionalSchemas,
        CodeGenConfiguration cgconfig) throws RuntimeException {
    try {

        //check for the imported types. Any imported types are supposed to be here also
        if (schemas == null || schemas.isEmpty()) {
            //there are no types to be code generated
            //However if the type mapper is left empty it will be a problem for the other
            //processes. Hence the default type mapper is set to the configuration
            return new DefaultTypeMapper();
        }

        final Map schemaToInputSourceMap = new HashMap();
        final Map<String, StringBuffer> publicIDToStringMap = new HashMap<String, StringBuffer>();

        //create the type mapper
        JavaTypeMapper mapper = new JavaTypeMapper();

        String baseURI = cgconfig.getBaseURI();
        if (!baseURI.endsWith("/")) {
            baseURI = baseURI + "/";
        }

        for (int i = 0; i < schemas.size(); i++) {
            XmlSchema schema = (XmlSchema) schemas.get(i);
            InputSource inputSource = new InputSource(new StringReader(getSchemaAsString(schema)));
            //here we have to set a proper system ID. otherwise when processing the
            // included schaemas for this schema we have a problem
            // it creates the system ID using this target namespace value

            inputSource.setSystemId(baseURI + "xsd" + i + ".xsd");
            inputSource.setPublicId(schema.getTargetNamespace());
            schemaToInputSourceMap.put(schema, inputSource);
        }

        File outputDir = new File(cgconfig.getOutputLocation(), "src");
        outputDir.mkdir();

        Map nsMap = cgconfig.getUri2PackageNameMap();
        EntityResolver resolver = new EntityResolver() {
            public InputSource resolveEntity(String publicId, String systemId)
                    throws SAXException, IOException {
                InputSource returnInputSource = null;
                XmlSchema key = null;
                for (Iterator iter = schemaToInputSourceMap.keySet().iterator(); iter.hasNext();) {
                    key = (XmlSchema) iter.next();
                    String nsp = key.getTargetNamespace();
                    if (nsp != null && nsp.equals(publicId)) {

                        // when returning the input stream we have to always return a new
                        // input stream.
                        // sinc jaxbri internally consumes the input stream it gives an
                        // exception.
                        returnInputSource = new InputSource(new StringReader(getSchemaAsString(key)));
                        InputSource existingInputSource = (InputSource) schemaToInputSourceMap.get(key);
                        returnInputSource.setSystemId(existingInputSource.getSystemId());
                        returnInputSource.setPublicId(existingInputSource.getPublicId());
                        break;
                    }
                }
                if (returnInputSource == null) {
                    // then we have to find this using the file system
                    if (systemId != null) {
                        returnInputSource = new InputSource(systemId);
                        returnInputSource.setSystemId(systemId);
                    }
                }

                if (returnInputSource == null) {
                    if (publicId != null) {

                        if (!publicIDToStringMap.containsKey(publicId)) {
                            URL url = new URL(publicId);
                            BufferedReader bufferedReader = new BufferedReader(
                                    new InputStreamReader(url.openStream()));
                            StringBuffer stringBuffer = new StringBuffer();
                            String str = null;
                            while ((str = bufferedReader.readLine()) != null) {
                                stringBuffer.append(str);
                            }
                            publicIDToStringMap.put(publicId, stringBuffer);
                        }

                        String schemaString = publicIDToStringMap.get(publicId).toString();
                        returnInputSource = new InputSource(new StringReader(schemaString));
                        returnInputSource.setPublicId(publicId);
                        returnInputSource.setSystemId(publicId);
                    }
                }
                return returnInputSource;
            }
        };

        Map properties = cgconfig.getProperties();
        String bindingFileName = (String) properties.get(BINDING_FILE_NAME);

        XmlSchema key = null;
        for (Iterator schemaIter = schemaToInputSourceMap.keySet().iterator(); schemaIter.hasNext();) {

            SchemaCompiler sc = XJC.createSchemaCompiler();
            if (bindingFileName != null) {
                if (bindingFileName.endsWith(".jar")) {
                    scanEpisodeFile(new File(bindingFileName), sc);
                } else {
                    InputSource inputSoruce = new InputSource(new FileInputStream(bindingFileName));
                    inputSoruce.setSystemId(new File(bindingFileName).toURI().toString());
                    sc.getOptions().addBindFile(inputSoruce);
                }

            }

            key = (XmlSchema) schemaIter.next();

            if (nsMap != null) {
                Iterator iterator = nsMap.entrySet().iterator();
                while (iterator.hasNext()) {
                    Map.Entry entry = (Map.Entry) iterator.next();
                    String namespace = (String) entry.getKey();
                    String pkg = (String) nsMap.get(namespace);
                    registerNamespace(sc, namespace, pkg);
                }
            }

            sc.setEntityResolver(resolver);

            sc.setErrorListener(new ErrorListener() {
                public void error(SAXParseException saxParseException) {
                    log.error(saxParseException.getMessage());
                    log.debug(saxParseException.getMessage(), saxParseException);
                }

                public void fatalError(SAXParseException saxParseException) {
                    log.error(saxParseException.getMessage());
                    log.debug(saxParseException.getMessage(), saxParseException);
                }

                public void warning(SAXParseException saxParseException) {
                    log.warn(saxParseException.getMessage());
                    log.debug(saxParseException.getMessage(), saxParseException);
                }

                public void info(SAXParseException saxParseException) {
                    log.info(saxParseException.getMessage());
                    log.debug(saxParseException.getMessage(), saxParseException);
                }
            });

            sc.parseSchema((InputSource) schemaToInputSourceMap.get(key));
            sc.getOptions().addGrammar((InputSource) schemaToInputSourceMap.get(key));

            for (Object property : properties.keySet()) {
                String propertyName = (String) property;
                if (propertyName.startsWith("X")) {
                    String[] args = null;
                    String propertyValue = (String) properties.get(property);
                    if (propertyValue != null) {
                        args = new String[] { "-" + propertyName, propertyValue };
                    } else {
                        args = new String[] { "-" + propertyName };
                    }
                    sc.getOptions().parseArguments(args);
                }
            }

            // Bind the XML
            S2JJAXBModel jaxbModel = sc.bind();

            if (jaxbModel == null) {
                throw new RuntimeException("Unable to generate code using jaxbri");
            }

            // Emit the code artifacts
            JCodeModel codeModel = jaxbModel.generateCode(null, null);
            FileCodeWriter writer = new FileCodeWriter(outputDir);
            codeModel.build(writer);

            Collection mappings = jaxbModel.getMappings();

            Iterator iter = mappings.iterator();

            while (iter.hasNext()) {
                Mapping mapping = (Mapping) iter.next();
                QName qn = mapping.getElement();
                String typeName = mapping.getType().getTypeClass().fullName();

                mapper.addTypeMappingName(qn, typeName);
            }

            //process the unwrapped parameters
            if (!cgconfig.isParametersWrapped()) {
                //figure out the unwrapped operations
                List axisServices = cgconfig.getAxisServices();
                for (Iterator servicesIter = axisServices.iterator(); servicesIter.hasNext();) {
                    AxisService axisService = (AxisService) servicesIter.next();
                    for (Iterator operations = axisService.getOperations(); operations.hasNext();) {
                        AxisOperation op = (AxisOperation) operations.next();

                        if (WSDLUtil.isInputPresentForMEP(op.getMessageExchangePattern())) {
                            AxisMessage message = op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
                            if (message != null && message.getParameter(Constants.UNWRAPPED_KEY) != null) {

                                Mapping mapping = jaxbModel.get(message.getElementQName());
                                List elementProperties = mapping.getWrapperStyleDrilldown();
                                for (int j = 0; j < elementProperties.size(); j++) {
                                    Property elementProperty = (Property) elementProperties.get(j);

                                    QName partQName = WSDLUtil.getPartQName(op.getName().getLocalPart(),
                                            WSDLConstants.INPUT_PART_QNAME_SUFFIX,
                                            elementProperty.elementName().getLocalPart());
                                    //this type is based on a primitive type- use the
                                    //primitive type name in this case
                                    String fullJaveName = elementProperty.type().fullName();
                                    if (elementProperty.type().isArray()) {
                                        fullJaveName = fullJaveName.concat("[]");
                                    }
                                    mapper.addTypeMappingName(partQName, fullJaveName);

                                    if (elementProperty.type().isPrimitive()) {
                                        mapper.addTypeMappingStatus(partQName, Boolean.TRUE);
                                    }
                                    if (elementProperty.type().isArray()) {
                                        mapper.addTypeMappingStatus(partQName, Constants.ARRAY_TYPE);
                                    }
                                }
                            }
                        }

                        if (WSDLUtil.isOutputPresentForMEP(op.getMessageExchangePattern())) {
                            AxisMessage message = op.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
                            if (message != null && message.getParameter(Constants.UNWRAPPED_KEY) != null) {

                                Mapping mapping = jaxbModel.get(message.getElementQName());
                                List elementProperties = mapping.getWrapperStyleDrilldown();
                                for (int j = 0; j < elementProperties.size(); j++) {
                                    Property elementProperty = (Property) elementProperties.get(j);

                                    QName partQName = WSDLUtil.getPartQName(op.getName().getLocalPart(),
                                            WSDLConstants.OUTPUT_PART_QNAME_SUFFIX,
                                            elementProperty.elementName().getLocalPart());
                                    //this type is based on a primitive type- use the
                                    //primitive type name in this case
                                    String fullJaveName = elementProperty.type().fullName();
                                    if (elementProperty.type().isArray()) {
                                        fullJaveName = fullJaveName.concat("[]");
                                    }
                                    mapper.addTypeMappingName(partQName, fullJaveName);

                                    if (elementProperty.type().isPrimitive()) {
                                        mapper.addTypeMappingStatus(partQName, Boolean.TRUE);
                                    }
                                    if (elementProperty.type().isArray()) {
                                        mapper.addTypeMappingStatus(partQName, Constants.ARRAY_TYPE);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        // Return the type mapper
        return mapper;

    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

From source file:org.apache.beehive.netui.util.config.internal.catalog.CatalogParser.java

public CatalogConfig parse(final String resourcePath, final InputStream inputStream) {
    CatalogConfig catalogConfig = null;//from ww  w  .j a v a 2  s.  c om
    InputStream xmlInputStream = null;
    InputStream xsdInputStream = null;
    try {
        xmlInputStream = inputStream;
        xsdInputStream = getClass().getClassLoader().getResourceAsStream(CONFIG_SCHEMA);

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setValidating(true);
        dbf.setNamespaceAware(true);
        dbf.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
        dbf.setAttribute(JAXP_SCHEMA_SOURCE, xsdInputStream);

        DocumentBuilder db = dbf.newDocumentBuilder();
        db.setErrorHandler(new ErrorHandler() {
            public void warning(SAXParseException exception) {
                LOG.info("Validation warning validating config file \"" + resourcePath
                        + "\" against XML Schema \"" + CONFIG_SCHEMA);
            }

            public void error(SAXParseException exception) {
                throw new RuntimeException("Validation errors occurred parsing the config file \""
                        + resourcePath + "\".  Cause: " + exception, exception);
            }

            public void fatalError(SAXParseException exception) {
                throw new RuntimeException("Validation errors occurred parsing the config file \""
                        + resourcePath + "\".  Cause: " + exception, exception);
            }
        });

        db.setEntityResolver(new EntityResolver() {
            public InputSource resolveEntity(String publicId, String systemId) {
                if (systemId.endsWith("/catalog-config.xsd")) {
                    InputStream inputStream = getClass().getClassLoader().getResourceAsStream(CONFIG_SCHEMA);
                    return new InputSource(inputStream);
                } else
                    return null;
            }
        });

        Document document = db.parse(xmlInputStream);
        Element catalogElement = document.getDocumentElement();
        catalogConfig = parse(catalogElement);

    } catch (ParserConfigurationException e) {
        throw new RuntimeException("Error occurred parsing the config file \"" + resourcePath + "\"", e);
    } catch (IOException e) {
        throw new RuntimeException("Error occurred parsing the config file \"" + resourcePath + "\"", e);
    } catch (SAXException e) {
        throw new RuntimeException("Error occurred parsing the config file \"" + resourcePath + "\"", e);
    } finally {
        try {
            if (xsdInputStream != null)
                xsdInputStream.close();
        } catch (IOException e) {
        }
    }

    return catalogConfig;
}

From source file:org.apache.geronimo.myfaces.FacesConfigDigester.java

public FacesConfigDigester() {
    digester = new Digester();
    // TODO: validation set to false during implementation of 1.2
    digester.setValidating(false);//from ww  w .j  a v a  2 s  .c  o  m
    digester.setNamespaceAware(true);
    digester.setEntityResolver(new EntityResolver() {

        @Override
        public InputSource resolveEntity(String arg0, String arg1) throws SAXException, IOException {
            return EMPTY_INPUT_SOURCE;
        }

    });
    //digester.setUseContextClassLoader(true);
    digester.setClassLoader(FacesConfig.class.getClassLoader());

    digester.addObjectCreate("faces-config", FacesConfig.class);
    // 2.0 specific start
    digester.addSetProperties("faces-config", "metadata-complete", "metadataComplete");
    digester.addSetProperties("faces-config", "version", "version");
    // 2.0 specific end
    // 2.0 config ordering name start
    digester.addCallMethod("faces-config/name", "setName", 0);
    digester.addObjectCreate("faces-config/ordering", Ordering.class);
    digester.addSetNext("faces-config/ordering", "setOrdering");
    digester.addObjectCreate("faces-config/ordering/before/name", FacesConfigNameSlot.class);
    digester.addSetNext("faces-config/ordering/before/name", "addBeforeSlot");
    digester.addCallMethod("faces-config/ordering/before/name", "setName", 0);
    digester.addObjectCreate("faces-config/ordering/before/others", ConfigOthersSlot.class);
    digester.addSetNext("faces-config/ordering/before/others", "addBeforeSlot");

    digester.addObjectCreate("faces-config/ordering/after/name", FacesConfigNameSlot.class);
    digester.addSetNext("faces-config/ordering/after/name", "addAfterSlot");
    digester.addCallMethod("faces-config/ordering/after/name", "setName", 0);
    digester.addObjectCreate("faces-config/ordering/after/others", ConfigOthersSlot.class);
    digester.addSetNext("faces-config/ordering/after/others", "addAfterSlot");

    digester.addObjectCreate("faces-config/absolute-ordering", AbsoluteOrdering.class);
    digester.addSetNext("faces-config/absolute-ordering", "setAbsoluteOrdering");
    digester.addObjectCreate("faces-config/absolute-ordering/name", FacesConfigNameSlot.class);
    digester.addSetNext("faces-config/absolute-ordering/name", "addOrderSlot");
    digester.addCallMethod("faces-config/absolute-ordering/name", "setName", 0);
    digester.addObjectCreate("faces-config/absolute-ordering/others", ConfigOthersSlot.class);
    digester.addSetNext("faces-config/absolute-ordering/others", "addOrderSlot");
    // 2.0 config ordering name end

    digester.addObjectCreate("faces-config/application", Application.class);
    digester.addSetNext("faces-config/application", "addApplication");
    digester.addCallMethod("faces-config/application/action-listener", "addActionListener", 0);
    digester.addCallMethod("faces-config/application/default-render-kit-id", "addDefaultRenderkitId", 0);
    digester.addCallMethod("faces-config/application/default-validators", "setDefaultValidatorsPresent");
    digester.addCallMethod("faces-config/application/default-validators/validator-id", "addDefaultValidatorId",
            0);
    digester.addCallMethod("faces-config/application/message-bundle", "addMessageBundle", 0);
    digester.addCallMethod("faces-config/application/navigation-handler", "addNavigationHandler", 0);
    digester.addCallMethod("faces-config/application/partial-traversal", "addPartialTraversal", 0);
    digester.addCallMethod("faces-config/application/view-handler", "addViewHandler", 0);
    digester.addCallMethod("faces-config/application/state-manager", "addStateManager", 0);
    digester.addCallMethod("faces-config/application/property-resolver", "addPropertyResolver", 0);
    digester.addCallMethod("faces-config/application/variable-resolver", "addVariableResolver", 0);
    digester.addObjectCreate("faces-config/application/locale-config", LocaleConfig.class);
    digester.addSetNext("faces-config/application/locale-config", "addLocaleConfig");
    digester.addCallMethod("faces-config/application/locale-config/default-locale", "setDefaultLocale", 0);
    digester.addCallMethod("faces-config/application/locale-config/supported-locale", "addSupportedLocale", 0);

    // 1.2 specific start
    digester.addCallMethod("faces-config/application/el-resolver", "addElResolver", 0);
    digester.addObjectCreate("faces-config/application/resource-bundle", ResourceBundle.class);
    digester.addSetNext("faces-config/application/resource-bundle", "addResourceBundle");
    digester.addCallMethod("faces-config/application/resource-bundle/base-name", "setBaseName", 0);
    digester.addCallMethod("faces-config/application/resource-bundle/var", "setVar", 0);
    digester.addCallMethod("faces-config/application/resource-bundle/display-name", "setDisplayName", 0);
    // 1.2 specific end

    // 2.0 specific start
    digester.addObjectCreate("faces-config/application/system-event-listener", SystemEventListener.class);
    digester.addSetNext("faces-config/application/system-event-listener", "addSystemEventListener");
    digester.addCallMethod("faces-config/application/system-event-listener/system-event-listener-class",
            "setSystemEventListenerClass", 0);
    digester.addCallMethod("faces-config/application/system-event-listener/system-event-class",
            "setSystemEventClass", 0);
    digester.addCallMethod("faces-config/application/system-event-listener/source-class", "setSourceClass", 0);
    digester.addCallMethod("faces-config/application/resource-handler", "addResourceHandler", 0);
    digester.addCallMethod("faces-config/factory/exception-handler-factory", "addExceptionHandlerFactory", 0);
    digester.addCallMethod("faces-config/factory/external-context-factory", "addExternalContextFactory", 0);
    digester.addCallMethod("faces-config/factory/view-declaration-language-factory",
            "addViewDeclarationLanguageFactory", 0);
    digester.addCallMethod("faces-config/factory/partial-view-context-factory", "addPartialViewContextFactory",
            0);
    digester.addCallMethod("faces-config/factory/tag-handler-delegate-factory", "addTagHandlerDelegateFactory",
            0);
    digester.addCallMethod("faces-config/factory/visit-context-factory", "addVisitContextFactory", 0);
    // 2.0 specific end

    digester.addObjectCreate("faces-config/factory", Factory.class);
    digester.addSetNext("faces-config/factory", "addFactory");
    digester.addCallMethod("faces-config/factory/application-factory", "addApplicationFactory", 0);
    digester.addCallMethod("faces-config/factory/faces-context-factory", "addFacesContextFactory", 0);
    digester.addCallMethod("faces-config/factory/lifecycle-factory", "addLifecycleFactory", 0);
    digester.addCallMethod("faces-config/factory/render-kit-factory", "addRenderkitFactory", 0);

    digester.addCallMethod("faces-config/component", "addComponent", 2);
    digester.addCallParam("faces-config/component/component-type", 0);
    digester.addCallParam("faces-config/component/component-class", 1);

    digester.addObjectCreate("faces-config/converter", Converter.class);
    digester.addSetNext("faces-config/converter", "addConverter");
    digester.addCallMethod("faces-config/converter/converter-id", "setConverterId", 0);
    digester.addCallMethod("faces-config/converter/converter-for-class", "setForClass", 0);
    digester.addCallMethod("faces-config/converter/converter-class", "setConverterClass", 0);
    digester.addObjectCreate("faces-config/converter/attribute", Attribute.class);
    digester.addSetNext("faces-config/converter/attribute", "addAttribute");
    digester.addCallMethod("faces-config/converter/attribute/description", "addDescription", 0);
    digester.addCallMethod("faces-config/converter/attribute/display-name", "addDisplayName", 0);
    digester.addCallMethod("faces-config/converter/attribute/icon", "addIcon", 0);
    digester.addCallMethod("faces-config/converter/attribute/attribute-name", "setAttributeName", 0);
    digester.addCallMethod("faces-config/converter/attribute/attribute-class", "setAttributeClass", 0);
    digester.addCallMethod("faces-config/converter/attribute/default-value", "setDefaultValue", 0);
    digester.addCallMethod("faces-config/converter/attribute/suggested-value", "setSuggestedValue", 0);
    digester.addCallMethod("faces-config/converter/attribute/attribute-extension", "addAttributeExtension", 0);
    digester.addObjectCreate("faces-config/converter/property", Property.class);
    digester.addSetNext("faces-config/converter/property", "addProperty");
    digester.addCallMethod("faces-config/converter/property/description", "addDescription", 0);
    digester.addCallMethod("faces-config/converter/property/display-name", "addDisplayName", 0);
    digester.addCallMethod("faces-config/converter/property/icon", "addIcon", 0);
    digester.addCallMethod("faces-config/converter/property/property-name", "setPropertyName", 0);
    digester.addCallMethod("faces-config/converter/property/property-class", "setPropertyClass", 0);
    digester.addCallMethod("faces-config/converter/property/default-value", "setDefaultValue", 0);
    digester.addCallMethod("faces-config/converter/property/suggested-value", "setSuggestedValue", 0);
    digester.addCallMethod("faces-config/converter/property/property-extension", "addPropertyExtension", 0);

    digester.addObjectCreate("faces-config/managed-bean", ManagedBean.class);
    digester.addSetProperties("faces-config/managed-bean", "eager", "eager");
    digester.addSetNext("faces-config/managed-bean", "addManagedBean");
    digester.addCallMethod("faces-config/managed-bean/description", "setDescription", 0);
    digester.addCallMethod("faces-config/managed-bean/managed-bean-name", "setName", 0);
    digester.addCallMethod("faces-config/managed-bean/managed-bean-class", "setBeanClass", 0);
    digester.addCallMethod("faces-config/managed-bean/managed-bean-scope", "setScope", 0);
    digester.addObjectCreate("faces-config/managed-bean/managed-property", ManagedProperty.class);
    digester.addSetNext("faces-config/managed-bean/managed-property", "addProperty");
    digester.addCallMethod("faces-config/managed-bean/managed-property/property-name", "setPropertyName", 0);
    digester.addCallMethod("faces-config/managed-bean/managed-property/property-class", "setPropertyClass", 0);
    digester.addCallMethod("faces-config/managed-bean/managed-property/null-value", "setNullValue");
    digester.addCallMethod("faces-config/managed-bean/managed-property/value", "setValue", 0);
    digester.addObjectCreate("faces-config/managed-bean/managed-property/map-entries", MapEntries.class);
    digester.addSetNext("faces-config/managed-bean/managed-property/map-entries", "setMapEntries");
    digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/key-class", "setKeyClass",
            0);
    digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/value-class",
            "setValueClass", 0);
    digester.addObjectCreate("faces-config/managed-bean/managed-property/map-entries/map-entry",
            MapEntries.Entry.class);
    digester.addSetNext("faces-config/managed-bean/managed-property/map-entries/map-entry", "addEntry");
    digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/map-entry/key", "setKey", 0);
    digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/map-entry/null-value",
            "setNullValue");
    digester.addCallMethod("faces-config/managed-bean/managed-property/map-entries/map-entry/value", "setValue",
            0);
    digester.addObjectCreate("faces-config/managed-bean/managed-property/list-entries", ListEntries.class);
    digester.addSetNext("faces-config/managed-bean/managed-property/list-entries", "setListEntries");
    digester.addCallMethod("faces-config/managed-bean/managed-property/list-entries/value-class",
            "setValueClass", 0);
    digester.addObjectCreate("faces-config/managed-bean/managed-property/list-entries/null-value",
            ListEntries.Entry.class);
    digester.addSetNext("faces-config/managed-bean/managed-property/list-entries/null-value", "addEntry");
    digester.addCallMethod("faces-config/managed-bean/managed-property/list-entries/null-value",
            "setNullValue");
    digester.addObjectCreate("faces-config/managed-bean/managed-property/list-entries/value",
            ListEntries.Entry.class);
    digester.addSetNext("faces-config/managed-bean/managed-property/list-entries/value", "addEntry");
    digester.addCallMethod("faces-config/managed-bean/managed-property/list-entries/value", "setValue", 0);
    digester.addObjectCreate("faces-config/managed-bean/map-entries", MapEntries.class);
    digester.addSetNext("faces-config/managed-bean/map-entries", "setMapEntries");
    digester.addCallMethod("faces-config/managed-bean/map-entries/key-class", "setKeyClass", 0);
    digester.addCallMethod("faces-config/managed-bean/map-entries/value-class", "setValueClass", 0);
    digester.addObjectCreate("faces-config/managed-bean/map-entries/map-entry", MapEntries.Entry.class);
    digester.addSetNext("faces-config/managed-bean/map-entries/map-entry", "addEntry");
    digester.addCallMethod("faces-config/managed-bean/map-entries/map-entry/key", "setKey", 0);
    digester.addCallMethod("faces-config/managed-bean/map-entries/map-entry/null-value", "setNullValue");
    digester.addCallMethod("faces-config/managed-bean/map-entries/map-entry/value", "setValue", 0);
    digester.addObjectCreate("faces-config/managed-bean/list-entries", ListEntries.class);
    digester.addSetNext("faces-config/managed-bean/list-entries", "setListEntries");
    digester.addCallMethod("faces-config/managed-bean/list-entries/value-class", "setValueClass", 0);
    digester.addObjectCreate("faces-config/managed-bean/list-entries/null-value", ListEntries.Entry.class);
    digester.addSetNext("faces-config/managed-bean/list-entries/null-value", "addEntry");
    digester.addCallMethod("faces-config/managed-bean/list-entries/null-value", "setNullValue");
    digester.addObjectCreate("faces-config/managed-bean/list-entries/value", ListEntries.Entry.class);
    digester.addSetNext("faces-config/managed-bean/list-entries/value", "addEntry");
    digester.addCallMethod("faces-config/managed-bean/list-entries/value", "setValue", 0);

    digester.addObjectCreate("faces-config/navigation-rule", NavigationRule.class);
    digester.addSetNext("faces-config/navigation-rule", "addNavigationRule");
    digester.addCallMethod("faces-config/navigation-rule/from-view-id", "setFromViewId", 0);
    digester.addObjectCreate("faces-config/navigation-rule/navigation-case", NavigationCase.class);
    digester.addSetNext("faces-config/navigation-rule/navigation-case", "addNavigationCase");
    digester.addCallMethod("faces-config/navigation-rule/navigation-case/from-action", "setFromAction", 0);
    digester.addCallMethod("faces-config/navigation-rule/navigation-case/from-outcome", "setFromOutcome", 0);
    digester.addCallMethod("faces-config/navigation-rule/navigation-case/if", "setIf", 0);
    digester.addCallMethod("faces-config/navigation-rule/navigation-case/to-view-id", "setToViewId", 0);
    digester.addObjectCreate("faces-config/navigation-rule/navigation-case/redirect", Redirect.class);
    digester.addSetProperties("faces-config/navigation-rule/navigation-case/redirect", "include-view-params",
            "includeViewParams");
    digester.addSetNext("faces-config/navigation-rule/navigation-case/redirect", "setRedirect");
    digester.addObjectCreate("faces-config/navigation-rule/navigation-case/redirect/view-param",
            ViewParam.class);
    digester.addSetNext("faces-config/navigation-rule/navigation-case/redirect/view-param", "addViewParam");
    digester.addCallMethod("faces-config/navigation-rule/navigation-case/redirect/view-param/name", "setName",
            0);
    digester.addCallMethod("faces-config/navigation-rule/navigation-case/redirect/view-param/value", "setValue",
            0);

    digester.addObjectCreate("faces-config/render-kit", RenderKit.class);
    digester.addSetNext("faces-config/render-kit", "addRenderKit");
    digester.addCallMethod("faces-config/render-kit/render-kit-id", "setId", 0);
    //digester.addCallMethod("faces-config/render-kit/render-kit-class", "setRenderKitClass", 0);
    digester.addCallMethod("faces-config/render-kit/render-kit-class", "addRenderKitClass", 0);
    digester.addObjectCreate("faces-config/render-kit/renderer", Renderer.class);
    digester.addSetNext("faces-config/render-kit/renderer", "addRenderer");
    digester.addCallMethod("faces-config/render-kit/renderer/component-family", "setComponentFamily", 0);
    digester.addCallMethod("faces-config/render-kit/renderer/renderer-type", "setRendererType", 0);
    digester.addCallMethod("faces-config/render-kit/renderer/renderer-class", "setRendererClass", 0);
    digester.addObjectCreate("faces-config/render-kit/client-behavior-renderer", ClientBehaviorRenderer.class);
    digester.addSetNext("faces-config/render-kit/client-behavior-renderer", "addClientBehaviorRenderer");
    digester.addCallMethod("faces-config/render-kit/client-behavior-renderer/client-behavior-renderer-type",
            "setRendererType", 0);
    digester.addCallMethod("faces-config/render-kit/client-behavior-renderer/client-behavior-renderer-class",
            "setRendererClass", 0);

    // 2.0 behavior start
    digester.addObjectCreate("faces-config/behavior", Behavior.class);
    digester.addSetNext("faces-config/behavior", "addBehavior");
    digester.addCallMethod("faces-config/behavior/behavior-id", "setBehaviorId", 0);
    digester.addCallMethod("faces-config/behavior/behavior-class", "setBehaviorClass", 0);
    digester.addObjectCreate("faces-config/behavior/attribute", Attribute.class);
    digester.addSetNext("faces-config/behavior/attribute", "addAttribute");
    digester.addCallMethod("faces-config/behavior/attribute/description", "addDescription", 0);
    digester.addCallMethod("faces-config/behavior/attribute/display-name", "addDisplayName", 0);
    digester.addCallMethod("faces-config/behavior/attribute/icon", "addIcon", 0);
    digester.addCallMethod("faces-config/behavior/attribute/attribute-name", "setAttributeName", 0);
    digester.addCallMethod("faces-config/behavior/attribute/attribute-class", "setAttributeClass", 0);
    digester.addCallMethod("faces-config/behavior/attribute/default-value", "setDefaultValue", 0);
    digester.addCallMethod("faces-config/behavior/attribute/suggested-value", "setSuggestedValue", 0);
    digester.addCallMethod("faces-config/behavior/attribute/attribute-extension", "addAttributeExtension", 0);
    digester.addObjectCreate("faces-config/behavior/property", Property.class);
    digester.addSetNext("faces-config/behavior/property", "addProperty");
    digester.addCallMethod("faces-config/behavior/property/description", "addDescription", 0);
    digester.addCallMethod("faces-config/behavior/property/display-name", "addDisplayName", 0);
    digester.addCallMethod("faces-config/behavior/property/icon", "addIcon", 0);
    digester.addCallMethod("faces-config/behavior/property/property-name", "setPropertyName", 0);
    digester.addCallMethod("faces-config/behavior/property/property-class", "setPropertyClass", 0);
    digester.addCallMethod("faces-config/behavior/property/default-value", "setDefaultValue", 0);
    digester.addCallMethod("faces-config/behavior/property/suggested-value", "setSuggestedValue", 0);
    digester.addCallMethod("faces-config/behavior/property/property-extension", "addPropertyExtension", 0);
    // 2.0 behavior end

    digester.addCallMethod("faces-config/lifecycle/phase-listener", "addLifecyclePhaseListener", 0);

    digester.addCallMethod("faces-config/validator", "addValidator", 2);
    digester.addCallParam("faces-config/validator/validator-id", 0);
    digester.addCallParam("faces-config/validator/validator-class", 1);
}