/*
* Copyright (c) 2002-2006 by OpenSymphony
* All rights reserved.
*/
package com.opensymphony.xwork2.config.providers;
import java.io.IOException;
import java.io.InputStream;
import java.io.File;
import java.lang.reflect.Modifier;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
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 com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
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.ActionConfig;
import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
import com.opensymphony.xwork2.config.entities.InterceptorConfig;
import com.opensymphony.xwork2.config.entities.InterceptorStackConfig;
import com.opensymphony.xwork2.config.entities.PackageConfig;
import com.opensymphony.xwork2.config.entities.ResultConfig;
import com.opensymphony.xwork2.config.entities.ResultTypeConfig;
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.ClassLoaderUtil;
import com.opensymphony.xwork2.util.ClassPathFinder;
import com.opensymphony.xwork2.util.DomHelper;
import com.opensymphony.xwork2.util.FileManager;
import com.opensymphony.xwork2.util.TextUtils;
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;
/**
* 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: 1756 $
*/
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("-//OpenSymphony Group//XWork 2.0//EN", "xwork-2.0.dtd");
mappings.put("-//OpenSymphony Group//XWork 1.1.1//EN", "xwork-1.1.1.dtd");
mappings.put("-//OpenSymphony Group//XWork 1.1//EN", "xwork-1.1.dtd");
mappings.put("-//OpenSymphony Group//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() {
}
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;
}
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 {
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 (nodeName.equals("bean")) {
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 (!TextUtils.stringSet(name)) {
name = Container.DEFAULT_NAME;
}
try {
Class cimpl = ClassLoaderUtil.loadClass(impl, getClass());
Class ctype = cimpl;
if (T
没有合适的资源?快使用搜索试试~ 我知道了~
Xwork完整源代码
共315个文件
java:280个
html:21个
dtd:9个
需积分: 9 117 下载量 59 浏览量
2008-08-22
20:24:22
上传
评论
收藏 763KB RAR 举报
温馨提示
Xwork的完整源代码,有需要的朋友可以下载!
资源详情
资源评论
资源推荐
收起资源包目录
Xwork完整源代码 (315个子文件)
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.2.dtd 784B
xwork-validator-1.0.dtd 703B
xwork-validator-definition-1.0.dtd 446B
xwork-validator-config-1.0.dtd 409B
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
XworkSource.jar 420KB
XmlConfigurationProvider.java 45KB
XWorkConverter.java 34KB
LocalizedTextUtil.java 31KB
AnnotationValidationConfigurationBuilder.java 31KB
PackageConfig.java 21KB
XWorkBasicConverter.java 20KB
ContainerImpl.java 19KB
PropertiesReader.java 19KB
DefaultConfiguration.java 19KB
ResolverUtil.java 17KB
ReferenceMap.java 17KB
Validator.java 17KB
DefaultActionInvocation.java 16KB
ContainerBuilder.java 16KB
OgnlUtil.java 16KB
OgnlValueStack.java 16KB
WildcardHelper.java 15KB
UtilTimerStack.java 15KB
ParametersInterceptor.java 14KB
DefaultObjectTypeDeterminer.java 14KB
DefaultActionValidatorManager.java 14KB
AnnotationActionValidatorManager.java 14KB
LocationAttributes.java 13KB
DefaultTypeConverter.java 13KB
DomHelper.java 13KB
TextProviderSupport.java 12KB
LocationUtils.java 11KB
ExceptionMappingInterceptor.java 11KB
ActionConfig.java 11KB
ValidatorFactory.java 10KB
ActionContext.java 10KB
CompoundRootAccessor.java 10KB
ConfigurationManager.java 10KB
ActionChainResult.java 10KB
ObjectFactory.java 9KB
ValidationInterceptor.java 9KB
XWorkCollectionPropertyAccessor.java 9KB
DelegatingValidatorContext.java 9KB
SpringObjectFactory.java 9KB
TextParseUtil.java 8KB
AbstractMatcher.java 8KB
TimerInterceptor.java 8KB
ParameterFilterInterceptor.java 7KB
ClassLoaderUtil.java 7KB
DefaultValidatorFileParser.java 7KB
XWorkList.java 7KB
ActionSupport.java 7KB
VisitorFieldValidator.java 7KB
TextUtils.java 7KB
AnnotationUtils.java 7KB
Validations.java 7KB
TextProvider.java 7KB
AnnotationWorkflowInterceptor.java 7KB
ActionConfigMatcher.java 6KB
LocationImpl.java 6KB
XWorkConfigurationProvider.java 6KB
XWorkListPropertyAccessor.java 6KB
RepopulateConversionErrorFieldValidatorSupport.java 6KB
DefaultActionProxy.java 6KB
Scope.java 6KB
ObjectProfiler.java 6KB
PrefixMethodInvocationUtil.java 6KB
ReferenceCache.java 6KB
I18nInterceptor.java 6KB
ConditionalVisitorFieldValidator.java 6KB
XWorkMapPropertyAccessor.java 6KB
InterceptorBuilder.java 6KB
ActionInvocation.java 5KB
ReflectionProvider.java 5KB
共 315 条
- 1
- 2
- 3
- 4
zxhbjz5
- 粉丝: 18
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0