/*
* Copyright 2002-2006,2009 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.opensymphony.xwork2.config.providers;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.XWorkException;
import com.opensymphony.xwork2.config.Configuration;
import com.opensymphony.xwork2.config.ConfigurationException;
import com.opensymphony.xwork2.config.ConfigurationProvider;
import com.opensymphony.xwork2.config.ConfigurationUtil;
import com.opensymphony.xwork2.config.entities.*;
import com.opensymphony.xwork2.config.entities.UnknownHandlerConfig;
import com.opensymphony.xwork2.config.impl.LocatableFactory;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.inject.ContainerBuilder;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.inject.Scope;
import com.opensymphony.xwork2.util.*;
import com.opensymphony.xwork2.util.location.LocatableProperties;
import com.opensymphony.xwork2.util.location.Location;
import com.opensymphony.xwork2.util.location.LocationUtils;
import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.apache.commons.lang.StringUtils;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Modifier;
import java.net.URL;
import java.util.*;
/**
* Looks in the classpath for an XML file, "xwork.xml" by default,
* and uses it for the XWork configuration.
*
* @author tmjee
* @author Rainer Hermanns
* @author Neo
* @version $Revision: 1133947 $
*/
public class XmlConfigurationProvider implements ConfigurationProvider {
private static final Logger LOG = LoggerFactory.getLogger(XmlConfigurationProvider.class);
private List<Document> documents;
private Set<String> includedFileNames;
private String configFileName;
private ObjectFactory objectFactory;
private Set<String> loadedFileUrls = new HashSet<String>();
private boolean errorIfMissing;
private Map<String, String> dtdMappings;
private Configuration configuration;
private boolean throwExceptionOnDuplicateBeans = true;
public XmlConfigurationProvider() {
this("xwork.xml", true);
}
public XmlConfigurationProvider(String filename) {
this(filename, true);
}
public XmlConfigurationProvider(String filename, boolean errorIfMissing) {
this.configFileName = filename;
this.errorIfMissing = errorIfMissing;
Map<String, String> mappings = new HashMap<String, String>();
mappings.put("-//Apache Struts//XWork 2.3//EN", "xwork-2.3.dtd");
mappings.put("-//Apache Struts//XWork 2.1.3//EN", "xwork-2.1.3.dtd");
mappings.put("-//Apache Struts//XWork 2.1//EN", "xwork-2.1.dtd");
mappings.put("-//Apache Struts//XWork 2.0//EN", "xwork-2.0.dtd");
mappings.put("-//Apache Struts//XWork 1.1.1//EN", "xwork-1.1.1.dtd");
mappings.put("-//Apache Struts//XWork 1.1//EN", "xwork-1.1.dtd");
mappings.put("-//Apache Struts//XWork 1.0//EN", "xwork-1.0.dtd");
setDtdMappings(mappings);
}
public void setThrowExceptionOnDuplicateBeans(boolean val) {
this.throwExceptionOnDuplicateBeans = val;
}
public void setDtdMappings(Map<String, String> mappings) {
this.dtdMappings = Collections.unmodifiableMap(mappings);
}
@Inject
public void setObjectFactory(ObjectFactory objectFactory) {
this.objectFactory = objectFactory;
}
/**
* Returns an unmodifiable map of DTD mappings
*/
public Map<String, String> getDtdMappings() {
return dtdMappings;
}
public void init(Configuration configuration) {
this.configuration = configuration;
this.includedFileNames = configuration.getLoadedFileNames();
loadDocuments(configFileName);
}
public void destroy() {
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof XmlConfigurationProvider)) {
return false;
}
final XmlConfigurationProvider xmlConfigurationProvider = (XmlConfigurationProvider) o;
if ((configFileName != null) ? (!configFileName.equals(xmlConfigurationProvider.configFileName)) : (xmlConfigurationProvider.configFileName != null)) {
return false;
}
return true;
}
@Override
public int hashCode() {
return ((configFileName != null) ? configFileName.hashCode() : 0);
}
private void loadDocuments(String configFileName) {
try {
loadedFileUrls.clear();
documents = loadConfigurationFiles(configFileName, null);
} catch (ConfigurationException e) {
throw e;
} catch (Exception e) {
throw new ConfigurationException("Error loading configuration file " + configFileName, e);
}
}
public void register(ContainerBuilder containerBuilder, LocatableProperties props) throws ConfigurationException {
if (LOG.isInfoEnabled()) {
LOG.info("Parsing configuration file [" + configFileName + "]");
}
Map<String, Node> loadedBeans = new HashMap<String, Node>();
for (Document doc : documents) {
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 ("bean".equals(nodeName)) {
String type = child.getAttribute("type");
String name = child.getAttribute("name");
String impl = child.getAttribute("class");
String onlyStatic = child.getAttribute("static");
String scopeStr = child.getAttribute("scope");
boolean optional = "true".equals(child.getAttribute("optional"));
Scope scope = Scope.SINGLETON;
if ("default".equals(scopeStr)) {
scope = Scope.DEFAULT;
} else if ("request".equals(scopeStr)) {
scope = Scope.REQUEST;
} else if ("session".equals(scopeStr)) {
scope = Scope.SESSION;
} else if ("singleton".equals(scopeStr)) {
scope = Scope.SINGLETON;
} else if ("thread".equals(scopeStr)) {
scope = Scope.THREAD;
}
if (StringUtils.isEmpty(name)) {
name = Container.DEFAULT_NAME;
}
try {
Class cimpl = ClassLoaderUtil.loadClass(impl, getClass());
Class ctype = cimpl;
if (StringUtils.isNotEmpty(type)) {
没有合适的资源?快使用搜索试试~ 我知道了~
xwork-core-source-2.3.1.2源码
共679个文件
java:511个
xml:93个
properties:35个
5星 · 超过95%的资源 需积分: 10 62 下载量 10 浏览量
2012-07-14
18:12:51
上传
评论 1
收藏 843KB RAR 举报
温馨提示
xwork-core-source-2.3.1.2\src\main\java下面是源码,研究struts-2.3.1.2源码必备
资源推荐
资源详情
资源评论
收起资源包目录
xwork-core-source-2.3.1.2源码 (679个子文件)
xwork-2.3.dtd 3KB
xwork-2.1.3.dtd 3KB
xwork-2.1.dtd 3KB
xwork-2.0.dtd 2KB
xwork-1.1.2.dtd 2KB
xwork-1.1.1.dtd 2KB
xwork-1.1.dtd 2KB
xwork-1.0.dtd 2KB
xwork-validator-1.0.3.dtd 778B
xwork-validator-1.0.2.dtd 774B
xwork-validator-1.0.dtd 693B
xwork-validator-definition-1.0.dtd 418B
xwork-validator-config-1.0.dtd 400B
xwork-1.0.dtd 19B
package.html 555B
overview.html 140B
package.html 87B
package.html 62B
package.html 51B
package.html 50B
package.html 48B
package.html 48B
package.html 46B
package.html 45B
package.html 43B
package.html 42B
package.html 42B
package.html 42B
package.html 41B
package.html 40B
package.html 38B
package.html 36B
package.html 34B
package.html 33B
package.html 33B
xwork - jar.jar 2KB
xwork-jar.jar 2KB
XmlConfigurationProvider.java 44KB
ResourceFinder.java 43KB
XWorkConverterTest.java 38KB
XWorkConverter.java 37KB
LocalizedTextUtil.java 35KB
ClassFinder.java 32KB
AnnotationValidationConfigurationBuilder.java 31KB
OgnlValueStackTest.java 31KB
ParametersInterceptorTest.java 24KB
XWorkBasicConverter.java 23KB
OgnlUtilTest.java 23KB
PackageConfig.java 21KB
AnnotationXWorkConverterTest.java 21KB
ContainerImpl.java 20KB
DefaultConfiguration.java 20KB
Validator.java 20KB
PropertiesReader.java 19KB
DefaultActionInvocation.java 18KB
ResolverUtil.java 18KB
OgnlUtil.java 17KB
ParametersInterceptor.java 17KB
AnnotationActionValidatorManager.java 17KB
ReferenceMap.java 17KB
OgnlValueStack.java 16KB
AnnotationActionValidatorManagerTest.java 16KB
DefaultActionValidatorManager.java 16KB
ContainerBuilder.java 16KB
SpringObjectFactoryTest.java 15KB
WildcardHelper.java 15KB
UtilTimerStack.java 15KB
DefaultActionValidatorManagerTest.java 15KB
DefaultObjectTypeDeterminer.java 14KB
ActionSupportTest.java 14KB
InterceptorBuilderTest.java 13KB
LocationAttributes.java 13KB
DefaultTypeConverter.java 13KB
TextProviderSupport.java 13KB
DomHelper.java 13KB
ConfigurationTest.java 12KB
SetPropertiesTest.java 12KB
ActionConfig.java 12KB
ExceptionMappingInterceptorTest.java 12KB
LocationUtils.java 12KB
LocalizedTextUtilTest.java 11KB
ExceptionMappingInterceptor.java 11KB
XmlConfigurationProviderInterceptorsTest.java 11KB
DefaultValidatorFileParserTest.java 11KB
ActionContext.java 11KB
CompoundRootAccessor.java 11KB
ObjectFactory.java 11KB
SpringObjectFactory.java 11KB
DefaultValidatorFileParser.java 11KB
XWorkBasicConverterTest.java 11KB
FileManager.java 11KB
ValidatorFactory.java 11KB
TextParseUtil.java 10KB
ConfigurationManager.java 10KB
ValidationInterceptor.java 10KB
ActionChainResult.java 10KB
ActionValidatorManagerTest.java 10KB
XWorkCollectionPropertyAccessor.java 10KB
PrefixMethodInvocationUtilTest.java 10KB
DelegatingValidatorContext.java 10KB
共 679 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
meilong_whpu
- 粉丝: 94
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页