cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dkazimirc...@apache.org
Subject svn commit: r1152790 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src: main/java/org/apache/cayenne/access/ main/java/org/apache/cayenne/configuration/ main/java/org/apache/cayenne/configuration/server/ test/java/org/apache/cayenne/acc...
Date Mon, 01 Aug 2011 14:15:38 GMT
Author: dkazimirchyk
Date: Mon Aug  1 14:15:36 2011
New Revision: 1152790

URL: http://svn.apache.org/viewvc?rev=1152790&view=rev
Log:
CAY-1594 DI extension point: turning on/off cross-ObjectContext synchronization

added ObjectStoreFactory which decides turn sync on or off basing on RuntimeProperties

Added:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/NoSyncObjectStore.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DefaultObjectStoreFactory.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/ObjectStoreFactory.java
Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/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/DataContextSharedCacheEmpiricTest.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/unit/di/server/ServerCaseModule.java

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/NoSyncObjectStore.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/NoSyncObjectStore.java?rev=1152790&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/NoSyncObjectStore.java
(added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/NoSyncObjectStore.java
Mon Aug  1 14:15:36 2011
@@ -0,0 +1,54 @@
+/*****************************************************************
+ *   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.access;
+
+import java.util.Map;
+
+import org.apache.cayenne.Persistent;
+
+/**
+ * An {@link ObjectStore} which doesn't receive notifications 
+ * on parent's {@link DataRowStore} events.
+ * 
+ *  @since 3.1
+ */
+public class NoSyncObjectStore extends ObjectStore {
+    
+    public NoSyncObjectStore(DataRowStore dataRowCache, Map<Object, Persistent> objectMap)
{
+        super(dataRowCache, objectMap);
+    }
+    
+    @Override
+    public void setDataRowCache(DataRowStore dataRowCache) {
+        if (dataRowCache == this.dataRowCache) {
+            return;
+        }
+
+        if (this.dataRowCache != null && this.dataRowCache.getEventManager() != null)
{
+            this.dataRowCache.getEventManager().removeListener(
+                    this,
+                    this.dataRowCache.getSnapshotEventSubject());
+        }
+
+        this.dataRowCache = dataRowCache;
+
+        dataRowCacheSet = dataRowCache != null;
+    }
+
+}

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java?rev=1152790&r1=1152789&r2=1152790&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java
Mon Aug  1 14:15:36 2011
@@ -97,7 +97,7 @@ public class ObjectStore implements Seri
     protected transient DataRowStore dataRowCache;
 
     // used to avoid incorrect on-demand DataRowStore initialization after deserialization
-    private boolean dataRowCacheSet;
+    protected boolean dataRowCacheSet;
 
     private Collection<GraphDiff> lifecycleEventInducedChanges;
 

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DefaultObjectStoreFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DefaultObjectStoreFactory.java?rev=1152790&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DefaultObjectStoreFactory.java
(added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/DefaultObjectStoreFactory.java
Mon Aug  1 14:15:36 2011
@@ -0,0 +1,55 @@
+/*****************************************************************
+ *   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.configuration;
+
+import java.util.Map;
+
+import org.apache.cayenne.Persistent;
+import org.apache.cayenne.access.DataRowStore;
+import org.apache.cayenne.access.NoSyncObjectStore;
+import org.apache.cayenne.access.ObjectMapRetainStrategy;
+import org.apache.cayenne.access.ObjectStore;
+import org.apache.cayenne.di.Inject;
+
+/**
+ * A default implementation of {@link ObjectStoreFactory} which makes decision to
+ * turn {@link ObjectStore}'s syncing with parent {@link DataRowStore} on or off 
+ * basing on {@link RuntimeProperties}.
+ * 
+ * @since 3.1
+ */
+public class DefaultObjectStoreFactory implements ObjectStoreFactory {
+    
+    @Inject
+    protected RuntimeProperties runtimeProperties;
+    
+    @Inject
+    protected ObjectMapRetainStrategy retainStrategy;
+    
+    public ObjectStore createObjectStore(DataRowStore dataRowCache) {
+        return createObjectStore(dataRowCache, retainStrategy.createObjectMap());
+    }
+
+    public ObjectStore  createObjectStore(DataRowStore dataRowCache, Map<Object, Persistent>
objectMap) {
+        boolean sync = runtimeProperties.getBoolean(SYNC_PROPERTY, true);
+        
+        return sync ? new ObjectStore(dataRowCache, objectMap) 
+                : new NoSyncObjectStore(dataRowCache, objectMap);
+    }
+}

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/ObjectStoreFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/ObjectStoreFactory.java?rev=1152790&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/ObjectStoreFactory.java
(added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/ObjectStoreFactory.java
Mon Aug  1 14:15:36 2011
@@ -0,0 +1,46 @@
+/*****************************************************************
+ *   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.configuration;
+
+import java.util.Map;
+
+import org.apache.cayenne.Persistent;
+import org.apache.cayenne.access.DataRowStore;
+import org.apache.cayenne.access.ObjectStore;
+
+/**
+ * A factory for creating {@link ObjectStore}s.
+ * 
+ * @since 3.1
+ */
+public interface ObjectStoreFactory {
+    
+    static final String SYNC_PROPERTY = "org.apache.cayenne.sync_contexts";
+    
+    /**
+     * Creates an {@link ObjectStore} with provided dataRowCache
+     */
+    ObjectStore createObjectStore(DataRowStore dataRowCache);
+    
+    /**
+     * Creates an {@link ObjectStore} with provided dataRowCache and objectMap
+     */
+    ObjectStore createObjectStore(DataRowStore dataRowCache, Map<Object, Persistent>
objectMap);
+
+}

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=1152790&r1=1152789&r2=1152790&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
Mon Aug  1 14:15:36 2011
@@ -24,10 +24,10 @@ 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.ObjectMapRetainStrategy;
 import org.apache.cayenne.access.ObjectStore;
 import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.configuration.ObjectContextFactory;
+import org.apache.cayenne.configuration.ObjectStoreFactory;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.di.Key;
@@ -48,7 +48,7 @@ public class DataContextFactory implemen
     protected Injector injector;
     
     @Inject
-    protected ObjectMapRetainStrategy retainStrategy;
+    protected ObjectStoreFactory objectStoreFactory;
 
     public ObjectContext createContext() {
         return createdFromDataDomain(dataDomain);
@@ -78,8 +78,8 @@ public class DataContextFactory implemen
                 dataDomain.getProperties(),
                 eventManager);
 
-        DataContext context = new DataContext(parent, new ObjectStore(snapshotCache, 
-                retainStrategy.createObjectMap()));
+        DataContext context = new DataContext(
+                parent, objectStoreFactory.createObjectStore(snapshotCache));
         context.setValidatingObjectsOnCommit(dataDomain.isValidatingObjectsOnCommit());
         context.setQueryCache(injector.getInstance(Key.get(
                 QueryCache.class,
@@ -90,7 +90,7 @@ public class DataContextFactory implemen
     protected ObjectContext createFromDataContext(DataContext parent) {
         // child ObjectStore should not have direct access to snapshot cache, so do not
         // pass it in constructor.
-        ObjectStore objectStore = new ObjectStore(null, retainStrategy.createObjectMap());
+        ObjectStore objectStore = objectStoreFactory.createObjectStore(null);
 
         DataContext context = new DataContext(parent, objectStore);
 
@@ -111,8 +111,8 @@ public class DataContextFactory implemen
                 .getSharedSnapshotCache() : new DataRowStore(parent.getName(), parent
                 .getProperties(), eventManager);
 
-        DataContext context = new DataContext(parent, new ObjectStore(snapshotCache, 
-                retainStrategy.createObjectMap()));
+        DataContext context = new DataContext(
+                parent, objectStoreFactory.createObjectStore(snapshotCache));
         context.setValidatingObjectsOnCommit(parent.isValidatingObjectsOnCommit());
         context.setQueryCache(injector.getInstance(Key.get(
                 QueryCache.class,

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=1152790&r1=1152789&r2=1152790&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
Mon Aug  1 14:15:36 2011
@@ -39,8 +39,10 @@ import org.apache.cayenne.configuration.
 import org.apache.cayenne.configuration.DefaultAdhocObjectFactory;
 import org.apache.cayenne.configuration.DefaultConfigurationNameMapper;
 import org.apache.cayenne.configuration.DefaultDataChannelDescriptorMerger;
+import org.apache.cayenne.configuration.DefaultObjectStoreFactory;
 import org.apache.cayenne.configuration.DefaultRuntimeProperties;
 import org.apache.cayenne.configuration.ObjectContextFactory;
+import org.apache.cayenne.configuration.ObjectStoreFactory;
 import org.apache.cayenne.configuration.RuntimeProperties;
 import org.apache.cayenne.configuration.XMLDataChannelDescriptorLoader;
 import org.apache.cayenne.configuration.XMLDataMapLoader;
@@ -186,5 +188,8 @@ public class ServerModule implements Mod
         
         // a default ObjectMapRetainStrategy used to create objects map for ObjectStore
         binder.bind(ObjectMapRetainStrategy.class).to(DefaultObjectMapRetainStrategy.class);
+        
+        // a default ObjectStoreFactory used to create ObjectStores for contexts
+        binder.bind(ObjectStoreFactory.class).to(DefaultObjectStoreFactory.class);
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricTest.java?rev=1152790&r1=1152789&r2=1152790&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricTest.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricTest.java
Mon Aug  1 14:15:36 2011
@@ -23,6 +23,7 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.cayenne.DataRow;
+import org.apache.cayenne.configuration.ObjectStoreFactory;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.event.DefaultEventManager;
@@ -41,6 +42,9 @@ public class DataContextSharedCacheEmpir
 
     @Inject
     private ServerRuntime runtime;
+    
+    @Inject
+    private ObjectStoreFactory objectStoreFactory;
 
     @Inject
     private DBHelper dbHelper;
@@ -61,8 +65,10 @@ public class DataContextSharedCacheEmpir
                 Collections.EMPTY_MAP,
                 new DefaultEventManager());
 
-        c1 = new DataContext(runtime.getDataDomain(), new ObjectStore(cache));
-        c2 = new DataContext(runtime.getDataDomain(), new ObjectStore(cache));
+        c1 = new DataContext(runtime.getDataDomain(), 
+                objectStoreFactory.createObjectStore(cache));
+        c2 = new DataContext(runtime.getDataDomain(), 
+                objectStoreFactory.createObjectStore(cache));
 
         // prepare a single artist record
         TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");

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=1152790&r1=1152789&r2=1152790&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
Mon Aug  1 14:15:36 2011
@@ -29,7 +29,9 @@ import org.apache.cayenne.access.Default
 import org.apache.cayenne.access.ObjectMapRetainStrategy;
 import org.apache.cayenne.cache.MapQueryCache;
 import org.apache.cayenne.cache.QueryCache;
+import org.apache.cayenne.configuration.DefaultObjectStoreFactory;
 import org.apache.cayenne.configuration.DefaultRuntimeProperties;
+import org.apache.cayenne.configuration.ObjectStoreFactory;
 import org.apache.cayenne.configuration.RuntimeProperties;
 import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.DIBootstrap;
@@ -60,6 +62,7 @@ public class DataContextFactoryTest exte
                 binder.bind(RuntimeProperties.class).toInstance(
                         new DefaultRuntimeProperties(Collections.EMPTY_MAP));
                 binder.bind(ObjectMapRetainStrategy.class).to(DefaultObjectMapRetainStrategy.class);
+                binder.bind(ObjectStoreFactory.class).to(DefaultObjectStoreFactory.class);
                 binder
                         .bind(
                                 Key.get(
@@ -97,6 +100,7 @@ public class DataContextFactoryTest exte
                 binder.bind(RuntimeProperties.class).toInstance(
                         new DefaultRuntimeProperties(Collections.EMPTY_MAP));
                 binder.bind(ObjectMapRetainStrategy.class).to(DefaultObjectMapRetainStrategy.class);
+                binder.bind(ObjectStoreFactory.class).to(DefaultObjectStoreFactory.class);
                 binder
                         .bind(
                                 Key.get(

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java?rev=1152790&r1=1152789&r2=1152790&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java
Mon Aug  1 14:15:36 2011
@@ -23,9 +23,15 @@ import javax.sql.DataSource;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.access.DefaultObjectMapRetainStrategy;
+import org.apache.cayenne.access.ObjectMapRetainStrategy;
 import org.apache.cayenne.access.jdbc.BatchQueryBuilderFactory;
 import org.apache.cayenne.configuration.AdhocObjectFactory;
 import org.apache.cayenne.configuration.DefaultAdhocObjectFactory;
+import org.apache.cayenne.configuration.DefaultObjectStoreFactory;
+import org.apache.cayenne.configuration.DefaultRuntimeProperties;
+import org.apache.cayenne.configuration.ObjectStoreFactory;
+import org.apache.cayenne.configuration.RuntimeProperties;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.conn.DataSourceInfo;
 import org.apache.cayenne.dba.DbAdapter;
@@ -114,9 +120,13 @@ public class ServerCaseModule implements
                 IngresUnitDbAdapter.class.getName()).put(
                 SQLiteAdapter.class.getName(),
                 SQLiteUnitDbAdapter.class.getName());
+        binder.bindMap(DefaultRuntimeProperties.PROPERTIES_MAP);
 
         binder.bind(SchemaBuilder.class).to(SchemaBuilder.class);
         binder.bind(JdbcEventLogger.class).to(CommonsJdbcEventLogger.class);
+        binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
+        binder.bind(ObjectMapRetainStrategy.class).to(
+                DefaultObjectMapRetainStrategy.class);
 
         // singleton objects
         binder.bind(UnitTestLifecycleManager.class).toInstance(
@@ -143,6 +153,7 @@ public class ServerCaseModule implements
         binder.bind(ServerCaseDataSourceFactory.class).to(
                 ServerCaseDataSourceFactory.class);
         binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
+        binder.bind(ObjectStoreFactory.class).to(DefaultObjectStoreFactory.class);
 
         // test-scoped objects
         binder.bind(EntityResolver.class).toProvider(



Mime
View raw message