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 2011/01/30 02:49:58 UTC

svn commit: r1065167 - in /cayenne/main/trunk: docs/doc/src/main/resources/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ framework/cayenne-jdk1.5-un...

Author: aadamchik
Date: Sun Jan 30 01:49:57 2011
New Revision: 1065167

URL: http://svn.apache.org/viewvc?rev=1065167&view=rev
Log:
CAY-1445 Initialize QueryCache via dependency injection

removal of QueryCacheFactory
setting up QueryCache injection

Added:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/MapQueryCacheProvider.java
      - copied, changed from r1065166, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/MapQueryCacheFactory.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/OSQueryCacheProvider.java
      - copied, changed from r1065166, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/OSQueryCacheFactory.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/QueryCacheLazyInitializationProxy.java
Removed:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/MapQueryCacheFactory.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/OSQueryCacheFactory.java
Modified:
    cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
    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/DataDomain.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/NestedQueryCache.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DefaultRuntimeProperties.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/RuntimeProperties.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/rop/client/CayenneContextFactory.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DataContextFactory.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextQueryCachingOSCacheTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextQueryCachingTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataDomainTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/configuration/server/DataContextFactoryTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/remote/RemoteCayenneCase.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/CayenneCase.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/SimpleAccessStack.java

Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Sun Jan 30 01:49:57 2011
@@ -14,6 +14,7 @@ Date: 
 ----------------------------------
 Changes/New Features Since 3.1M1:
 
+CAY-1445 DI-based QueryCacheFactory
 CAY-1508 Support for DataChannel filters
 CAY-1509 Lifecycle event annotations support
 CAY-1532 Import cayenne-lifecycle from sandbox

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=1065167&r1=1065166&r2=1065167&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 Jan 30 01:49:57 2011
@@ -25,7 +25,6 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.cayenne.cache.QueryCache;
-import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.event.EventManager;
 import org.apache.cayenne.exp.ValueInjector;
 import org.apache.cayenne.graph.CompoundDiff;
