Author: aadamchik
Date: Wed Oct 11 15:46:00 2006
New Revision: 463020

URL: http://svn.apache.org/viewvc?view=rev&rev=463020
Log:
CAY-685 OSQueryCache concurrency improvements
fixing a problem that I introduced 30 min ago - query cache group wasn't stored 
by OSQueryCache 

Modified:
    
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/cache/OSQueryCache.java

Modified: 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/cache/OSQueryCache.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/cache/OSQueryCache.java?view=diff&rev=463020&r1=463019&r2=463020
==============================================================================
--- 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/cache/OSQueryCache.java
 (original)
+++ 
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/cache/OSQueryCache.java
 Wed Oct 11 15:46:00 2006
@@ -26,6 +26,7 @@
 import java.util.Map;
 import java.util.Properties;
 
+import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.query.QueryMetadata;
 
 import com.opensymphony.oscache.base.CacheEntry;
@@ -283,9 +284,24 @@
             boolean updated = false;
             try {
                 Object result = factory.createObject();
-                osCache.putInCache(key, result);
+
+                if (!(result instanceof List)) {
+                    if (result == null) {
+                        throw new CayenneRuntimeException("Null on cache 
rebuilding: "
+                                + metadata.getCacheKey());
+                    }
+                    else {
+                        throw new CayenneRuntimeException(
+                                "Invalid query result, expected List, got "
+                                        + result.getClass().getName());
+                    }
+                }
+
+                List list = (List) result;
+
+                put(metadata, list);
                 updated = true;
-                return (List) result;
+                return list;
             }
             finally {
                 if (!updated) {


Reply via email to