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 2009/07/01 17:10:25 UTC

svn commit: r790209 - in /ibatis/trunk/java/ibatis-3: ./ ibatis-3-core/src/main/java/org/apache/ibatis/binding/ ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/ ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/

Author: cbegin
Date: Wed Jul  1 15:10:25 2009
New Revision: 790209

URL: http://svn.apache.org/viewvc?rev=790209&view=rev
Log:
applied Jeff's fix to support arbitrary method names for all types of statements.

Added:
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/Count.xml
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CountMapper.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CountTest.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CreateDB.sql
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/MapperConfig.xml
Modified:
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationBuilder.java
    ibatis/trunk/java/ibatis-3/version.properties

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java?rev=790209&r1=790208&r2=790209&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java Wed Jul  1 15:10:25 2009
@@ -76,17 +76,10 @@
   }
 
   private void determineCommandType() {
-    String methodName = method.getName();
-    if (methodName.startsWith("insert") || methodName.startsWith("create")) {
-      type = SqlCommandType.INSERT;
-    } else if (methodName.startsWith("update") || methodName.startsWith("save")) {
-      type = SqlCommandType.UPDATE;
-    } else if (methodName.startsWith("delete") || methodName.startsWith("remove")) {
-      type = SqlCommandType.DELETE;
-    } else if (methodName.startsWith("select") || methodName.startsWith("find")) {
-      type = SqlCommandType.SELECT;
-    } else {
-      throw new BindingException("Unkown execution method for: " + commandName);
+    MappedStatement ms = config.getMappedStatement(commandName);
+    type = ms.getSqlCommandType();
+    if (type == SqlCommandType.UNKNOWN) {
+      throw new BindingException("Unknown execution method for: " + commandName);
     }
   }
 

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=790209&r1=790208&r2=790209&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 Wed Jul  1 15:10:25 2009
@@ -245,9 +245,19 @@
   }
 
   private SqlCommandType getSqlCommandType(Method method) {
-    Class[] types = {Select.class, Insert.class, Update.class, Delete.class};
+    Class[] types = {Select.class, Insert.class, Update.class, Delete.class,
+            SelectProvider.class, InsertProvider.class, UpdateProvider.class, DeleteProvider.class};
     Class type = chooseAnnotationType(method, types);
     if (type != null) {
+      if (type == SelectProvider.class) {
+        type = Select.class;
+      } else if (type == InsertProvider.class) {
+        type = Insert.class;
+      } else if (type == UpdateProvider.class) {
+          type = Update.class;
+      } else if (type == DeleteProvider.class) {
+          type = Delete.class;
+      }
       return SqlCommandType.valueOf(type.getSimpleName().toUpperCase());
     }
     return SqlCommandType.UNKNOWN;

Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/Count.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/Count.xml?rev=790209&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/Count.xml (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/Count.xml Wed Jul  1 15:10:25 2009
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
+<mapper namespace="org.apache.ibatis.submitted.count.CountMapper">
+  <select id="count" resultType="int">
+    select count(*)
+    from names
+  </select>
+</mapper>

Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CountMapper.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CountMapper.java?rev=790209&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CountMapper.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CountMapper.java Wed Jul  1 15:10:25 2009
@@ -0,0 +1,5 @@
+package org.apache.ibatis.submitted.count;
+
+public interface CountMapper {
+    int count();
+}

Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CountTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CountTest.java?rev=790209&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CountTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CountTest.java Wed Jul  1 15:10:25 2009
@@ -0,0 +1,61 @@
+package org.apache.ibatis.submitted.count;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.jdbc.ScriptRunner;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class CountTest {
+
+    protected static SqlSessionFactory sqlSessionFactory;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        Connection conn = null;
+
+        try {
+            Class.forName("org.hsqldb.jdbcDriver");
+            conn = DriverManager.getConnection("jdbc:hsqldb:mem:gname", "sa",
+                    "");
+
+            Reader reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/count/CreateDB.sql");
+
+            ScriptRunner runner = new ScriptRunner(conn);
+            runner.setLogWriter(null);
+            runner.setErrorLogWriter(new PrintWriter(System.err));
+            runner.runScript(reader);
+            conn.commit();
+            reader.close();
+
+            reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/count/MapperConfig.xml");
+            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
+            reader.close();
+        } finally {
+            if (conn != null) {
+                conn.close();
+            }
+        }
+    }
+
+    @Test
+    public void testCount() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        try {
+            CountMapper mapper = sqlSession.getMapper(CountMapper.class);
+            int answer = mapper.count();
+            assertEquals(6, answer);
+        } finally {
+            sqlSession.close();
+        }
+    }
+}

Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CreateDB.sql
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CreateDB.sql?rev=790209&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CreateDB.sql (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/CreateDB.sql Wed Jul  1 15:10:25 2009
@@ -0,0 +1,12 @@
+create table names (
+  id int,
+  firstName varchar(20),
+  lastName varchar(20)
+);
+
+insert into names (id, firstName, lastName) values(1, 'Fred', 'Flintstone');
+insert into names (id, firstName, lastName) values(2, 'Wilma', 'Flintstone');
+insert into names (id, firstName, lastName) values(3, 'Pebbles', 'Flintstone');
+insert into names (id, firstName, lastName) values(4, 'Barney', 'Rubble');
+insert into names (id, firstName, lastName) values(5, 'Betty', 'Rubble');
+insert into names (id, firstName, lastName) values(6, 'Bamm Bamm', 'Rubble');

Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/MapperConfig.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/MapperConfig.xml?rev=790209&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/MapperConfig.xml (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/count/MapperConfig.xml Wed Jul  1 15:10:25 2009
@@ -0,0 +1,25 @@
+<?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>
+
+  <environments default="development">
+    <environment id="development">
+      <transactionManager type="JDBC">
+        <property name="" value=""/>
+      </transactionManager>
+      <dataSource type="UNPOOLED">
+        <property name="driver" value="org.hsqldb.jdbcDriver"/>
+        <property name="url" value="jdbc:hsqldb:mem:gname"/>
+        <property name="username" value="sa"/>
+      </dataSource>
+    </environment>
+  </environments>
+
+  <mappers>
+    <mapper resource="org/apache/ibatis/submitted/count/Count.xml" />
+  </mappers>
+
+</configuration>

Modified: ibatis/trunk/java/ibatis-3/version.properties
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/version.properties?rev=790209&r1=790208&r2=790209&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/version.properties (original)
+++ ibatis/trunk/java/ibatis-3/version.properties Wed Jul  1 15:10:25 2009
@@ -1,5 +1,5 @@
 #Build version info
-#Mon Jun 29 22:43:53 MDT 2009
+#Wed Jul 01 00:03:12 MDT 2009
 version=3.0.0
-buildDate=2009/06/29 22\:43
-buildNum=183
+buildDate=2009/07/01 00\:03
+buildNum=185