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() {