private NetUIConfig parse()

in ti/phase2/jars/core/src/java/org/apache/ti/util/config/parser/NetUIConfigParser.java [146:233]


    private NetUIConfig parse(final String resourcePath, final InputStream is) {
        assert is != null;

        NetUIConfig netuiConfig = null;
        InputStream xsdInputStream = null;

        try {
            /* parse the config document */
            xsdInputStream = SCHEMA_RESOLVER.getInputStream();

            final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
            final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
            final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";

            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) {
                        if (LOGGER.isInfoEnabled()) {
                            LOGGER.info("Validation warning validating config file \"" + resourcePath +
                                        "\" against XML Schema \"" + SCHEMA_RESOLVER.getResourcePath());
                        }
                    }

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

                    public void fatalError(SAXParseException exception) {
                        throw new ConfigInitializationException("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("/struts-ti-config.xsd")) {
                            InputStream inputStream = NetUIConfigParser.class.getClassLoader().getResourceAsStream(CONFIG_SCHEMA);

                            return new InputSource(inputStream);
                        } else {
                            return null;
                        }
                    }
                });

            Document document = db.parse(is);

            PageFlowActionInterceptorsConfig pfActionInterceptorsConfig = parsePfActionInterceptorsConfig(document);
            PageFlowHandlersConfig pfHandlersConfig = parsePfHandlersConfig(document);
            PageFlowConfig pfConfig = parsePfConfig(document);
            PageFlowFactoriesConfig pfFactoriesConfig = parsePfFactoriesConfig(document);
            SharedFlowRefConfig[] sharedFlowRefConfigs = parseSharedFlowRefConfigs(document);
            RequestInterceptorsConfig requestInterceptorsConfig = parseRequestInterceptorsConfig(document);

            JspTagConfig jspTagConfig = parseJspTagConfig(document);
            ExpressionLanguagesConfig elConfig = parseExpressionLanguageConfig(document);
            TypeConverterConfig[] typeConvertersConfig = parseTypeConvertersConfig(document);
            UrlConfig urlConfig = parseUrlConfig(document);
            IteratorFactoryConfig[] iteratorFactories = parseIteratorFactoryConfig(document);
            PrefixHandlerConfig[] prefixHandlers = parsePrefixHandlerConfig(document);

            netuiConfig = new NetUIConfig(pfActionInterceptorsConfig, pfHandlersConfig, pfConfig, pfFactoriesConfig,
                                          sharedFlowRefConfigs, requestInterceptorsConfig, jspTagConfig, prefixHandlers,
                                          elConfig, iteratorFactories, typeConvertersConfig, urlConfig);
        } catch (ParserConfigurationException e) {
            throw new ConfigInitializationException("Error occurred parsing the config file \"" + resourcePath + "\"", e);
        } catch (IOException e) {
            throw new ConfigInitializationException("Error occurred parsing the config file \"" + resourcePath + "\"", e);
        } catch (SAXException e) {
            throw new ConfigInitializationException("Error occurred parsing the config file \"" + resourcePath + "\"", e);
        } finally {
            try {
                if (xsdInputStream != null) {
                    xsdInputStream.close();
                }
            } catch (IOException e) {
            }
        }

        return netuiConfig;
    }