You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2007/06/16 05:23:19 UTC
svn commit: r547853 - in
/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine:
builder/xml/SqlStatementParser.java conifg/MappedStatementConfig.java
conifg/SqlMapConfiguration.java
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() {