⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlconfigurationprovider.java

📁 在Struts2中的jar包xwork的源代码.版本为2.0.7
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                                    String val = resultElement.getChildNodes().item(j).getNodeValue();                                    if (val != null) {                                        paramValue.append(val);                                    }                                }                            }                            String val = paramValue.toString().trim();                            if (val.length() > 0) {                                resultParams.put(paramName, val);                            }                        } else {                            LOG.warn("no default parameter defined for result of type " + config.getName());                        }                    }                }                // create new param map, so that the result param can override the config param                Map params = new LinkedHashMap();                Map configParams = config.getParams();                if (configParams != null) {                    params.putAll(configParams);                }                params.putAll(resultParams);                ResultConfig resultConfig = new ResultConfig(resultName, resultClass, params);                resultConfig.setLocation(DomHelper.getLocationObject(element));                results.put(resultConfig.getName(), resultConfig);            }        }        return results;    }    /**     * Build a map of ResultConfig objects from below a given XML element.     */    protected List buildExceptionMappings(Element element, PackageConfig packageContext) {        NodeList exceptionMappingEls = element.getElementsByTagName("exception-mapping");        List exceptionMappings = new ArrayList();        for (int i = 0; i < exceptionMappingEls.getLength(); i++) {            Element ehElement = (Element) exceptionMappingEls.item(i);            if (ehElement.getParentNode().equals(element) || ehElement.getParentNode().getNodeName().equals(element.getNodeName())) {                String emName = ehElement.getAttribute("name");                String exceptionClassName = ehElement.getAttribute("exception");                String exceptionResult = ehElement.getAttribute("result");                Map params = XmlHelper.getParams(ehElement);                if (!TextUtils.stringSet(emName)) {                    emName = exceptionResult;                }                ExceptionMappingConfig ehConfig = new ExceptionMappingConfig(emName, exceptionClassName, exceptionResult, params);                ehConfig.setLocation(DomHelper.getLocationObject(ehElement));                exceptionMappings.add(ehConfig);            }        }        return exceptionMappings;    }    protected void loadDefaultInterceptorRef(PackageConfig packageContext, Element element) {        NodeList resultTypeList = element.getElementsByTagName("default-interceptor-ref");        if (resultTypeList.getLength() > 0) {            Element defaultRefElement = (Element) resultTypeList.item(0);            packageContext.setDefaultInterceptorRef(defaultRefElement.getAttribute("name"));        }    }    protected void loadDefaultActionRef(PackageConfig packageContext, Element element) {        NodeList resultTypeList = element.getElementsByTagName("default-action-ref");        if (resultTypeList.getLength() > 0) {            Element defaultRefElement = (Element) resultTypeList.item(0);            packageContext.setDefaultActionRef(defaultRefElement.getAttribute("name"));        }    }    /**     * Load all of the global results for this package from the XML element.     */    protected void loadGlobalResults(PackageConfig packageContext, Element packageElement) {        NodeList globalResultList = packageElement.getElementsByTagName("global-results");        if (globalResultList.getLength() > 0) {            Element globalResultElement = (Element) globalResultList.item(0);            Map results = buildResults(globalResultElement, packageContext);            packageContext.addGlobalResultConfigs(results);        }    }    protected void loadDefaultClassRef(PackageConfig packageContext, Element element) {        NodeList defaultClassRefList = element.getElementsByTagName("default-class-ref");        if (defaultClassRefList.getLength() > 0) {            Element defaultClassRefElement = (Element) defaultClassRefList.item(0);            packageContext.setDefaultClassRef(defaultClassRefElement.getAttribute("class"));        }    }    /**     * Load all of the global results for this package from the XML element.     */    protected void loadGobalExceptionMappings(PackageConfig packageContext, Element packageElement) {        NodeList globalExceptionMappingList = packageElement.getElementsByTagName("global-exception-mappings");        if (globalExceptionMappingList.getLength() > 0) {            Element globalExceptionMappingElement = (Element) globalExceptionMappingList.item(0);            List exceptionMappings = buildExceptionMappings(globalExceptionMappingElement, packageContext);            packageContext.addGlobalExceptionMappingConfigs(exceptionMappings);        }    }    //    protected void loadIncludes(Element rootElement, DocumentBuilder db) throws Exception {    //        NodeList includeList = rootElement.getElementsByTagName("include");    //    //        for (int i = 0; i < includeList.getLength(); i++) {    //            Element includeElement = (Element) includeList.item(i);    //            String fileName = includeElement.getAttribute("file");    //            includedFileNames.add(fileName);    //            loadConfigurationFile(fileName, db);    //        }    //    }    protected InterceptorStackConfig loadInterceptorStack(Element element, PackageConfig context) throws ConfigurationException {        String name = element.getAttribute("name");        InterceptorStackConfig config = new InterceptorStackConfig(name);        config.setLocation(DomHelper.getLocationObject(element));        NodeList interceptorRefList = element.getElementsByTagName("interceptor-ref");        for (int j = 0; j < interceptorRefList.getLength(); j++) {            Element interceptorRefElement = (Element) interceptorRefList.item(j);            List interceptors = lookupInterceptorReference(context, interceptorRefElement);            config.addInterceptors(interceptors);        }        return config;    }    protected void loadInterceptorStacks(Element element, PackageConfig context) throws ConfigurationException {        NodeList interceptorStackList = element.getElementsByTagName("interceptor-stack");        for (int i = 0; i < interceptorStackList.getLength(); i++) {            Element interceptorStackElement = (Element) interceptorStackList.item(i);            InterceptorStackConfig config = loadInterceptorStack(interceptorStackElement, context);            context.addInterceptorStackConfig(config);        }    }    protected void loadInterceptors(PackageConfig context, Element element) throws ConfigurationException {        NodeList interceptorList = element.getElementsByTagName("interceptor");        for (int i = 0; i < interceptorList.getLength(); i++) {            Element interceptorElement = (Element) interceptorList.item(i);            String name = interceptorElement.getAttribute("name");            String className = interceptorElement.getAttribute("class");            Map params = XmlHelper.getParams(interceptorElement);            InterceptorConfig config = new InterceptorConfig(name, className, params);            config.setLocation(DomHelper.getLocationObject(interceptorElement));            context.addInterceptorConfig(config);        }        loadInterceptorStacks(element, context);    }    //    protected void loadPackages(Element rootElement) throws ConfigurationException {    //        NodeList packageList = rootElement.getElementsByTagName("package");    //    //        for (int i = 0; i < packageList.getLength(); i++) {    //            Element packageElement = (Element) packageList.item(i);    //            addPackage(packageElement);    //        }    //    }    private List loadConfigurationFiles(String fileName, Element includeElement) {        List<Document> docs = new ArrayList<Document>();        if (!includedFileNames.contains(fileName)) {            if (LOG.isDebugEnabled()) {                LOG.debug("Loading action configurations from: " + fileName);            }            includedFileNames.add(fileName);            Iterator<URL> urls = null;            Document doc = null;            InputStream is = null;            IOException ioException = null;            try {                urls = getConfigurationUrls(fileName);            } catch (IOException ex) {                ioException = ex;            }            if (urls == null || !urls.hasNext()) {                if (errorIfMissing) {                    throw new ConfigurationException("Could not open files of the name " + fileName, ioException);                } else {                    if (LOG.isDebugEnabled()) {                        LOG.debug("Unable to locate configuration files of the name "                                + fileName + ", skipping");                    }                    return docs;                }            }            URL url = null;            while (urls.hasNext()) {                try {                    url = urls.next();                    is = FileManager.loadFile(url);                    InputSource in = new InputSource(is);                    in.setSystemId(url.toString());                    doc = DomHelper.parse(in, dtdMappings);                } catch (XWorkException e) {                    if (includeElement != null) {                        throw new ConfigurationException(e, includeElement);                    } else {                        throw new ConfigurationException(e);                    }                } catch (Exception e) {                    final String s = "Caught exception while loading file " + fileName;                    throw new ConfigurationException(s, e, includeElement);                } finally {                    if (is != null) {                        try {                            is.close();                        } catch (IOException e) {                            LOG.error("Unable to close input stream", e);                        }                    }                }                Element rootElement = doc.getDocumentElement();                NodeList children = rootElement.getChildNodes();                int childSize = children.getLength();                for (int i = 0; i < childSize; i++) {                    Node childNode = children.item(i);                    if (childNode instanceof Element) {                        Element child = (Element) childNode;                        final String nodeName = child.getNodeName();                        if (nodeName.equals("include")) {                            String includeFileName = child.getAttribute("file");                            docs.addAll(loadConfigurationFiles(includeFileName, child));                        }                    }                }                docs.add(doc);                loadedFileUrls.add(url.toString());            }            if (LOG.isDebugEnabled()) {                LOG.debug("Loaded action configuration from: " + fileName);            }        }        return docs;    }    protected Iterator<URL> getConfigurationUrls(String fileName) throws IOException {        return ClassLoaderUtil.getResources(fileName, XmlConfigurationProvider.class, false);    }    /**     * Allows subclasses to load extra information from the document     *     * @param doc The configuration document     */    protected void loadExtraConfiguration(Document doc) {        // no op    }    /**     * Looks up the Interceptor Class from the interceptor-ref name and creates an instance, which is added to the     * provided List, or, if this is a ref to a stack, it adds the Interceptor instances from the List to this stack.     *     * @param interceptorRefElement Element to pull interceptor ref data from     * @param context               The PackageConfig to lookup the interceptor from     * @return A list of Interceptor objects     */    private List lookupInterceptorReference(PackageConfig context, Element interceptorRefElement) throws ConfigurationException {        String refName = interceptorRefElement.getAttribute("name");        Map refParams = XmlHelper.getParams(interceptorRefElement);        Location loc = LocationUtils.getLocation(interceptorRefElement);        return InterceptorBuilder.constructInterceptorReference(context, refName, refParams, loc, objectFactory);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -