📄 xmlconfigurationprovider.java
字号:
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 + -