You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/06/16 08:48:27 UTC
svn commit: r414756 - in
/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne:
CayenneContextQueryAction.java remote/RemoteIncrementalFaultList.java
Author: aadamchik
Date: Thu Jun 15 23:48:27 2006
New Revision: 414756
URL: http://svn.apache.org/viewvc?rev=414756&view=rev
Log:
Local caching of client paginated lists is broken
* on the remote client, paginated query is intercepted before the local cache, thus local cache settings are ignored.
* on the server: RemoteIncrementalFaultList overrides the query cache key, so cached IncrementalFaultLists can't be reused and a new list created on every query, taking lots of memory.
(I can't log in to Jira due to Apache network problems; I will enter the bug once this is resolved)
Modified:
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/CayenneContextQueryAction.java
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/remote/RemoteIncrementalFaultList.java
Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/CayenneContextQueryAction.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/CayenneContextQueryAction.java?rev=414756&r1=414755&r2=414756&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/CayenneContextQueryAction.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/CayenneContextQueryAction.java Thu Jun 15 23:48:27 2006
@@ -75,10 +75,11 @@
}
public QueryResponse execute() {
- if (interceptPaginatedQuery() != DONE) {
- if (interceptOIDQuery() != DONE) {
- if (interceptRelationshipQuery() != DONE) {
- if (interceptLocalCache() != DONE) {
+
+ if (interceptOIDQuery() != DONE) {
+ if (interceptRelationshipQuery() != DONE) {
+ if (interceptLocalCache() != DONE) {
+ if (interceptPaginatedQuery() != DONE) {
runQuery();
}
}
@@ -126,7 +127,10 @@
}
}
- runQuery();
+ if (interceptPaginatedQuery() != DONE) {
+ runQuery();
+ }
+
graphManager.cacheQueryResult(cacheKey, response.firstList());
return DONE;
}
Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/remote/RemoteIncrementalFaultList.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/remote/RemoteIncrementalFaultList.java?rev=414756&r1=414755&r2=414756&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/remote/RemoteIncrementalFaultList.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/remote/RemoteIncrementalFaultList.java Thu Jun 15 23:48:27 2006
@@ -129,7 +129,13 @@
? (ListHelper) new DataRowListHelper()
: new PersistentListHelper();
this.context = context;
- this.cacheKey = generateCacheKey();
+
+ // use provided cache key if possible; this would allow clients to
+ // address the same server-side list from multiple queries.
+ this.cacheKey = metadata.getCacheKey();
+ if(cacheKey == null) {
+ cacheKey = generateCacheKey();
+ }
IncrementalQuery query = new IncrementalQuery(paginatedQuery, cacheKey);