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 {