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) {