Author: cbegin
Date: Fri Jun 15 20:23:18 2007
New Revision: 547853
URL: http://svn.apache.org/viewvc?view=rev&rev=547853
Log:
Improved type safety of MappedStatementConfig
Modified:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlStatementParser.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/MappedStatementConfig.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlMapConfiguration.java
Modified:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlStatementParser.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlStatementParser.java?view=diff&rev=547853&r1=547852&r2=547853
==============================================================================
---
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlStatementParser.java
(original)
+++
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlStatementParser.java
Fri Jun 15 20:23:18 2007
@@ -1,8 +1,10 @@
package com.ibatis.sqlmap.engine.builder.xml;
import com.ibatis.common.xml.*;
+import com.ibatis.common.resources.*;
import com.ibatis.sqlmap.engine.conifg.*;
import com.ibatis.sqlmap.engine.mapping.statement.*;
+import com.ibatis.sqlmap.client.*;
import org.w3c.dom.CharacterData;
import org.w3c.dom.*;
@@ -45,14 +47,47 @@
}
}
- String[] additionalResultClasses = null;
+ String[] additionalResultClassNames = null;
if (resultClassName != null) {
- additionalResultClasses = state.getAllButFirstToken(resultClassName);
+ additionalResultClassNames = state.getAllButFirstToken(resultClassName);
resultClassName = state.getFirstToken(resultClassName);
}
- MappedStatementConfig statementConf =
state.getConfig().newMappedStatementConfig(id, statement, new
XMLSqlSource(state, node), parameterMapName, parameterClassName, resultMapName,
additionalResultMapNames, resultClassName, additionalResultClasses,
resultSetType, fetchSize, allowRemapping, timeout, cacheModelName,
xmlResultName);
+ Class[] additionalResultClasses = null;
+ if (additionalResultClassNames != null) {
+ additionalResultClasses = new Class[additionalResultClassNames.length];
+ for (int i = 0; i < additionalResultClassNames.length; i++) {
+ additionalResultClasses[i] =
resolveClass(additionalResultClassNames[i]);
+ }
+ }
+
+ state.getConfig().getErrorContext().setMoreInfo("Check the parameter
class.");
+ Class parameterClass = resolveClass(parameterClassName);
+
+ state.getConfig().getErrorContext().setMoreInfo("Check the result class.");
+ Class resultClass = resolveClass(resultClassName);
+
+ Integer timeoutInt = timeout == null ? null : new Integer(timeout);
+ Integer fetchSizeInt = fetchSize == null ? null : new Integer(fetchSize);
+ boolean allowRemappingBool = "true".equals(allowRemapping);
+
+ MappedStatementConfig statementConf =
state.getConfig().newMappedStatementConfig(id, statement,
+ new XMLSqlSource(state, node), parameterMapName, parameterClass,
resultMapName, additionalResultMapNames,
+ resultClass, additionalResultClasses, resultSetType, fetchSizeInt,
allowRemappingBool, timeoutInt, cacheModelName,
+ xmlResultName);
findAndParseSelectKey(node, statementConf);
+ }
+
+ private Class resolveClass(String resultClassName) {
+ try {
+ if (resultClassName != null) {
+ return
Resources.classForName(state.getConfig().getTypeHandlerFactory().resolveAlias(resultClassName));
+ } else {
+ return null;
+ }
+ } catch (ClassNotFoundException e) {
+ throw new SqlMapException("Error. Could not initialize class. Cause: "
+ e, e);
+ }
}
private void findAndParseSelectKey(Node node, MappedStatementConfig config) {
Modified:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/MappedStatementConfig.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/MappedStatementConfig.java?view=diff&rev=547853&r1=547852&r2=547853
==============================================================================
---
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/MappedStatementConfig.java
(original)
+++
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/MappedStatementConfig.java
Fri Jun 15 20:23:18 2007
@@ -23,30 +23,33 @@
private static final InlineParameterMapParser PARAM_PARSER = new
InlineParameterMapParser();
private ErrorContext errorContext;
private ExtendedSqlMapClient client;
- private SqlMapExecutorDelegate delegate;
private TypeHandlerFactory typeHandlerFactory;
private MappedStatement mappedStatement;
private MappedStatement rootStatement;
- MappedStatementConfig(SqlMapConfiguration config, String id,
GeneralStatement statement, SqlSource processor, String parameterMapName,
String parameterClassName, String resultMapName, String[]
additionalResultMapNames, String resultClassName, String[]
additionalResultClasses, String cacheModelName, String resultSetType, String
fetchSize, String allowRemapping, String timeout, Integer
defaultStatementTimeout, String xmlResultName) {
+ MappedStatementConfig(SqlMapConfiguration config, String id,
GeneralStatement statement, SqlSource processor,
+ String parameterMapName, Class parameterClass, String
resultMapName,
+ String[] additionalResultMapNames, Class resultClass,
Class[] additionalResultClasses,
+ String cacheModelName, String resultSetType, Integer
fetchSize, boolean allowRemapping,
+ Integer timeout, Integer defaultStatementTimeout,
String xmlResultName) {
this.errorContext = config.getErrorContext();
this.client = config.getClient();
- this.delegate = client.getDelegate();
+ SqlMapExecutorDelegate delegate = client.getDelegate();
this.typeHandlerFactory = config.getTypeHandlerFactory();
errorContext.setActivity("parsing a mapped statement");
errorContext.setObjectId(id + " statement");
errorContext.setMoreInfo("Check the result map name.");
if (resultMapName != null) {
- statement.setResultMap((BasicResultMap)
client.getDelegate().getResultMap(resultMapName));
+ statement.setResultMap(client.getDelegate().getResultMap(resultMapName));
if (additionalResultMapNames != null) {
for (int i = 0; i < additionalResultMapNames.length; i++) {
- statement.addResultMap((BasicResultMap)
client.getDelegate().getResultMap(additionalResultMapNames[i]));
+
statement.addResultMap(client.getDelegate().getResultMap(additionalResultMapNames[i]));
}
}
}
errorContext.setMoreInfo("Check the parameter map name.");
if (parameterMapName != null) {
- statement.setParameterMap((BasicParameterMap)
client.getDelegate().getParameterMap(parameterMapName));
+
statement.setParameterMap(client.getDelegate().getParameterMap(parameterMapName));
}
statement.setId(id);
statement.setResource(errorContext.getResource());
@@ -60,22 +63,24 @@
}
}
if (fetchSize != null) {
- statement.setFetchSize(new Integer(fetchSize));
+ // TODO statement.setFetchSize(new Integer(fetchSize));
+ statement.setFetchSize(fetchSize);
}
// set parameter class either from attribute or from map (make sure to
match)
ParameterMap parameterMap = statement.getParameterMap();
if (parameterMap == null) {
- try {
- if (parameterClassName != null) {
- errorContext.setMoreInfo("Check the parameter class.");
- parameterClassName =
typeHandlerFactory.resolveAlias(parameterClassName);
- Class parameterClass = Resources.classForName(parameterClassName);
- statement.setParameterClass(parameterClass);
- }
- } catch (ClassNotFoundException e) {
- throw new SqlMapException("Error. Could not set parameter class.
Cause: " + e, e);
- }
+// TODO
+// try {
+// if (parameterClassName != null) {
+// errorContext.setMoreInfo("Check the parameter class.");
+// parameterClassName =
typeHandlerFactory.resolveAlias(parameterClassName);
+// Class parameterClass = Resources.classForName(parameterClassName);
+// }
+// } catch (ClassNotFoundException e) {
+// throw new SqlMapException("Error. Could not set parameter class.
Cause: " + e, e);
+// }
+ statement.setParameterClass(parameterClass);
} else {
statement.setParameterClass(parameterMap.getParameterClass());
}
@@ -87,10 +92,10 @@
// set up either null result map or automatic result mapping
BasicResultMap resultMap = (BasicResultMap) statement.getResultMap();
- if (resultMap == null && resultClassName == null) {
+ if (resultMap == null && resultClass == null) {
statement.setResultMap(null);
} else if (resultMap == null) {
- resultMap = buildAutoResultMap(allowRemapping, statement,
resultClassName, xmlResultName);
+ resultMap = buildAutoResultMap(allowRemapping, statement, resultClass,
xmlResultName);
statement.setResultMap(resultMap);
if (additionalResultClasses != null) {
for (int i = 0; i < additionalResultClasses.length; i++) {
@@ -102,7 +107,7 @@
statement.setTimeout(defaultStatementTimeout);
if (timeout != null) {
try {
- statement.setTimeout(Integer.valueOf(timeout));
+ statement.setTimeout(timeout);
} catch (NumberFormatException e) {
throw new SqlMapException("Specified timeout value for statement " +
statement.getId() + " is not a valid integer");
}
@@ -207,28 +212,16 @@
}
- private BasicResultMap buildAutoResultMap(String allowRemapping,
GeneralStatement statement, String firstResultClass, String xmlResultName) {
+ private BasicResultMap buildAutoResultMap(boolean allowRemapping,
GeneralStatement statement, Class firstResultClass, String xmlResultName) {
BasicResultMap resultMap;
- resultMap = new AutoResultMap(client.getDelegate(),
"true".equals(allowRemapping));
+ resultMap = new AutoResultMap(client.getDelegate(), allowRemapping);
resultMap.setId(statement.getId() + "-AutoResultMap");
- resultMap.setResultClass(resolveClass(firstResultClass));
+ resultMap.setResultClass(firstResultClass);
resultMap.setXmlName(xmlResultName);
resultMap.setResource(statement.getResource());
return resultMap;
}
- private Class resolveClass(String resultClassName) {
- try {
- if (resultClassName != null) {
- errorContext.setMoreInfo("Check the result class.");
- return
Resources.classForName(typeHandlerFactory.resolveAlias(resultClassName));
- } else {
- return null;
- }
- } catch (ClassNotFoundException e) {
- throw new SqlMapException("Error. Could not set result class. Cause: "
+ e, e);
- }
- }
public MappedStatement getMappedStatement() {
return mappedStatement;
Modified:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlMapConfiguration.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlMapConfiguration.java?view=diff&rev=547853&r1=547852&r2=547853
==============================================================================
---
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlMapConfiguration.java
(original)
+++
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlMapConfiguration.java
Fri Jun 15 20:23:18 2007
@@ -141,8 +141,16 @@
return new ResultMapConfig(this, id, resultClass, groupBy, extended,
xmlName);
}
- public MappedStatementConfig newMappedStatementConfig(String id,
GeneralStatement statement, SqlSource processor, String parameterMapName,
String parameterClassName, String resultMapName, String[]
additionalResultMapNames, String resultClassName, String[]
additionalResultClasses, String resultSetType, String fetchSize, String
allowRemapping, String timeout, String cacheModelName, String xmlResultName) {
- return new MappedStatementConfig(this, id, statement, processor,
parameterMapName, parameterClassName, resultMapName, additionalResultMapNames,
resultClassName, additionalResultClasses, cacheModelName, resultSetType,
fetchSize, allowRemapping, timeout, defaultStatementTimeout, xmlResultName);
+ public MappedStatementConfig newMappedStatementConfig(String id,
GeneralStatement statement, SqlSource processor,
+ String
parameterMapName, Class parameterClass,
+ String resultMapName,
String[] additionalResultMapNames,
+ Class resultClass,
Class[] additionalResultClasses,
+ String resultSetType,
Integer fetchSize,
+ boolean
allowRemapping, Integer timeout, String cacheModelName,
+ String xmlResultName) {
+ return new MappedStatementConfig(this, id, statement, processor,
parameterMapName, parameterClass, resultMapName,
+ additionalResultMapNames, resultClass, additionalResultClasses,
cacheModelName, resultSetType, fetchSize,
+ allowRemapping, timeout, defaultStatementTimeout, xmlResultName);
}
public void finalizeSqlMapConfig() {