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