Author: cbegin
Date: Thu Aug 14 09:33:43 2008
New Revision: 685955
URL: http://svn.apache.org/viewvc?rev=685955&view=rev
Log:
Added unit test for independent peer lists
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/maps/Multilist.xml
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/FlushCacheInterceptor.java
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/RepeatingGroupMappingTest.java
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/maps/SqlMapConfig.xml
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/testdomain/Category.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/FlushCacheInterceptor.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/FlushCacheInterceptor.java?rev=685955&r1=685954&r2=685955&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/FlushCacheInterceptor.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/FlushCacheInterceptor.java
Thu Aug 14 09:33:43 2008
@@ -18,10 +18,12 @@
public Object intercept(Invocation invocation) throws Throwable {
MappedStatement statement = (MappedStatement) invocation.getArgs()[0];
- Set<Cache> cachesToFlush = flushCacheMap.get(statement.getId());
- if (cachesToFlush != null) {
- for (Cache c : cachesToFlush) {
- c.clear();
+ if (statement != null) {
+ Set<Cache> cachesToFlush = flushCacheMap.get(statement.getId());
+ if (cachesToFlush != null) {
+ for (Cache c : cachesToFlush) {
+ c.clear();
+ }
}
}
return invocation.proceed();
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/RepeatingGroupMappingTest.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/RepeatingGroupMappingTest.java?rev=685955&r1=685954&r2=685955&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/RepeatingGroupMappingTest.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/RepeatingGroupMappingTest.java
Thu Aug 14 09:33:43 2008
@@ -2,7 +2,7 @@
import testdomain.*;
-import java.util.List;
+import java.util.*;
public class RepeatingGroupMappingTest extends BaseSqlMapTest {
@@ -12,6 +12,11 @@
initScript("scripts/jpetstore-hsqldb-dataload.sql");
}
+ public void testShouldRetrieveTwoPeerLists() throws Exception {
+ List categories = sqlMap.queryForList("getAllCategoriesMap");
+ System.out.println(categories);
+ }
+
public void testGroupBy() throws Exception {
List list = sqlMap.queryForList("getAllCategories", null);
assertEquals(5, list.size());
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/maps/Multilist.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/maps/Multilist.xml?rev=685955&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/maps/Multilist.xml
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/maps/Multilist.xml
Thu Aug 14 09:33:43 2008
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE sqlMap
+ PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
+ "http://ibatis.apache.org/dtd/sql-map-2.dtd">
+
+<sqlMap>
+
+ <resultMap id="categoryResultMap" class="testdomain.Category"
groupBy="categoryId">
+ <result property="categoryId" column="catid"/>
+ <result property="name" column="catname"/>
+ <result property="description" column="catdescn"/>
+ <result property="productList" resultMap="productResultMap"/>
+ <result property="itemList" resultMap="itemResultMap"/>
+ </resultMap>
+
+
+ <resultMap id="productResultMap" class="testdomain.Product" >
+ <result property="productId" column="productid"/>
+ <result property="categoryId" column="category"/>
+ <result property="name" column="prodname"/>
+ <result property="description" column="proddescn"/>
+ </resultMap>
+
+ <resultMap id="itemResultMap" class="testdomain.Item" >
+ <result property="itemId" column="itemid"/>
+ <result property="productId" column="productid"/>
+ <result property="listPrice" column="listprice"/>
+ <result property="unitCost" column="unitcost"/>
+ <result property="supplierId" column="supplier"/>
+ <result property="status" column="status"/>
+ <result property="attribute1" column="attr1"/>
+ <result property="quantity" column="qty"/>
+ </resultMap>
+
+ <select id="getAllCategoriesMap" resultMap="categoryResultMap">
+ select
+ c.catid, c.name as catname, c.descn as catdescn,
+ p.productid, p.category, p.name as prodname,
+ p.descn as proddescn, i.itemid, i.productid,
+ i.listprice, i.unitcost, i.supplier, i.status,
+ i.attr1, i.attr2, i.attr3, i.attr4, i.attr5,
+ v.itemid, v.qty
+ from category c, product p, item i, inventory v
+ where c.catid = p.category
+ and p.productid = i.productid
+ and i.itemid = v.itemid
+ </select>
+
+</sqlMap>
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/maps/SqlMapConfig.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/maps/SqlMapConfig.xml?rev=685955&r1=685954&r2=685955&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/maps/SqlMapConfig.xml
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/maps/SqlMapConfig.xml
Thu Aug 14 09:33:43 2008
@@ -54,6 +54,7 @@
<sqlMap resource="${SqlMapPath}/XmlStatements.xml"/>
<sqlMap resource="${SqlMapPath}/DomStatements.xml"/>
<sqlMap resource="${SqlMapPath}/RepeatingGroupMapping.xml"/>
+ <sqlMap resource="${SqlMapPath}/Multilist.xml"/>
<sqlMap resource="${SqlMapPath}/Documents.xml"/>
<sqlMap resource="${SqlMapPath}/Jira.xml"/>
<sqlMap resource="${SqlMapPath}/NestedIterateStatements.xml"/>
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/testdomain/Category.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/testdomain/Category.java?rev=685955&r1=685954&r2=685955&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/testdomain/Category.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/testdomain/Category.java
Thu Aug 14 09:33:43 2008
@@ -9,6 +9,7 @@
private Category parentCategory;
private String name;
private String description;
+ private List itemList;
private List productList;
public String getCategoryId() {
@@ -47,6 +48,14 @@
return parentCategory;
}
+ public List getItemList() {
+ return itemList;
+ }
+
+ public void setItemList(List itemList) {
+ this.itemList = itemList;
+ }
+
public void setParentCategory(Category parentCategory) {
this.parentCategory = parentCategory;
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java?rev=685955&r1=685954&r2=685955&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java
Thu Aug 14 09:33:43 2008
@@ -39,24 +39,26 @@
}
public List query(MappedStatement ms, Object parameterObject, int offset,
int limit, ResultHandler resultHandler) throws SQLException {
- Cache cache = ms.getCache();
- if (cache != null) {
- synchronized (cache) {
- CacheKey key = createCacheKey(ms, parameterObject, offset, limit);
- if (cache.hasKey(key)) {
- return (List) cache.getObject(key);
- } else {
- List list = delegate.query(ms, parameterObject, offset, limit,
resultHandler);
- if (cacheEntries == null) {
- cacheEntries = new ArrayList<CacheEntry>();
+ if (ms != null) {
+ Cache cache = ms.getCache();
+ if (cache != null) {
+ synchronized (cache) {
+ CacheKey key = createCacheKey(ms, parameterObject, offset, limit);
+ if (cache.hasKey(key)) {
+ return (List) cache.getObject(key);
+ } else {
+ List list = delegate.query(ms, parameterObject, offset, limit,
resultHandler);
+ if (cacheEntries == null) {
+ cacheEntries = new ArrayList<CacheEntry>();
+ }
+ cacheEntries.add(new CacheEntry(cache, key, list));
+ return list;
}
- cacheEntries.add(new CacheEntry(cache, key, list));
- return list;
}
}
- } else {
- return delegate.query(ms, parameterObject, offset, limit, resultHandler);
}
+ return delegate.query(ms, parameterObject, offset, limit, resultHandler);
+
}
public List flushStatements() throws SQLException {