You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by bg...@apache.org on 2005/04/19 05:43:07 UTC
svn commit: r161836 - in incubator/ibatis/trunk/java/mapper/mapper2:
src/com/ibatis/common/beans/GenericProbe.java
test/com/ibatis/sqlmap/DynamicTest.java
test/com/ibatis/sqlmap/IterateTest.java
test/com/ibatis/sqlmap/maps/DynamicAccount.xml
Author: bgoodin
Date: Mon Apr 18 20:43:07 2005
New Revision: 161836
URL: http://svn.apache.org/viewcvs?view=rev&rev=161836
Log:
IBATIS 112 - set GenericProbe.getObject to look for an object that is a List. Added severl tests appended test names with "Literal" for testing the $[]$ in various scenarios.
Modified:
incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/beans/GenericProbe.java
incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DynamicTest.java
incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/IterateTest.java
incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/DynamicAccount.xml
Modified: incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/beans/GenericProbe.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/beans/GenericProbe.java?view=diff&r1=161835&r2=161836
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/beans/GenericProbe.java (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/beans/GenericProbe.java Mon Apr 18 20:43:07 2005
@@ -15,6 +15,7 @@
*/
package com.ibatis.common.beans;
+import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
@@ -33,7 +34,9 @@
private static final BaseProbe BEAN_PROBE = new ComplexBeanProbe();
private static final BaseProbe DOM_PROBE = new DomProbe();
-
+ private static final String START_INDEX = "[";
+ private static final String END_INDEX = "]";
+
protected GenericProbe() {
}
@@ -48,6 +51,8 @@
public Object getObject(Object object, String name) {
if (object instanceof org.w3c.dom.Document) {
return DOM_PROBE.getObject(object, name);
+ } else if (object instanceof List) {
+ return ((List)object).get(new Integer(name.substring(1,name.indexOf(END_INDEX))).intValue());
} else {
return BEAN_PROBE.getObject(object, name);
}
Modified: incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DynamicTest.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DynamicTest.java?view=diff&r1=161835&r2=161836
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DynamicTest.java (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DynamicTest.java Mon Apr 18 20:43:07 2005
@@ -148,6 +148,17 @@
assertEquals(1, list.size());
}
+ public void testComplexDynamicQueryLiteral() throws SQLException {
+ Account account = new Account();
+ account.setId(2);
+ account.setFirstName("Jim");
+ account.setLastName("Smith");
+ account.setEmailAddress("jim.smith@somewhere.com");
+ List list = sqlMap.queryForList("complexDynamicQueryByExampleLiteral", account);
+ assertAccount2((Account) list.get(0));
+ assertEquals(1, list.size());
+ }
+
// COMPLETE STATEMENT SUBSTITUTION
// -- No longer supported. Conflicted with and deemed less valuable than
Modified: incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/IterateTest.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/IterateTest.java?view=diff&r1=161835&r2=161836
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/IterateTest.java (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/IterateTest.java Mon Apr 18 20:43:07 2005
@@ -24,6 +24,15 @@
assertEquals(3, list.size());
}
+ // Iterate
+
+ public void testIterateLiteral() throws SQLException {
+ List params = Arrays.asList(new Integer[]{new Integer(1), new Integer(2), new Integer(3)});
+ List list = sqlMap.queryForList("dynamicIterateLiteral", params);
+ assertAccount1((Account) list.get(0));
+ assertEquals(3, list.size());
+ }
+
public void testMultiIterate() throws SQLException {
List params = Arrays.asList(new Integer[]{new Integer(1), new Integer(2), new Integer(3)});
List list = sqlMap.queryForList("multiDynamicIterate", params);
@@ -31,6 +40,13 @@
assertEquals(3, list.size());
}
+ public void testMultiIterateLiteral() throws SQLException {
+ List params = Arrays.asList(new Integer[]{new Integer(1), new Integer(2), new Integer(3)});
+ List list = sqlMap.queryForList("multiDynamicIterateLiteral", params);
+ assertAccount1((Account) list.get(0));
+ assertEquals(3, list.size());
+ }
+
// ARRAY
public void testArrayPropertyIterate() throws SQLException {
@@ -46,6 +62,15 @@
account.setAge(4);
account.setIds(new int[]{1, 2, 3});
List list = sqlMap.queryForList("dynamicQueryByExample2", account);
+ assertAccount1((Account) list.get(0));
+ assertEquals(3, list.size());
+ }
+
+ public void testArrayPropertyIterate2Literal() throws SQLException {
+ Account account = new Account();
+ account.setAge(4);
+ account.setIds(new int[]{1, 2, 3});
+ List list = sqlMap.queryForList("dynamicQueryByExample2Literal", account);
assertAccount1((Account) list.get(0));
assertEquals(3, list.size());
}
Modified: incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/DynamicAccount.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/DynamicAccount.xml?view=diff&r1=161835&r2=161836
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/DynamicAccount.xml (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/DynamicAccount.xml Mon Apr 18 20:43:07 2005
@@ -155,6 +155,21 @@
</iterate>
</select>
+ <select id="dynamicIterateLiteral"
+ parameterClass="list"
+ resultClass="testdomain.Account">
+ select
+ ACC_ID as id,
+ ACC_FIRST_NAME as firstName,
+ ACC_LAST_NAME as lastName,
+ ACC_EMAIL as emailAddress
+ from ACCOUNT
+ WHERE ACC_ID IN
+ <iterate open="(" close=")" conjunction=",">
+ $[]$
+ </iterate>
+ </select>
+
<select id="multiDynamicIterate"
parameterClass="list"
resultClass="testdomain.Account">
@@ -174,6 +189,25 @@
</iterate>
</select>
+ <select id="multiDynamicIterateLiteral"
+ parameterClass="list"
+ resultClass="testdomain.Account">
+ select
+ ACC_ID as id,
+ ACC_FIRST_NAME as firstName,
+ ACC_LAST_NAME as lastName,
+ ACC_EMAIL as emailAddress
+ from ACCOUNT
+ WHERE ACC_ID IN
+ <iterate open="(" close=")" conjunction=",">
+ #[]#
+ </iterate>
+ AND ACC_ID IN
+ <iterate open="(" close=")" conjunction=",">
+ #[]#
+ </iterate>
+ </select>
+
<select id="iterateNestedListProperty"
parameterClass="testdomain.Account"
resultClass="testdomain.Account">
@@ -258,6 +292,48 @@
<isNotNull prepend="AND" property="ids" removeFirstPrepend="false">
ACC_ID in
<iterate property="ids" open="(" close=")" conjunction=",">
+ $ids[]$
+ </iterate>
+ </isNotNull>
+ <isPropertyAvailable property="lastName" prepend="AND" open="(" close=")" removeFirstPrepend="true">
+ <isNotEmpty prepend="AND" property="firstName" removeFirstPrepend="false">
+ ACC_FIRST_NAME = #firstName#
+ </isNotEmpty>
+ </isPropertyAvailable>
+ <isPropertyAvailable property="lastName" prepend="AND" open="(" close=")" removeFirstPrepend="true">
+ <isNotEmpty prepend="AND" property="lastName" removeFirstPrepend="false">
+ ACC_LAST_NAME = #lastName#
+ </isNotEmpty>
+ </isPropertyAvailable>
+ <isNotEmpty prepend="AND" property="emailAddress">
+ <isEqual property="emailAddress" compareValue="clinton">
+ ACC_EMAIL = 'clinton.begin@ibatis.com'
+ </isEqual>
+ <isNotEqual property="emailAddress" compareValue="clinton">
+ ACC_EMAIL = #emailAddress#
+ </isNotEqual>
+ </isNotEmpty>
+ </dynamic>
+ </select>
+
+ <select id="complexDynamicQueryByExampleLiteral"
+ parameterClass="testdomain.Account"
+ resultClass="testdomain.Account">
+ select
+ ACC_ID as id,
+ ACC_FIRST_NAME as firstName,
+ ACC_LAST_NAME as lastName,
+ ACC_EMAIL as emailAddress
+ from ACCOUNT
+ <dynamic prepend="WHERE" open="(" close=")">
+ <isNotPropertyAvailable property="id" prepend="AND" open="(" close=")" removeFirstPrepend="true">
+ <isGreaterThan prepend="AND" property="id" compareValue="0">
+ ACC_ID = #id#
+ </isGreaterThan>
+ </isNotPropertyAvailable>
+ <isNotNull prepend="AND" property="ids" removeFirstPrepend="false">
+ ACC_ID in
+ <iterate property="ids" open="(" close=")" conjunction=",">
#ids[]#
</iterate>
</isNotNull>
@@ -299,7 +375,24 @@
</iterate>
</dynamic>
</select>
-
+
+ <select id="dynamicQueryByExample2Literal"
+ parameterClass="testdomain.Account"
+ resultClass="testdomain.Account">
+ select
+ ACC_ID as id,
+ ACC_FIRST_NAME as firstName,
+ ACC_LAST_NAME as lastName,
+ ACC_EMAIL as emailAddress
+ from ACCOUNT
+ <dynamic prepend="WHERE">
+ <iterate property="ids" conjunction="OR">
+ <isNotNull property="age">
+ ACC_ID = $ids[]$
+ </isNotNull>
+ </iterate>
+ </dynamic>
+ </select>
<!--
issue IBATIS-42 test
include the following code in the same place where