Author: cbegin
Date: Thu Jun 4 04:53:14 2009
New Revision: 781652
URL: http://svn.apache.org/viewvc?rev=781652&view=rev
Log:
Fixed building of mapper config with minimal (or even no) elements. Fixed
spelling error in BuilderException.java
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BuilderException.java
- copied, changed from r780275,
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BulderException.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MinimalMapperConfig.xml
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/XmlConfigBuilderTest.java
Removed:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BulderException.java
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BaseBuilder.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/MapperBuilderAssistant.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlSourceBuilder.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationBuilder.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementBuilder.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/ExpressionEvaluator.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/ibatis-3-config.dtd
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/XPathParser.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/exceptions/GeneralExceptionsTest.java
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BaseBuilder.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BaseBuilder.java?rev=781652&r1=781651&r2=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BaseBuilder.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BaseBuilder.java
Thu Jun 4 04:53:14 2009
@@ -35,7 +35,7 @@
try {
return JdbcType.valueOf(resolveAlias(alias));
} catch (IllegalArgumentException e) {
- throw new BulderException("Error resolving JdbcType. Cause: " + e, e);
+ throw new BuilderException("Error resolving JdbcType. Cause: " + e, e);
}
}
@@ -44,7 +44,7 @@
try {
return ResultSetType.valueOf(resolveAlias(alias));
} catch (IllegalArgumentException e) {
- throw new BulderException("Error resolving ResultSetType. Cause: " + e,
e);
+ throw new BuilderException("Error resolving ResultSetType. Cause: " + e,
e);
}
}
@@ -53,7 +53,7 @@
try {
return ParameterMode.valueOf(resolveAlias(alias));
} catch (IllegalArgumentException e) {
- throw new BulderException("Error resolving ParameterMode. Cause: " + e,
e);
+ throw new BuilderException("Error resolving ParameterMode. Cause: " + e,
e);
}
}
@@ -62,7 +62,7 @@
try {
return Class.forName(resolveAlias(alias));
} catch (ClassNotFoundException e) {
- throw new BulderException("Error resolving class . Cause: " + e, e);
+ throw new BuilderException("Error resolving class . Cause: " + e, e);
}
}
@@ -72,7 +72,7 @@
Class type = resolveClass(alias);
return type.newInstance();
} catch (Exception e) {
- throw new BulderException("Error instantiating class. Cause: " + e, e);
+ throw new BuilderException("Error instantiating class. Cause: " + e, e);
}
}
@@ -81,7 +81,7 @@
try {
return type.newInstance();
} catch (Exception e) {
- throw new BulderException("Error instantiating class. Cause: " + e, e);
+ throw new BuilderException("Error instantiating class. Cause: " + e, e);
}
}
Copied:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BuilderException.java
(from r780275,
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BulderException.java)
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BuilderException.java?p2=ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BuilderException.java&p1=ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BulderException.java&r1=780275&r2=781652&rev=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BulderException.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/BuilderException.java
Thu Jun 4 04:53:14 2009
@@ -2,21 +2,21 @@
import org.apache.ibatis.exceptions.IbatisException;
-public class BulderException extends IbatisException {
+public class BuilderException extends IbatisException {
- public BulderException() {
+ public BuilderException() {
super();
}
- public BulderException(String message) {
+ public BuilderException(String message) {
super(message);
}
- public BulderException(String message, Throwable cause) {
+ public BuilderException(String message, Throwable cause) {
super(message, cause);
}
- public BulderException(Throwable cause) {
+ public BuilderException(Throwable cause) {
super(cause);
}
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/MapperBuilderAssistant.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/MapperBuilderAssistant.java?rev=781652&r1=781651&r2=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/MapperBuilderAssistant.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/MapperBuilderAssistant.java
Thu Jun 4 04:53:14 2009
@@ -32,7 +32,7 @@
this.currentNamespace = currentNamespace;
}
if (this.currentNamespace == null) {
- throw new BulderException("The mapper element requires a namespace
attribute to be specified.");
+ throw new BuilderException("The mapper element requires a namespace
attribute to be specified.");
}
}
@@ -44,11 +44,11 @@
public Cache useCacheRef(String namespace) {
if (namespace == null) {
- throw new BulderException("cache-ref element requires a namespace
attribute.");
+ throw new BuilderException("cache-ref element requires a namespace
attribute.");
}
Cache cache = configuration.getCache(namespace);
if (cache == null) {
- throw new BulderException("No cache for namespace '" + namespace + "'
could be found.");
+ throw new BuilderException("No cache for namespace '" + namespace + "'
could be found.");
}
currentCache = cache;
return cache;
@@ -318,7 +318,7 @@
}
}
if (javaType == null) {
- throw new BulderException("Could not determine javaType for result
property " + property + " using javaType " + javaType);
+ throw new BuilderException("Could not determine javaType for result
property " + property + " using javaType " + javaType);
}
return javaType;
}
@@ -329,7 +329,7 @@
javaType = metaResultType.getGetterType(property);
}
if (javaType == null) {
- throw new BulderException("Could not determine javaType for result.
Specify property or javaType attribute.");
+ throw new BuilderException("Could not determine javaType for result.
Specify property or javaType attribute.");
}
return javaType;
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlSourceBuilder.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlSourceBuilder.java?rev=781652&r1=781651&r2=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlSourceBuilder.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlSourceBuilder.java
Thu Jun 4 04:53:14 2009
@@ -71,7 +71,7 @@
builder.typeHandler((TypeHandler) resolveInstance(value));
}
} else {
- throw new BulderException("Improper inline parameter map format.
Should be: #{propName,attr1=val1,attr2=val2}");
+ throw new BuilderException("Improper inline parameter map format.
Should be: #{propName,attr1=val1,attr2=val2}");
}
}
return builder.build();
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationBuilder.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationBuilder.java?rev=781652&r1=781651&r2=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationBuilder.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationBuilder.java
Thu Jun 4 04:53:14 2009
@@ -240,7 +240,7 @@
}
return null;
} catch (Exception e) {
- throw new BulderException("Could not find value method on SQL
annotation. Cause: " + e, e);
+ throw new BuilderException("Could not find value method on SQL
annotation. Cause: " + e, e);
}
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java?rev=781652&r1=781651&r2=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java
Thu Jun 4 04:53:14 2009
@@ -28,7 +28,7 @@
}
}
} catch (Exception e) {
- throw new BulderException("Error creating SqlSource for SqlProvider.
Cause: " + e, e);
+ throw new BuilderException("Error creating SqlSource for SqlProvider.
Cause: " + e, e);
}
}
@@ -48,7 +48,7 @@
Class parameterType = parameterObject == null ? Object.class :
parameterObject.getClass();
return sqlSourceParser.parse(sql, parameterType);
} catch (Exception e) {
- throw new BulderException("Error invoking SqlProvider method ("
+ throw new BuilderException("Error invoking SqlProvider method ("
+ providerType.getName() + "." + providerMethod.getName()
+ "). Cause: " + e, e);
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java?rev=781652&r1=781651&r2=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java
Thu Jun 4 04:53:14 2009
@@ -34,12 +34,12 @@
this.configuration.setVariables(props);
this.parsed = false;
this.environment = environment;
- this.parser = new XPathParser(reader,true, new
XMLMapperEntityResolver(),props);
+ this.parser = new XPathParser(reader, true, new XMLMapperEntityResolver(),
props);
}
public Configuration parse() {
if (parsed) {
- throw new BulderException("Each MapperConfigParser can only be used
once.");
+ throw new BuilderException("Each MapperConfigParser can only be used
once.");
}
parsed = true;
parseConfiguration(parser.evalNode("/configuration"));
@@ -57,152 +57,174 @@
typeHandlerElement(root.evalNode("typeHandlers"));
mapperElement(root.evalNode("mappers"));
} catch (Exception e) {
- throw new BulderException("Error parsing SQL Mapper Configuration.
Cause: " + e, e);
+ throw new BuilderException("Error parsing SQL Mapper Configuration.
Cause: " + e, e);
}
}
private void typeAliasesElement(XNode parent) {
- for (XNode child : parent.getChildren()) {
- String alias = child.getStringAttribute("alias");
- String type = child.getStringAttribute("type");
- typeAliasRegistry.registerAlias(alias, type);
+ if (parent != null) {
+ for (XNode child : parent.getChildren()) {
+ String alias = child.getStringAttribute("alias");
+ String type = child.getStringAttribute("type");
+ typeAliasRegistry.registerAlias(alias, type);
+ }
}
}
private void pluginElement(XNode parent) throws Exception {
- for (XNode child : parent.getChildren()) {
- String interceptor = child.getStringAttribute("interceptor");
- Properties properties = child.getChildrenAsProperties();
- Interceptor interceptorInstance = (Interceptor)
resolveClass(interceptor).newInstance();
- interceptorInstance.setProperties(properties);
- configuration.addInterceptor(interceptorInstance);
+ if (parent != null) {
+ for (XNode child : parent.getChildren()) {
+ String interceptor = child.getStringAttribute("interceptor");
+ Properties properties = child.getChildrenAsProperties();
+ Interceptor interceptorInstance = (Interceptor)
resolveClass(interceptor).newInstance();
+ interceptorInstance.setProperties(properties);
+ configuration.addInterceptor(interceptorInstance);
+ }
}
}
private void objectFactoryElement(XNode context) throws Exception {
- String type = context.getStringAttribute("type");
- Properties properties = context.getChildrenAsProperties();
- ObjectFactory factory = (ObjectFactory) resolveClass(type).newInstance();
- factory.setProperties(properties);
- configuration.setObjectFactory(factory);
+ if (context != null) {
+ String type = context.getStringAttribute("type");
+ Properties properties = context.getChildrenAsProperties();
+ ObjectFactory factory = (ObjectFactory) resolveClass(type).newInstance();
+ factory.setProperties(properties);
+ configuration.setObjectFactory(factory);
+ }
}
private void propertiesElement(XNode context) throws Exception {
- Properties defaults = context.getChildrenAsProperties();
- String resource = context.getStringAttribute("resource");
- String url = context.getStringAttribute("url");
- if (resource != null && url != null) {
- throw new BulderException("The properties element cannot specify both a
URL and a resource based property file reference. Please specify one or the
other.");
- }
- if (resource != null) {
- defaults.putAll(Resources.getResourceAsProperties(resource));
- } else if (url != null) {
- defaults.putAll(Resources.getUrlAsProperties(url));
- }
- Properties vars = configuration.getVariables();
- if (vars != null) {
- defaults.putAll(vars);
+ if (context != null) {
+ Properties defaults = context.getChildrenAsProperties();
+ String resource = context.getStringAttribute("resource");
+ String url = context.getStringAttribute("url");
+ if (resource != null && url != null) {
+ throw new BuilderException("The properties element cannot specify both
a URL and a resource based property file reference. Please specify one or the
other.");
+ }
+ if (resource != null) {
+ defaults.putAll(Resources.getResourceAsProperties(resource));
+ } else if (url != null) {
+ defaults.putAll(Resources.getUrlAsProperties(url));
+ }
+ Properties vars = configuration.getVariables();
+ if (vars != null) {
+ defaults.putAll(vars);
+ }
+ parser.setVariables(defaults);
+ configuration.setVariables(defaults);
}
- parser.setVariables(defaults);
- configuration.setVariables(defaults);
}
private void settingsElement(XNode context) throws Exception {
- Properties props = context.getChildrenAsProperties();
- // Check that all settings are known to the configuration class
- for (Map.Entry entry : props.entrySet()) {
- MetaClass metaConfig = MetaClass.forClass(Configuration.class);
- if (!metaConfig.hasSetter((String) entry.getKey())) {
- throw new BulderException("The setting " + entry.getKey() + " is not
known. Make sure you spelled it correctly (case sensitive).");
- }
- }
-
configuration.setCacheEnabled(booleanValueOf(props.getProperty("cacheEnabled"),
true));
-
configuration.setLazyLoadingEnabled(booleanValueOf(props.getProperty("lazyLoadingEnabled"),
true));
-
configuration.setMultipleResultSetsEnabled(booleanValueOf(props.getProperty("multipleResultSetsEnabled"),
true));
-
configuration.setUseColumnLabel(booleanValueOf(props.getProperty("useColumnLabel"),
true));
-
configuration.setEnhancementEnabled(booleanValueOf(props.getProperty("enhancementEnabled"),
false));
-
configuration.setUseGeneratedKeys(booleanValueOf(props.getProperty("useGeneratedKeys"),
false));
-
configuration.setDefaultExecutorType(ExecutorType.valueOf(stringValueOf(props.getProperty("defaultExecutorType"),
"SIMPLE")));
-
configuration.setDefaultStatementTimeout(integerValueOf(props.getProperty("defaultStatementTimeout"),
null));
+ if (context != null) {
+ Properties props = context.getChildrenAsProperties();
+ // Check that all settings are known to the configuration class
+ for (Map.Entry entry : props.entrySet()) {
+ MetaClass metaConfig = MetaClass.forClass(Configuration.class);
+ if (!metaConfig.hasSetter((String) entry.getKey())) {
+ throw new BuilderException("The setting " + entry.getKey() + " is
not known. Make sure you spelled it correctly (case sensitive).");
+ }
+ }
+
configuration.setCacheEnabled(booleanValueOf(props.getProperty("cacheEnabled"),
true));
+
configuration.setLazyLoadingEnabled(booleanValueOf(props.getProperty("lazyLoadingEnabled"),
true));
+
configuration.setMultipleResultSetsEnabled(booleanValueOf(props.getProperty("multipleResultSetsEnabled"),
true));
+
configuration.setUseColumnLabel(booleanValueOf(props.getProperty("useColumnLabel"),
true));
+
configuration.setEnhancementEnabled(booleanValueOf(props.getProperty("enhancementEnabled"),
false));
+
configuration.setUseGeneratedKeys(booleanValueOf(props.getProperty("useGeneratedKeys"),
false));
+
configuration.setDefaultExecutorType(ExecutorType.valueOf(stringValueOf(props.getProperty("defaultExecutorType"),
"SIMPLE")));
+
configuration.setDefaultStatementTimeout(integerValueOf(props.getProperty("defaultStatementTimeout"),
null));
+ }
}
private void environmentsElement(XNode context) throws Exception {
- if (environment == null) {
- environment = context.getStringAttribute("default");
- }
- for (XNode child : context.getChildren()) {
- String id = child.getStringAttribute("id");
- if (isSpecifiedEnvironment(id)) {
- TransactionFactory txFactory =
transactionManagerElement(child.evalNode("transactionManager"));
- DataSourceFactory dsFactory =
dataSourceElement(child.evalNode("dataSource"));
- Environment.Builder environmentBuilder = new Environment.Builder(id,
txFactory, dsFactory.getDataSource());
- configuration.setEnvironment(environmentBuilder.build());
+ if (context != null) {
+ if (environment == null) {
+ environment = context.getStringAttribute("default");
+ }
+ for (XNode child : context.getChildren()) {
+ String id = child.getStringAttribute("id");
+ if (isSpecifiedEnvironment(id)) {
+ TransactionFactory txFactory =
transactionManagerElement(child.evalNode("transactionManager"));
+ DataSourceFactory dsFactory =
dataSourceElement(child.evalNode("dataSource"));
+ Environment.Builder environmentBuilder = new Environment.Builder(id,
txFactory, dsFactory.getDataSource());
+ configuration.setEnvironment(environmentBuilder.build());
+ }
}
}
}
private TransactionFactory transactionManagerElement(XNode context) throws
Exception {
- String type = context.getStringAttribute("type");
- Properties props = context.getChildrenAsProperties();
- TransactionFactory factory = (TransactionFactory)
resolveClass(type).newInstance();
- factory.setProperties(props);
- return factory;
+ if (context != null) {
+ String type = context.getStringAttribute("type");
+ Properties props = context.getChildrenAsProperties();
+ TransactionFactory factory = (TransactionFactory)
resolveClass(type).newInstance();
+ factory.setProperties(props);
+ return factory;
+ }
+ throw new BuilderException("Environment declaration requires a
TransactionFactory.");
}
private DataSourceFactory dataSourceElement(XNode context) throws Exception {
- String type = context.getStringAttribute("type");
- Properties props = context.getChildrenAsProperties();
- DataSourceFactory factory = (DataSourceFactory)
resolveClass(type).newInstance();
- factory.setProperties(props);
- return factory;
+ if (context != null) {
+ String type = context.getStringAttribute("type");
+ Properties props = context.getChildrenAsProperties();
+ DataSourceFactory factory = (DataSourceFactory)
resolveClass(type).newInstance();
+ factory.setProperties(props);
+ return factory;
+ }
+ throw new BuilderException("Environment declaration requires a
DataSourceFactory.");
}
private void typeHandlerElement(XNode parent) throws Exception {
- for (XNode child : parent.getChildren()) {
- String javaType = child.getStringAttribute("javaType");
- String jdbcType = child.getStringAttribute("jdbcType");
- String handler = child.getStringAttribute("handler");
-
- Class javaTypeClass = resolveClass(javaType);
- TypeHandler typeHandlerInstance = (TypeHandler)
resolveClass(handler).newInstance();
-
- if (jdbcType == null) {
- typeHandlerRegistry.register(javaTypeClass, typeHandlerInstance);
- } else {
- typeHandlerRegistry.register(javaTypeClass, resolveJdbcType(jdbcType),
typeHandlerInstance);
+ if (parent != null) {
+ for (XNode child : parent.getChildren()) {
+ String javaType = child.getStringAttribute("javaType");
+ String jdbcType = child.getStringAttribute("jdbcType");
+ String handler = child.getStringAttribute("handler");
+
+ Class javaTypeClass = resolveClass(javaType);
+ TypeHandler typeHandlerInstance = (TypeHandler)
resolveClass(handler).newInstance();
+
+ if (jdbcType == null) {
+ typeHandlerRegistry.register(javaTypeClass, typeHandlerInstance);
+ } else {
+ typeHandlerRegistry.register(javaTypeClass,
resolveJdbcType(jdbcType), typeHandlerInstance);
+ }
}
}
}
private void mapperElement(XNode parent) throws Exception {
- for (XNode child : parent.getChildren()) {
- String resource = child.getStringAttribute("resource");
- String url = child.getStringAttribute("url");
- Reader reader;
- if (resource != null && url == null) {
- ErrorContext.instance().resource(resource);
- reader = Resources.getResourceAsReader(resource);
- XMLMapperBuilder mapperParser = new XMLMapperBuilder(reader,
configuration, resource);
- mapperParser.parse();
- } else if (url != null && resource == null) {
- ErrorContext.instance().resource(url);
- reader = Resources.getUrlAsReader(url);
- XMLMapperBuilder mapperParser = new XMLMapperBuilder(reader,
configuration, url);
- mapperParser.parse();
- } else {
- throw new BulderException("A mapper element may only specify a url or
resource, but not both.");
+ if (parent != null) {
+ for (XNode child : parent.getChildren()) {
+ String resource = child.getStringAttribute("resource");
+ String url = child.getStringAttribute("url");
+ Reader reader;
+ if (resource != null && url == null) {
+ ErrorContext.instance().resource(resource);
+ reader = Resources.getResourceAsReader(resource);
+ XMLMapperBuilder mapperParser = new XMLMapperBuilder(reader,
configuration, resource);
+ mapperParser.parse();
+ } else if (url != null && resource == null) {
+ ErrorContext.instance().resource(url);
+ reader = Resources.getUrlAsReader(url);
+ XMLMapperBuilder mapperParser = new XMLMapperBuilder(reader,
configuration, url);
+ mapperParser.parse();
+ } else {
+ throw new BuilderException("A mapper element may only specify a url
or resource, but not both.");
+ }
}
}
}
private boolean isSpecifiedEnvironment(String id) {
if (environment == null) {
- throw new BulderException("No environment specified.");
+ throw new BuilderException("No environment specified.");
} else if (id == null) {
- throw new BulderException("Environment requires an id attribute.");
+ throw new BuilderException("Environment requires an id attribute.");
} else if (environment.equals(id)) {
return true;
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementBuilder.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementBuilder.java?rev=781652&r1=781651&r2=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementBuilder.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementBuilder.java
Thu Jun 4 04:53:14 2009
@@ -5,7 +5,6 @@
import org.apache.ibatis.executor.keygen.*;
import org.apache.ibatis.mapping.*;
import org.apache.ibatis.parsing.XNode;
-import org.apache.ibatis.cache.Cache;
import org.w3c.dom.*;
import java.util.*;
@@ -75,7 +74,7 @@
} else {
NodeHandler handler = nodeHandlers.get(nodeName);
if (handler == null) {
- throw new BulderException("Unknown element <" + nodeName + "> in SQL
statement.");
+ throw new BuilderException("Unknown element <" + nodeName + "> in
SQL statement.");
}
handler.handleNode(child, contents);
@@ -148,7 +147,7 @@
String nsrefid = sequentialBuilder.applyCurrentNamespace(refid);
includeNode = xmlMapperParser.getSqlFragment(nsrefid);
if (includeNode == null) {
- throw new BulderException("Could not find SQL statement to include
with refid '" + refid + "'");
+ throw new BuilderException("Could not find SQL statement to include
with refid '" + refid + "'");
}
}
MixedSqlNode mixedSqlNode = new MixedSqlNode(contents(includeNode));
@@ -248,7 +247,7 @@
if (defaultSqlNodes.size() == 1) {
defaultSqlNode = defaultSqlNodes.get(0);
} else if (defaultSqlNodes.size() > 1) {
- throw new BulderException("Too many default (otherwise) elements in
choose statement.");
+ throw new BuilderException("Too many default (otherwise) elements in
choose statement.");
}
return defaultSqlNode;
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/ExpressionEvaluator.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/ExpressionEvaluator.java?rev=781652&r1=781651&r2=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/ExpressionEvaluator.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/ExpressionEvaluator.java
Thu Jun 4 04:53:14 2009
@@ -1,6 +1,6 @@
package org.apache.ibatis.builder.xml.dynamic;
-import org.apache.ibatis.builder.BulderException;
+import org.apache.ibatis.builder.BuilderException;
import org.apache.ibatis.ognl.*;
import java.math.BigDecimal;
@@ -15,7 +15,7 @@
if (value instanceof Number) return !new
BigDecimal(String.valueOf(value)).equals(BigDecimal.ZERO);
return value != null;
} catch (OgnlException e) {
- throw new BulderException("Error evaluating expression '"+expression+"'.
Cause: " + e, e);
+ throw new BuilderException("Error evaluating expression
'"+expression+"'. Cause: " + e, e);
}
}
@@ -24,9 +24,9 @@
Object value = Ognl.getValue(expression, parameterObject);
if (value instanceof Iterable) return (Iterable) value;
if (value.getClass().isArray()) return Arrays.asList((Object[])value);
- throw new BulderException("Error evaluating expression '"+expression+"'.
Return value ("+value+") was not iterable.");
+ throw new BuilderException("Error evaluating expression
'"+expression+"'. Return value ("+value+") was not iterable.");
} catch (OgnlException e) {
- throw new BulderException("Error evaluating expression '"+expression+"'.
Cause: " + e, e);
+ throw new BuilderException("Error evaluating expression
'"+expression+"'. Cause: " + e, e);
}
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/ibatis-3-config.dtd
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/ibatis-3-config.dtd?rev=781652&r1=781651&r2=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/ibatis-3-config.dtd
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/ibatis-3-config.dtd
Thu Jun 4 04:53:14 2009
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?,
objectFactory?, plugins?, environments?, mappers)>
+<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?,
objectFactory?, plugins?, environments?, mappers?)>
<!ELEMENT properties (property*)>
<!ATTLIST properties
@@ -14,7 +14,7 @@
value CDATA #REQUIRED
>
-<!ELEMENT settings (setting*)>
+<!ELEMENT settings (setting+)>
<!ELEMENT setting EMPTY>
<!ATTLIST setting
@@ -51,7 +51,7 @@
interceptor CDATA #REQUIRED
>
-<!ELEMENT environments (environment*)>
+<!ELEMENT environments (environment+)>
<!ATTLIST environments
default CDATA #REQUIRED
>
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/XPathParser.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/XPathParser.java?rev=781652&r1=781651&r2=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/XPathParser.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/XPathParser.java
Thu Jun 4 04:53:14 2009
@@ -1,6 +1,6 @@
package org.apache.ibatis.parsing;
-import org.apache.ibatis.builder.BulderException;
+import org.apache.ibatis.builder.BuilderException;
import org.w3c.dom.*;
import org.xml.sax.*;
@@ -95,7 +95,7 @@
try {
return xpath.evaluate(expression, root, returnType);
} catch (Exception e) {
- throw new BulderException("Error evaluating XPath. Cause: " + e, e);
+ throw new BuilderException("Error evaluating XPath. Cause: " + e, e);
}
}
@@ -126,7 +126,7 @@
});
return builder.parse(new InputSource(reader));
} catch (Exception e) {
- throw new BulderException("Error creating document instance. Cause: " +
e, e);
+ throw new BuilderException("Error creating document instance. Cause: "
+ e, e);
}
}
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MinimalMapperConfig.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MinimalMapperConfig.xml?rev=781652&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MinimalMapperConfig.xml
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MinimalMapperConfig.xml
Thu Jun 4 04:53:14 2009
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE configuration
+ PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
+ "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
+
+<configuration>
+
+
+</configuration>
+
+
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/XmlConfigBuilderTest.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/XmlConfigBuilderTest.java?rev=781652&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/XmlConfigBuilderTest.java
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/XmlConfigBuilderTest.java
Thu Jun 4 04:53:14 2009
@@ -0,0 +1,22 @@
+package org.apache.ibatis.builder;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+import org.apache.ibatis.builder.xml.XMLConfigBuilder;
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.mapping.Configuration;
+
+import java.io.Reader;
+
+public class XmlConfigBuilderTest {
+
+ @Test
+ public void shouldSuccessfullyLoadMinimalXMLConfigFile() throws Exception {
+ String resource = "org/apache/ibatis/builder/MinimalMapperConfig.xml";
+ Reader reader = Resources.getResourceAsReader(resource);
+ XMLConfigBuilder builder = new XMLConfigBuilder(reader);
+ Configuration config = builder.parse();
+ assertNotNull(config);
+ }
+
+}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/exceptions/GeneralExceptionsTest.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/exceptions/GeneralExceptionsTest.java?rev=781652&r1=781651&r2=781652&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/exceptions/GeneralExceptionsTest.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/exceptions/GeneralExceptionsTest.java
Thu Jun 4 04:53:14 2009
@@ -1,7 +1,7 @@
package org.apache.ibatis.exceptions;
import org.apache.ibatis.binding.BindingException;
-import org.apache.ibatis.builder.BulderException;
+import org.apache.ibatis.builder.BuilderException;
import org.apache.ibatis.cache.CacheException;
import org.apache.ibatis.datasource.DataSourceException;
import org.apache.ibatis.executor.ExecutorException;
@@ -41,7 +41,7 @@
LogException.class,
MigrationException.class,
ParsingException.class,
- BulderException.class,
+ BuilderException.class,
PluginException.class,
ReflectionException.class,
IbatisException.class,