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 {


Reply via email to