Author: cbegin
Date: Sun May 10 05:01:03 2009
New Revision: 773305

URL: http://svn.apache.org/viewvc?rev=773305&view=rev
Log:
Completed Dynamic SQL XML Tests.

Modified:
    ibatis/trunk/java/ibatis-3/TODO
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicSqlSource.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/BaseJdbcLogger.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/PropertyParser.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/PostMapper.xml
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parsing/XPathParserTest.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
    ibatis/trunk/java/ibatis-3/version.properties

Modified: ibatis/trunk/java/ibatis-3/TODO
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/TODO?rev=773305&r1=773304&r2=773305&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/TODO (original)
+++ ibatis/trunk/java/ibatis-3/TODO Sun May 10 05:01:03 2009
@@ -12,3 +12,4 @@
 * Auto result/param types detected for bound XML statements
 * Named parameter parsing/merging
 * commitRequired option at the statement level
+* Wrap collection parameter objects in a map automatically

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicSqlSource.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicSqlSource.java?rev=773305&r1=773304&r2=773305&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicSqlSource.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicSqlSource.java
 Sun May 10 05:01:03 2009
@@ -18,9 +18,7 @@
     rootSqlNode.apply(context);
     SqlSourceParser sqlSourceParser = new SqlSourceParser(configuration);
     SqlSource sqlSource = sqlSourceParser.parse(context.getSql());
-    BoundSql boundSql = sqlSource.getBoundSql(parameterObject);
-    System.out.println(boundSql.getSql());
-    return boundSql;
+    return sqlSource.getBoundSql(parameterObject);
   }
 
 }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java?rev=773305&r1=773304&r2=773305&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java
 Sun May 10 05:01:03 2009
@@ -51,14 +51,14 @@
     public void appendSql(String sql) {
       if (!prefixApplied) {
         String filteredSql = sql.trim().toUpperCase();
-        for (String toRemove : stringsToOverride) {
-          if (filteredSql.startsWith(toRemove)) {
-            sql = sql.trim().substring(toRemove.trim().length()).trim();
-            break;
-          }
-        }
         if (filteredSql.length() > 0) {
           prefixApplied = true;
+          for (String toRemove : stringsToOverride) {
+            if (filteredSql.startsWith(toRemove) || 
filteredSql.startsWith(toRemove.trim())) {
+              sql = sql.trim().substring(toRemove.trim().length()).trim();
+              break;
+            }
+          }
           if (stringToPrefixWith != null) {
             delegate.appendSql(stringToPrefixWith);
           }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/BaseJdbcLogger.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/BaseJdbcLogger.java?rev=773305&r1=773304&r2=773305&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/BaseJdbcLogger.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/BaseJdbcLogger.java
 Sun May 10 05:01:03 2009
@@ -110,7 +110,13 @@
   }
 
   protected String removeBreakingWhitespace(String original) {
-    return original.replace('\n', ' ').replace('\r', ' ').replace('\t', ' 
').trim();
+    StringTokenizer whitespaceStripper = new StringTokenizer(original);
+    StringBuilder builder = new StringBuilder();
+    while (whitespaceStripper.hasMoreTokens()) {
+      builder.append(whitespaceStripper.nextToken());
+      builder.append(" ");
+    }
+    return builder.toString();
   }
 
 }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/PropertyParser.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/PropertyParser.java?rev=773305&r1=773304&r2=773305&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/PropertyParser.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parsing/PropertyParser.java
 Sun May 10 05:01:03 2009
@@ -18,7 +18,11 @@
     }
 
     public String handleToken(String content) {
-      return variables == null ? content : variables.getProperty(content);
+      if (variables != null && variables.containsKey(content)) {
+        return variables == null ? content : variables.getProperty(content);
+      } else {
+        return "${" + content + "}";
+      }
     }
   }
 }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/PostMapper.xml
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/PostMapper.xml?rev=773305&r1=773304&r2=773305&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/PostMapper.xml
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/PostMapper.xml
 Sun May 10 05:01:03 2009
@@ -6,12 +6,26 @@
 
 <mapper namespace="domain.blog.mappers.PostMapper">
 
+  <sql id="byBlogId">
+    <if test="blog_id != null">blog_id = #{blog_id}</if>
+  </sql>
+
   <select id="findPost" resultType="domain.blog.Post">
     SELECT *
     FROM POST P
     <where>
       <choose>
         <when test="id != null">id = #{id}</when>
