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 2008/03/30 14:03:31 UTC

svn commit: r642723 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src: main/java/org/apache/cayenne/ main/java/org/apache/cayenne/access/ test/java/org/apache/cayenne/access/

Author: aadamchik
Date: Sun Mar 30 05:03:31 2008
New Revision: 642723

URL: http://svn.apache.org/viewvc?rev=642723&view=rev
Log:
CAY-1013 the RefreshQuery does not refresh LOCAL_CACHE queries
(refactoring queryCache , moving it to the common superclass of DC and CC)

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContext.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextQueryCachingOSCacheTest.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java?rev=642723&r1=642722&r2=642723&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java Sun Mar 30 05:03:31 2008
@@ -22,16 +22,18 @@
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.cayenne.cache.MapQueryCache;
+import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.graph.GraphManager;
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.query.ObjectIdQuery;
 import org.apache.cayenne.query.Query;
-import org.apache.cayenne.reflect.Property;
+import org.apache.cayenne.reflect.AttributeProperty;
 import org.apache.cayenne.reflect.ClassDescriptor;
+import org.apache.cayenne.reflect.Property;
 import org.apache.cayenne.reflect.PropertyVisitor;
-import org.apache.cayenne.reflect.AttributeProperty;
-import org.apache.cayenne.reflect.ToOneProperty;
 import org.apache.cayenne.reflect.ToManyProperty;
+import org.apache.cayenne.reflect.ToOneProperty;
 
 /**
  * A common base superclass for Cayenne ObjectContext implementors.
@@ -41,9 +43,10 @@
  */
 public abstract class BaseContext implements ObjectContext {
 
-    // if we are to pass CayenneContext around, channel should be left alone and
+    // if we are to pass the context around, channel should be left alone and
     // reinjected later if needed
     protected transient DataChannel channel;
+    protected QueryCache queryCache;
 
     public abstract void commitChanges();
 
@@ -88,7 +91,10 @@
         if (object.getPersistenceState() == PersistenceState.HOLLOW) {
 
             ObjectId oid = object.getObjectId();
-            List<?> objects = performQuery(new ObjectIdQuery(oid, false, ObjectIdQuery.CACHE));
+            List<?> objects = performQuery(new ObjectIdQuery(
+                    oid,
+                    false,
+                    ObjectIdQuery.CACHE));
 
             if (objects.size() == 0) {
                 throw new FaultFailureException(
@@ -131,14 +137,17 @@
             if (propertyDescriptor == null) {
                 final StringBuilder errorMessage = new StringBuilder();
 
-                errorMessage.append(String.format("Property '%s' is not declared for entity '%s'.",
-                        property, object.getObjectId().getEntityName()));
-                
+                errorMessage.append(String.format(
+                        "Property '%s' is not declared for entity '%s'.",
+                        property,
+                        object.getObjectId().getEntityName()));
+
                 errorMessage.append(" Declared properties are: ");
 
                 // Grab each of the declared properties.
                 final List<String> properties = new ArrayList<String>();
                 classDescriptor.visitProperties(new PropertyVisitor() {
+
                     public boolean visitAttribute(final AttributeProperty property) {
                         properties.add(property.getName());
 
@@ -192,4 +201,28 @@
     public abstract void rollbackChangesLocally();
 
     public abstract Collection<?> uncommittedObjects();
+
+    /**
+     * Returns {@link QueryCache}, creating it on the fly if needed.
+     */
+    public synchronized QueryCache getQueryCache() {
+        if (queryCache == null) {
+            synchronized (this) {
+                if (queryCache == null) {
+                    // TODO: andrus, 7/27/2006 - figure out the factory stuff like we have
+                    // in DataContext
+                    queryCache = new MapQueryCache();
+                }
+            }
+        }
+        
+        return queryCache;
+    }
+
+    /**
+     * Sets a QueryCache to be used for storing cached query results.
+     */
+    public synchronized void setQueryCache(QueryCache queryCache) {
+        this.queryCache = queryCache;
+    }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContext.java?rev=642723&r1=642722&r2=642723&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContext.java Sun Mar 30 05:03:31 2008
@@ -24,8 +24,6 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.cayenne.cache.MapQueryCache;
-import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.event.EventManager;
 import org.apache.cayenne.graph.GraphDiff;
 import org.apache.cayenne.graph.GraphManager;
@@ -60,8 +58,6 @@
     // object that merges "backdoor" changes that come from the channel.
     CayenneContextMergeHandler mergeHandler;
 
-    QueryCache queryCache;
-
     /**
      * @since 3.0
      */
@@ -98,26 +94,6 @@
                 syncEventsEnabled);
 
         setChannel(channel);
-    }
-
-    /**
-     * Returns {@link QueryCache}, creating it on the fly if needed.
-     * 
-     * @since 3.0
-     */
-    QueryCache getQueryCache() {
-
-        if (queryCache == null) {
-            synchronized (this) {
-                if (queryCache == null) {
-                    // TODO: andrus, 7/27/2006 - figure out the factory stuff like we have
-                    // in DataContext
-                    queryCache = new MapQueryCache();
-                }
-            }
-        }
-
-        return queryCache;
     }
 
     /**

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java?rev=642723&r1=642722&r2=642723&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java Sun Mar 30 05:03:31 2008
@@ -98,7 +98,6 @@
     protected boolean usingSharedSnaphsotCache;
     protected boolean validatingObjectsOnCommit;
     protected ObjectStore objectStore;
-    protected QueryCache queryCache;
 
     // note that entity resolver is initialized from the parent channel the first time it
     // is accessed, and later cached in the context
@@ -242,6 +241,7 @@
      * 
      * @since 3.0
      */
+    @Override
     public synchronized QueryCache getQueryCache() {
         if (queryCache == null) {
             queryCache = getParentDataDomain().getQueryCacheFactory().getQueryCache(
@@ -251,14 +251,7 @@
         return queryCache;
     }
 
-    /**
-     * Sets a QueryCache to be used for storing cached query results.
-     * 
-     * @since 3.0
-     */
-    public synchronized void setQueryCache(QueryCache queryCache) {
-        this.queryCache = queryCache;
-    }
+
 
     /**
      * Returns a map of user-defined properties associated with this DataContext.

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java?rev=642723&r1=642722&r2=642723&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java Sun Mar 30 05:03:31 2008
@@ -243,8 +243,8 @@
      * @deprecated since 3.0. See {@link DataContext#getQueryCache()}.
      */
     public int cachedQueriesCount() {
-        return context != null && context.queryCache != null
-                ? context.queryCache.size()
+        return context != null && context.getQueryCache() != null
+                ? context.getQueryCache().size()
                 : 0;
     }
 
@@ -579,7 +579,7 @@
      * @deprecated since 3.0. See {@link DataContext#getQueryCache()}.
      */
     public synchronized List getCachedQueryResult(String name) {
-        return context != null && context.queryCache != null ? context.queryCache
+        return context != null && context.getQueryCache() != null ? context.getQueryCache()
                 .get(new CacheQueryMetadata(name)) : null;
     }
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextQueryCachingOSCacheTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextQueryCachingOSCacheTest.java?rev=642723&r1=642722&r2=642723&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextQueryCachingOSCacheTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextQueryCachingOSCacheTest.java Sun Mar 30 05:03:31 2008
@@ -111,7 +111,7 @@
     }
 
     private void runTest(TestRun test) throws Exception {
-        context.queryCache = null;
+        context.setQueryCache(null);
         getDomain().setQueryCacheFactory(new OSQueryCacheFactory());
         getDomain().queryCache = null;
         try {