@@ -53,7 +52,7 @@ import org.apache.cayenne.util.ObjectCon
  */
 public abstract class BaseContext implements ObjectContext, DataChannel {
 
-    protected static final String QUERY_CACHE_INJECTION_KEY = "local";
+    public static final String QUERY_CACHE_INJECTION_KEY = "local";
 
     /**
      * A holder of a ObjectContext bound to the current thread.
@@ -93,8 +92,6 @@ public abstract class BaseContext implem
     // transient variables that should be reinitialized on deserialization from the
     // registry
     protected transient DataChannel channel;
-
-    @Inject(QUERY_CACHE_INJECTION_KEY)
     protected transient 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=1065167&r1=1065166&r2=1065167&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 Jan 30 01:49:57 2011
@@ -24,6 +24,7 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.cayenne.cache.NestedQueryCache;
 import org.apache.cayenne.event.EventManager;
 import org.apache.cayenne.graph.CompoundDiff;
 import org.apache.cayenne.graph.GraphDiff;
@@ -479,10 +480,18 @@ public class CayenneContext extends Base
      * @since 3.0
      */
     public ObjectContext createChildContext() {
-        return new CayenneContext(
+        CayenneContext child = new CayenneContext(
                 this,
                 graphManager.changeEventsEnabled,
                 graphManager.lifecycleEventsEnabled);
+
+        // TODO: This method should be deprecated and child context should be created via
+        // DI with all proper injection, so won't have to guess how to handle query cache.
+ if (queryCache != null) {
+            child.setQueryCache(new NestedQueryCache(queryCache));
+        }
+
+        return child;
     }
 
     @Override

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=1065167&r1=1065166&r2=1065167&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 Jan 30 01:49:57 2011
@@ -42,6 +42,7 @@ import org.apache.cayenne.PersistenceSta
 import org.apache.cayenne.Persistent;
 import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.access.util.IteratedSelectObserver;
+import org.apache.cayenne.cache.NestedQueryCache;
 import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.configuration.CayenneRuntime;
 import org.apache.cayenne.di.Injector;
@@ -128,6 +129,12 @@ public class DataContext extends BaseCon
 
         DataContext child = new DataContext(this, objectStore);
 
+        // TODO: This method should be deprecated and child context should be created via
+        // DI with all proper injection, so won't have to guess how to handle query cache.
+        if (queryCache != null) {
+            child.setQueryCache(new NestedQueryCache(queryCache));
+        }
+
         child.setValidatingObjectsOnCommit(isValidatingObjectsOnCommit());
         child.usingSharedSnaphsotCache = isUsingSharedSnapshotCache();
         return child;

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java Sun Jan 30 01:49:57 2011
@@ -36,10 +36,10 @@ import org.apache.cayenne.DataChannelSyn
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.access.jdbc.BatchQueryBuilderFactory;
+import org.apache.cayenne.cache.NestedQueryCache;
 import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.configuration.ObjectContextFactory;
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Provider;
 import org.apache.cayenne.event.EventManager;
 import org.apache.cayenne.graph.CompoundDiff;
 import org.apache.cayenne.graph.GraphDiff;
@@ -121,7 +121,7 @@ public class DataDomain implements Query
      * @since 3.1
      */
     @Inject
-    protected Provider<QueryCache> queryCacheProvider;
+    protected QueryCache queryCache;
 
     protected boolean stopped;
 
@@ -560,6 +560,10 @@ public class DataDomain implements Query
 
         DataContext context = new DataContext(this, new ObjectStore(snapshotCache));
 
+        if (queryCache != null) {
+            context.setQueryCache(new NestedQueryCache(queryCache));
+        }
+
         context.setValidatingObjectsOnCommit(isValidatingObjectsOnCommit());
         return context;
     }
@@ -859,7 +863,11 @@ public class DataDomain implements Query
      * @since 3.0
      */
     public QueryCache getQueryCache() {
-        return queryCacheProvider.get();
+        return queryCache;
+    }
+
+    public void setQueryCache(QueryCache queryCache) {
+        this.queryCache = queryCache;
     }
 
     /**

Copied: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/MapQueryCacheProvider.java (from r1065166, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/MapQueryCacheFactory.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/MapQueryCacheProvider.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/MapQueryCacheProvider.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/MapQueryCacheFactory.java&r1=1065166&r2=1065167&rev=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/MapQueryCacheFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/MapQueryCacheProvider.java Sun Jan 30 01:49:57 2011
@@ -18,28 +18,34 @@
  ****************************************************************/
 package org.apache.cayenne.cache;
 
-import java.util.Map;
+import org.apache.cayenne.ConfigurationException;
+import org.apache.cayenne.configuration.RuntimeProperties;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Provider;
 
 /**
- * @since 3.0
+ * @since 3.1
  */
-public class MapQueryCacheFactory implements QueryCacheFactory {
-    
+public class MapQueryCacheProvider implements Provider<QueryCache> {
+
     public static final String CACHE_SIZE_PROPERTY = "cayenne.MapQueryCacheFactory.cacheSize";
 
-    public QueryCache getQueryCache(Map<String, String> properties) {
-        if(properties != null) {
-            String size = properties.get(CACHE_SIZE_PROPERTY);
-            if(size != null) {
-                try {
-                    return new MapQueryCache(Integer.parseInt(size));
-                }
-                catch(NumberFormatException e) {
-                    // ignore
-                }
+    protected RuntimeProperties properties;
+
+    public MapQueryCacheProvider(@Inject RuntimeProperties properties) {
+        this.properties = properties;
+    }
+
+    public QueryCache get() throws ConfigurationException {
+
+        return new QueryCacheLazyInitializationProxy(new Provider<QueryCache>() {
+
+            public QueryCache get() throws ConfigurationException {
+                int size = properties.getInt(
+                        CACHE_SIZE_PROPERTY,
+                        MapQueryCache.DEFAULT_CACHE_SIZE);
+                return new MapQueryCache(size);
             }
-        }
-        
-        return new MapQueryCache();
+        });
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/NestedQueryCache.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/NestedQueryCache.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/NestedQueryCache.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/NestedQueryCache.java Sun Jan 30 01:49:57 2011
@@ -70,7 +70,9 @@ public class NestedQueryCache implements
      * Clears the underlying shared cache.
      */
     public void clear() {
-        throw new UnsupportedOperationException("Can't clear a subset of shared cache");
+        // seems pretty evil - it clears the keys that do not belong to our subset of the
+        // cache
+        delegate.clear();
     }
 
     @SuppressWarnings("unchecked")

Copied: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/OSQueryCacheProvider.java (from r1065166, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/OSQueryCacheFactory.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/OSQueryCacheProvider.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/OSQueryCacheProvider.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/OSQueryCacheFactory.java&r1=1065166&r2=1065167&rev=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/OSQueryCacheFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/OSQueryCacheProvider.java Sun Jan 30 01:49:57 2011
@@ -18,21 +18,23 @@
  ****************************************************************/
 package org.apache.cayenne.cache;
 
-import java.util.Map;
+import org.apache.cayenne.ConfigurationException;
+import org.apache.cayenne.di.Provider;
 
 /**
- * A factory for the OSCache factory. "/oscache.properties" file is read to load the
+ * A provider for the OSCache factory. "/oscache.properties" file is read to load the
  * standard OSCache properties and also extra properties
  * 
- * @since 3.0
+ * @since 3.1
  */
-public class OSQueryCacheFactory implements QueryCacheFactory {
+public class OSQueryCacheProvider implements Provider<QueryCache> {
 
-    /**
-     * Creates QueryCache, ignoring provided properties, and reading data from
-     * "oscache.properties" file instead.
-     */
-    public QueryCache getQueryCache(Map<String, String> properties) {
-        return new OSQueryCache();
+    public QueryCache get() throws ConfigurationException {
+        return new QueryCacheLazyInitializationProxy(new Provider<QueryCache>() {
+
+            public QueryCache get() throws ConfigurationException {
+                return new OSQueryCache();
+            }
+        });
     }
 }

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/QueryCacheLazyInitializationProxy.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/QueryCacheLazyInitializationProxy.java?rev=1065167&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/QueryCacheLazyInitializationProxy.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/QueryCacheLazyInitializationProxy.java Sun Jan 30 01:49:57 2011
@@ -0,0 +1,83 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.cache;
+
+import java.util.List;
+
+import org.apache.cayenne.di.Provider;
+import org.apache.cayenne.query.QueryMetadata;
+
+/**
+ * @since 3.1
+ */
+// TODO: implement as a generic proxy inside the DI module
+public class QueryCacheLazyInitializationProxy implements QueryCache {
+
+    private volatile QueryCache delegate;
+    private Provider<QueryCache> provider;
+
+    public QueryCacheLazyInitializationProxy(Provider<QueryCache> provider) {
+        this.provider = provider;
+    }
+
+    private final QueryCache getDelegate() {
+
+        if (delegate == null) {
+            synchronized (this) {
+                if (delegate == null) {
+                    delegate = provider.get();
+                }
+            }
+        }
+
+        return delegate;
+    }
+
+    public void clear() {
+        // no need to instantiate cache if it is null
+        if (delegate != null) {
+            delegate.clear();
+        }
+    }
+
+    public List get(QueryMetadata metadata, QueryCacheEntryFactory factory) {
+        return getDelegate().get(metadata, factory);
+    }
+
+    public List get(QueryMetadata metadata) {
+        return getDelegate().get(metadata);
+    }
+
+    public void put(QueryMetadata metadata, List results) {
+        getDelegate().put(metadata, results);
+    }
+
+    public void remove(String key) {
+        getDelegate().remove(key);
+    }
+
+    public void removeGroup(String groupKey) {
+        getDelegate().removeGroup(groupKey);
+    }
+
+    public int size() {
+        return getDelegate().size();
+    }
+
+}

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DefaultRuntimeProperties.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DefaultRuntimeProperties.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DefaultRuntimeProperties.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DefaultRuntimeProperties.java Sun Jan 30 01:49:57 2011
@@ -54,6 +54,21 @@ public class DefaultRuntimeProperties im
         return properties.get(key);
     }
 
+    public int getInt(String key, int defaultValue) {
+        String string = get(key);
+        if (string == null) {
+            return defaultValue;
+        }
+
+        try {
+            return Integer.parseInt(string);
+        }
+        catch (NumberFormatException e) {
+            // incorrect property format, should we rethrow?
+            return defaultValue;
+        }
+    }
+
     public boolean getBoolean(String key, boolean defaultValue) {
         String string = get(key);
         return string != null ? "true".equalsIgnoreCase(string) : defaultValue;

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/RuntimeProperties.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/RuntimeProperties.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/RuntimeProperties.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/RuntimeProperties.java Sun Jan 30 01:49:57 2011
@@ -30,5 +30,7 @@ public interface RuntimeProperties {
      */
     String get(String key);
     
+    int getInt(String key, int defaultValue);
+    
     boolean getBoolean(String key, boolean defaultValue);
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/rop/client/CayenneContextFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/rop/client/CayenneContextFactory.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/rop/client/CayenneContextFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/rop/client/CayenneContextFactory.java Sun Jan 30 01:49:57 2011
@@ -18,12 +18,16 @@
  ****************************************************************/
 package org.apache.cayenne.configuration.rop.client;
 
+import org.apache.cayenne.BaseContext;
 import org.apache.cayenne.CayenneContext;
 import org.apache.cayenne.DataChannel;
 import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.configuration.ObjectContextFactory;
 import org.apache.cayenne.configuration.RuntimeProperties;
 import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Injector;
+import org.apache.cayenne.di.Key;
 
 public class CayenneContextFactory implements ObjectContextFactory {
 
@@ -33,6 +37,9 @@ public class CayenneContextFactory imple
     @Inject
     protected RuntimeProperties properties;
 
+    @Inject
+    protected Injector injector;
+
     public ObjectContext createContext() {
         return createContext(dataChannel);
     }
@@ -46,6 +53,10 @@ public class CayenneContextFactory imple
                 ClientModule.CONTEXT_LIFECYCLE_EVENTS,
                 false);
 
-        return new CayenneContext(parent, changeEvents, lifecycleEvents);
+        CayenneContext context = new CayenneContext(parent, changeEvents, lifecycleEvents);
+        context.setQueryCache(injector.getInstance(Key.get(
+                QueryCache.class,
+                BaseContext.QUERY_CACHE_INJECTION_KEY)));
+        return context;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java Sun Jan 30 01:49:57 2011
@@ -20,11 +20,15 @@ package org.apache.cayenne.configuration
 
 import java.util.Map;
 
+import org.apache.cayenne.BaseContext;
 import org.apache.cayenne.DataChannel;
+import org.apache.cayenne.cache.MapQueryCacheProvider;
+import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.configuration.DefaultRuntimeProperties;
 import org.apache.cayenne.configuration.ObjectContextFactory;
 import org.apache.cayenne.configuration.RuntimeProperties;
 import org.apache.cayenne.di.Binder;
+import org.apache.cayenne.di.Key;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.event.DefaultEventManager;
 import org.apache.cayenne.event.EventManager;
@@ -69,6 +73,10 @@ public class ClientModule implements Mod
         binder.bind(EventManager.class).to(DefaultEventManager.class);
         binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
         binder.bind(DataChannel.class).toProvider(ClientChannelProvider.class);
+        binder
+                .bind(Key.get(QueryCache.class, BaseContext.QUERY_CACHE_INJECTION_KEY))
+                .toProvider(MapQueryCacheProvider.class)
+                .withoutScope();
     }
 
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DataContextFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DataContextFactory.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DataContextFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DataContextFactory.java Sun Jan 30 01:49:57 2011
@@ -18,15 +18,18 @@
  ****************************************************************/
 package org.apache.cayenne.configuration.server;
 
+import org.apache.cayenne.BaseContext;
 import org.apache.cayenne.DataChannel;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.DataDomain;
 import org.apache.cayenne.access.DataRowStore;
 import org.apache.cayenne.access.ObjectStore;
+import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.configuration.ObjectContextFactory;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Injector;
+import org.apache.cayenne.di.Key;
 import org.apache.cayenne.event.EventManager;
 
 /**
@@ -73,9 +76,9 @@ public class DataContextFactory implemen
 
         DataContext context = new DataContext(parent, new ObjectStore(snapshotCache));
         context.setValidatingObjectsOnCommit(dataDomain.isValidatingObjectsOnCommit());
-
-        injector.injectMembers(context);
-
+        context.setQueryCache(injector.getInstance(Key.get(
+                QueryCache.class,
+                BaseContext.QUERY_CACHE_INJECTION_KEY)));
         return context;
     }
 
@@ -88,8 +91,9 @@ public class DataContextFactory implemen
 
         context.setValidatingObjectsOnCommit(parent.isValidatingObjectsOnCommit());
         context.setUsingSharedSnapshotCache(parent.isUsingSharedSnapshotCache());
-
-        injector.injectMembers(context);
+        context.setQueryCache(injector.getInstance(Key.get(
+                QueryCache.class,
+                BaseContext.QUERY_CACHE_INJECTION_KEY)));
 
         return context;
     }
@@ -104,9 +108,9 @@ public class DataContextFactory implemen
 
         DataContext context = new DataContext(parent, new ObjectStore(snapshotCache));
         context.setValidatingObjectsOnCommit(parent.isValidatingObjectsOnCommit());
-
-        injector.injectMembers(context);
-
+        context.setQueryCache(injector.getInstance(Key.get(
+                QueryCache.class,
+                BaseContext.QUERY_CACHE_INJECTION_KEY)));
         return context;
     }
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java Sun Jan 30 01:49:57 2011
@@ -18,12 +18,15 @@
  ****************************************************************/
 package org.apache.cayenne.configuration.server;
 
+import org.apache.cayenne.BaseContext;
 import org.apache.cayenne.DataChannel;
 import org.apache.cayenne.access.DataDomain;
 import org.apache.cayenne.access.QueryLogger;
 import org.apache.cayenne.access.dbsync.SchemaUpdateStrategy;
 import org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy;
 import org.apache.cayenne.ashwood.AshwoodEntitySorter;
+import org.apache.cayenne.cache.MapQueryCacheProvider;
+import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.configuration.AdhocObjectFactory;
 import org.apache.cayenne.configuration.ConfigurationNameMapper;
 import org.apache.cayenne.configuration.DataChannelDescriptorLoader;
@@ -49,6 +52,7 @@ import org.apache.cayenne.dba.sqlite.SQL
 import org.apache.cayenne.dba.sqlserver.SQLServerSniffer;
 import org.apache.cayenne.dba.sybase.SybaseSniffer;
 import org.apache.cayenne.di.Binder;
+import org.apache.cayenne.di.Key;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.event.DefaultEventManager;
 import org.apache.cayenne.event.EventManager;
@@ -104,7 +108,7 @@ public class ServerModule implements Mod
                 .add(new OracleSniffer())
                 .add(new PostgresSniffer())
                 .add(new MySQLSniffer());
-        
+
         // configure an empty filter chain
         binder.bindList(DataDomainProvider.FILTERS_LIST);
 
@@ -114,6 +118,12 @@ public class ServerModule implements Mod
 
         binder.bind(EventManager.class).to(DefaultEventManager.class);
 
+        binder.bind(QueryCache.class).toProvider(MapQueryCacheProvider.class);
+        binder
+                .bind(Key.get(QueryCache.class, BaseContext.QUERY_CACHE_INJECTION_KEY))
+                .toProvider(MapQueryCacheProvider.class)
+                .withoutScope();
+
         // a service to provide the main stack DataDomain
         binder.bind(DataDomain.class).toProvider(DataDomainProvider.class);
 

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=1065167&r1=1065166&r2=1065167&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 Jan 30 01:49:57 2011
@@ -18,68 +18,16 @@
  ****************************************************************/
 package org.apache.cayenne.access;
 
-import org.apache.cayenne.cache.OSQueryCacheFactory;
+import org.apache.cayenne.cache.OSQueryCache;
 
 public class DataContextQueryCachingOSCacheTest extends DataContextQueryCachingTest {
 
+    // runs super tests with a different setup...
     @Override
-    public void testLocalCacheDataObjectsRefresh() throws Exception {
-        runTest(new TestRun() {
-
-            public void execute() throws Exception {
-                DataContextQueryCachingOSCacheTest.super
-                        .testLocalCacheDataObjectsRefresh();
-            }
-        });
-    }
-
-    @Override
-    public void testLocalCacheDataRowsRefresh() throws Exception {
-        runTest(new TestRun() {
-
-            public void execute() throws Exception {
-                DataContextQueryCachingOSCacheTest.super.testLocalCacheDataRowsRefresh();
-            }
-        });
+    protected void setUp() throws Exception {
+        oldCache = getDomain().getQueryCache();
+        getDomain().setQueryCache(new OSQueryCache());
+        context = createDataContextWithSharedCache(true);
+        context.setQueryCache(new OSQueryCache());
     }
-
-    @Override
-    public void testLocalCacheRefreshObjectsRefresh() throws Exception {
-        runTest(new TestRun() {
-
-            public void execute() throws Exception {
-                DataContextQueryCachingOSCacheTest.super
-                        .testLocalCacheRefreshObjectsRefresh();
-            }
-        });
-    }
-
-    @Override
-    public void testSharedCacheDataRowsRefresh() throws Exception {
-        runTest(new TestRun() {
-
-            public void execute() throws Exception {
-                DataContextQueryCachingOSCacheTest.super.testSharedCacheDataRowsRefresh();
-            }
-        });
-    }
-
-    private void runTest(TestRun test) throws Exception {
-        context.setQueryCache(null);
-        getDomain().setQueryCacheFactory(new OSQueryCacheFactory());
-        getDomain().queryCache = null;
-        try {
-            test.execute();
-        }
-        finally {
-            getDomain().setQueryCacheFactory(null);
-            getDomain().queryCache = null;
-        }
-    }
-
-    interface TestRun {
-
-        void execute() throws Exception;
-    }
-
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextQueryCachingTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextQueryCachingTest.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextQueryCachingTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextQueryCachingTest.java Sun Jan 30 01:49:57 2011
@@ -24,6 +24,8 @@ import java.util.List;
 
 import org.apache.cayenne.DataObject;
 import org.apache.cayenne.DataRow;
+import org.apache.cayenne.cache.MapQueryCache;
+import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.query.QueryCacheStrategy;
 import org.apache.cayenne.query.QueryMetadata;
 import org.apache.cayenne.query.SelectQuery;
@@ -32,13 +34,20 @@ import org.apache.cayenne.unit.CayenneCa
 
 public class DataContextQueryCachingTest extends CayenneCase {
 
+    protected QueryCache oldCache;
     protected DataContext context;
 
     @Override
     protected void setUp() throws Exception {
-        super.setUp();
-
+        oldCache = getDomain().getQueryCache();
+        getDomain().setQueryCache(new MapQueryCache(50));
         context = createDataContextWithSharedCache(true);
+        context.setQueryCache(new MapQueryCache(50));
+    }
+    
+    @Override
+    protected void tearDown() throws Exception {
+        getDomain().setQueryCache(oldCache);
     }
 
     public void testLocalCacheDataRowsRefresh() throws Exception {

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataDomainTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataDomainTest.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataDomainTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataDomainTest.java Sun Jan 30 01:49:57 2011
@@ -23,11 +23,6 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.cayenne.cache.MapQueryCacheFactory;
-import org.apache.cayenne.cache.MockQueryCache;
-import org.apache.cayenne.cache.MockQueryCacheFactory;
-import org.apache.cayenne.cache.QueryCache;
-import org.apache.cayenne.cache.QueryCacheFactory;
 import org.apache.cayenne.event.DefaultEventManager;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.ObjEntity;
@@ -173,27 +168,6 @@ public class DataDomainTest extends Caye
         assertTrue(transaction instanceof ExternalTransaction);
     }
 
-    public void testQueryCache() {
-        DataDomain domain = new DataDomain("X");
-        QueryCache cache = domain.getQueryCache();
-        assertNotNull(cache);
-    }
-
-    public void testQueryCacheFactory() {
-        DataDomain domain = new DataDomain("X");
-        QueryCacheFactory qcFactory = domain.getQueryCacheFactory();
-        assertNotNull(qcFactory);
-        assertTrue(qcFactory instanceof MapQueryCacheFactory);
-
-        domain = new DataDomain("Y");
-        MockQueryCacheFactory f2 = new MockQueryCacheFactory();
-        domain.setQueryCacheFactory(f2);
-        assertSame(f2, domain.getQueryCacheFactory());
-        if (!(domain.getQueryCache() instanceof MockQueryCache)) {
-            fail("Unknown query cache created: " + domain.getQueryCache());
-        }
-    }
-
     public void testShutdown() {
         DataDomain domain = new DataDomain("X");
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/configuration/server/DataContextFactoryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/configuration/server/DataContextFactoryTest.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/configuration/server/DataContextFactoryTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/configuration/server/DataContextFactoryTest.java Sun Jan 30 01:49:57 2011
@@ -20,11 +20,15 @@ package org.apache.cayenne.configuration
 
 import junit.framework.TestCase;
 
+import org.apache.cayenne.BaseContext;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.DataDomain;
+import org.apache.cayenne.cache.MapQueryCache;
+import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Injector;
+import org.apache.cayenne.di.Key;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.event.EventManager;
 import org.apache.cayenne.event.MockEventManager;
@@ -46,6 +50,13 @@ public class DataContextFactoryTest exte
                 binder.bind(JdbcEventLogger.class).to(CommonsJdbcEventLogger.class);
                 binder.bind(DataDomain.class).toInstance(domain);
                 binder.bind(EventManager.class).toInstance(eventManager);
+                binder.bind(QueryCache.class).toInstance(new MapQueryCache(5));
+                binder
+                        .bind(
+                                Key.get(
+                                        QueryCache.class,
+                                        BaseContext.QUERY_CACHE_INJECTION_KEY))
+                        .toInstance(new MapQueryCache(5));
             }
         };
 
@@ -73,6 +84,13 @@ public class DataContextFactoryTest exte
                 binder.bind(JdbcEventLogger.class).to(CommonsJdbcEventLogger.class);
                 binder.bind(DataDomain.class).toInstance(domain);
                 binder.bind(EventManager.class).toInstance(eventManager);
+                binder.bind(QueryCache.class).toInstance(new MapQueryCache(5));
+                binder
+                        .bind(
+                                Key.get(
+                                        QueryCache.class,
+                                        BaseContext.QUERY_CACHE_INJECTION_KEY))
+                        .toInstance(new MapQueryCache(5));
             }
         };
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/remote/RemoteCayenneCase.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/remote/RemoteCayenneCase.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/remote/RemoteCayenneCase.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/remote/RemoteCayenneCase.java Sun Jan 30 01:49:57 2011
@@ -21,6 +21,7 @@ package org.apache.cayenne.remote;
 import org.apache.cayenne.CayenneContext;
 import org.apache.cayenne.access.ClientServerChannel;
 import org.apache.cayenne.access.DataContext;
+import org.apache.cayenne.cache.MapQueryCache;
 import org.apache.cayenne.event.DefaultEventManager;
 import org.apache.cayenne.remote.service.LocalConnection;
 import org.apache.cayenne.unit.AccessStack;
@@ -73,7 +74,9 @@ public abstract class RemoteCayenneCase 
                 // TODO: replace with container managed ClientCase.
                 new DefaultEventManager(0),
                 false);
-        return new CayenneContext(channel, true, true);
+        CayenneContext context = new CayenneContext(channel, true, true);
+        context.setQueryCache(new MapQueryCache(10));
+        return context;
     }
 
     @Override

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/CayenneCase.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/CayenneCase.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/CayenneCase.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/CayenneCase.java Sun Jan 30 01:49:57 2011
@@ -28,10 +28,9 @@ import junit.framework.TestCase;
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.QueryLogger;
 import org.apache.cayenne.access.UnitTestDomain;
+import org.apache.cayenne.cache.MapQueryCache;
 import org.apache.cayenne.conn.DataSourceInfo;
-import org.apache.cayenne.log.CommonsJdbcEventLogger;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.ObjEntity;
@@ -135,7 +134,10 @@ public abstract class CayenneCase extend
 
             // clear cache...
             getDomain().getSharedSnapshotCache().clear();
-            getDomain().getQueryCache().clear();
+
+            if (getDomain().getQueryCache() != null) {
+                getDomain().getQueryCache().clear();
+            }
         }
         DataContext context = getDomain().createDataContext(true);
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/SimpleAccessStack.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/SimpleAccessStack.java?rev=1065167&r1=1065166&r2=1065167&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/SimpleAccessStack.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/SimpleAccessStack.java Sun Jan 30 01:49:57 2011
@@ -40,6 +40,7 @@ import org.apache.cayenne.access.QueryLo
 import org.apache.cayenne.access.UnitTestDomain;
 import org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy;
 import org.apache.cayenne.ashwood.AshwoodEntitySorter;
+import org.apache.cayenne.cache.MapQueryCache;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.dba.QuotingStrategy;
 import org.apache.cayenne.event.DefaultEventManager;
@@ -77,6 +78,7 @@ public class SimpleAccessStack implement
         this.domain = new UnitTestDomain("domain");
         domain.setEventManager(new DefaultEventManager(2));
         domain.setEntitySorter(new AshwoodEntitySorter());
+        domain.setQueryCache(new MapQueryCache(50));
         
         for (DataMap map : maps) {
             initNode(map);