+        <when test="author_id != null">AND author_id = #{author_id}</when>
+        <otherwise>
+          <if test="ids != null">
+            AND id IN
+            <foreach item="item_id" index="index" open="(" close=")" 
separator="," collection="ids">#{ids[${index}]}</foreach>
+          </if>
+          <prefix with="AND">
+            <include refid="byBlogId"/>
+          </prefix>
+        </otherwise>
       </choose>
     </where>
   </select>

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parsing/XPathParserTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parsing/XPathParserTest.java?rev=773305&r1=773304&r2=773305&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parsing/XPathParserTest.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parsing/XPathParserTest.java
 Sun May 10 05:01:03 2009
@@ -15,9 +15,9 @@
     Reader reader = Resources.getResourceAsReader(resource);
     XPathParser parser = new XPathParser(reader, false, null, null);
     assertEquals(5.8d,parser.evalDouble("/employee/height"));
-    assertEquals("id_var",parser.evalString("/employee/@id"));
+    assertEquals("${id_var}",parser.evalString("/employee/@id"));
     assertEquals(Boolean.TRUE,parser.evalBoolean("/employee/active"));
-    assertEquals("<id>id_var</id>", 
parser.evalNode("/employee/@id").toString().trim());
+    assertEquals("<id>${id_var}</id>", 
parser.evalNode("/employee/@id").toString().trim());
     assertEquals(7, parser.evalNodes("/employee/*").size());
   }
 

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java?rev=773305&r1=773304&r2=773305&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
 Sun May 10 05:01:03 2009
@@ -410,7 +410,6 @@
     SqlSession session = sqlMapper.openSession();
     try {
       List<Post> posts = 
session.selectList("domain.blog.mappers.PostMapper.findPost");
-      printPosts(posts);
       assertEquals(5,posts.size());
     } finally {
       session.close();
@@ -425,15 +424,74 @@
           new HashMap() {{
             put("id",1);
           }});
-      printPosts(posts);
+      assertEquals(1, posts.size());
     } finally {
       session.close();
     }
   }
 
-  private void printPosts(List<Post> posts) {
-    for(Post p : posts) {
-      System.out.println(p);
+  @Test
+  public void shouldFindPostsInSetOfIDsWithDynamicSql() throws Exception {
+    SqlSession session = sqlMapper.openSession();
+    try {
+      List<Post> posts = 
session.selectList("domain.blog.mappers.PostMapper.findPost",
+          new HashMap() {{
+            put("ids",new ArrayList(){{
+              add(1);
+              add(2);
+              add(3);
+            }});
+          }});
+      assertEquals(3, posts.size());
+    } finally {
+      session.close();
+    }
+  }
+
+  @Test
+  public void shouldFindPostsWithBlogIdUsingDynamicSql() throws Exception {
+    SqlSession session = sqlMapper.openSession();
+    try {
+      List<Post> posts = 
session.selectList("domain.blog.mappers.PostMapper.findPost",
+          new HashMap() {{
+            put("blog_id",1);
+          }});
+      assertEquals(2, posts.size());
+    } finally {
+      session.close();
+    }
+  }
+
+  @Test
+  public void shouldFindPostsWithAuthorIdUsingDynamicSql() throws Exception {
+    SqlSession session = sqlMapper.openSession();
+    try {
+      List<Post> posts = 
session.selectList("domain.blog.mappers.PostMapper.findPost",
+          new HashMap() {{
+            put("author_id",101);
+          }});
+      assertEquals(3, posts.size());
+    } finally {
+      session.close();
+    }
+  }
+
+  @Test
+  public void shouldFindPostsWithAuthorAndBlogIdUsingDynamicSql() throws 
Exception {
+    SqlSession session = sqlMapper.openSession();
+    try {
+      List<Post> posts = 
session.selectList("domain.blog.mappers.PostMapper.findPost",
+          new HashMap() {{
+            put("ids",new ArrayList(){{
+              add(1);
+              add(2);
+              add(3);
+            }});
+            put("blog_id",1);
+          }});
+      assertEquals(2, posts.size());
+    } finally {
+      session.close();
     }
   }
 

Modified: ibatis/trunk/java/ibatis-3/version.properties
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/version.properties?rev=773305&r1=773304&r2=773305&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/version.properties (original)
+++ ibatis/trunk/java/ibatis-3/version.properties Sun May 10 05:01:03 2009
@@ -1,5 +1,5 @@
-#Build version info
-#Tue May 05 17:36:19 MDT 2009
-version=3.0.0
-buildDate=2009/05/05 17\:36
-buildNum=152
+#Build version info
+#Sat May 09 22:58:12 MDT 2009
+version=3.0.0
+buildDate=2009/05/09 22\:58
+buildNum=154


Reply via email to