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