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 2010/08/29 16:03:22 UTC

svn commit: r990579 - in /cayenne/main/trunk: framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/ framework/cayenne-di-unpublished/src/test/java/org/apache/cayenne/di/spi/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/...

Author: aadamchik
Date: Sun Aug 29 14:03:22 2010
New Revision: 990579

URL: http://svn.apache.org/viewvc?rev=990579&view=rev
Log:
CAY-1479 EntitySorter refactoring: make it DI-based, internalize Ashowood lib

* removed EntitySorter from DataNode (there was no clean refactoring path that would not require a creation of a bunch of extra objects)
* (unrelated refactoring) deprecated DataDomain addMap,removeMap, replacing them with properly named addDataMap, removeDataMap
* injectable EntitySorter
* preventing direct injection into DataDomain ... This seems to be an anti-pattern with our DI implementation, as using 'injectMembers'
  inside a provider code causes double injection

TODO: no Ashwood internalizing is done in this commit

Modified:
    cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/Injector.java
    cayenne/main/trunk/framework/cayenne-di-unpublished/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorTest.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/access/DataNode.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.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/main/java/org/apache/cayenne/map/AshwoodEntitySorter.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/NamedObjectFactory.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/access/DbGeneratorTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/MockDataNode.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/EntityResolverTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/merge/MergeCase.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/SimpleAccessStack.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/jira/CAY_207Test.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/jira/CAY_743Test.java
    cayenne/main/trunk/itests/cayenne-runtime-itest/src/test/java/org/apache/cayenne/configuration/server/ServerRuntimeIntegrationTest.java

Modified: cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/Injector.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/Injector.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/Injector.java (original)
+++ cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/Injector.java Sun Aug 29 14:03:22 2010
@@ -49,8 +49,12 @@ public interface Injector {
     /**
      * Performs field injection on a given object, ignoring constructor injection. Since
      * Cayenne DI injector returns fully injected objects, this method is rarely used
-     * directly. One possible use is in custom DI providers, another is in unit tests to
-     * initialize tested objects that are relying on field injecton.
+     * directly.
+     * <p>
+     * Note that using this method inside a custom DI {@link Provider} will most likely
+     * result in double injection, as custom provider is wrapped in a field-injecting
+     * provider by the DI container. Instead custom providers must initialize object
+     * properties manually, obtaining dependencies from Injector.
      */
     void injectMembers(Object object);
 

Modified: cayenne/main/trunk/framework/cayenne-di-unpublished/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-di-unpublished/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorTest.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-di-unpublished/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-di-unpublished/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorTest.java Sun Aug 29 14:03:22 2010
@@ -22,7 +22,6 @@ import junit.framework.TestCase;
 
 import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Module;
-import org.apache.cayenne.di.BeforeScopeEnd;
 import org.apache.cayenne.di.mock.MockImplementation1_EventAnnotations;
 import org.apache.cayenne.di.mock.MockInterface1;
 

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=990579&r1=990578&r2=990579&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 Aug 29 14:03:22 2010
@@ -36,11 +36,9 @@ import org.apache.cayenne.cache.MapQuery
 import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.cache.QueryCacheFactory;
 import org.apache.cayenne.configuration.ObjectContextFactory;
-import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.event.EventManager;
 import org.apache.cayenne.graph.CompoundDiff;
 import org.apache.cayenne.graph.GraphDiff;
-import org.apache.cayenne.map.AshwoodEntitySorter;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.map.EntitySorter;
@@ -100,7 +98,6 @@ public class DataDomain implements Query
     /**
      * @since 1.2
      */
-    @Inject
     protected EventManager eventManager;
 
     /**
@@ -158,22 +155,10 @@ public class DataDomain implements Query
      * @since 3.1
      */
     public EntitySorter getEntitySorter() {
-
-        if (entitySorter == null) {
-            synchronized (this) {
-                if (entitySorter == null) {
-                    entitySorter = new AshwoodEntitySorter(getDataMaps());
-                }
-            }
-        }
-
         return entitySorter;
     }
 
     /**
-     * Exists as a backdoor to override domain sorter until the sorter API is moved from
-     * DataNode.
-     * 
      * @since 3.1
      */
     public void setEntitySorter(EntitySorter entitySorter) {
@@ -427,23 +412,54 @@ public class DataDomain implements Query
         }
     }
 
-    /** Registers new DataMap with this domain. */
+    /**
+     * Registers new DataMap with this domain.
+     * 
+     * @deprecated since 3.1 use a more consistently named {@link #addDataMap(DataMap)}.
+     */
     public void addMap(DataMap map) {
-        getEntityResolver().addDataMap(map);
-        entitySorter = null;
+        addDataMap(map);
+    }
+
+    public void addDataMap(DataMap dataMap) {
+        getEntityResolver().addDataMap(dataMap);
+        refreshEntitySorter();
     }
 
-    /** Returns DataMap matching <code>name</code> parameter. */
+    /**
+     * Returns DataMap matching <code>name</code> parameter.
+     * 
+     * @deprecated since 3.1 use a more consistently named {@link #getDataMap(String)}.
+     */
     public DataMap getMap(String mapName) {
         return getEntityResolver().getDataMap(mapName);
     }
 
     /**
+     * @since 3.1
+     */
+    public DataMap getDataMap(String mapName) {
+        return getEntityResolver().getDataMap(mapName);
+    }
+
+    /**
+     * Removes named DataMap from this DataDomain and any underlying DataNodes that
+     * include it.
+     * 
+     * @deprecated since 3.1 use a more consistently named {@link #removeDataMap(String)}.
+     */
+    public void removeMap(String mapName) {
+        removeDataMap(mapName);
+    }
+
+    /**
      * Removes named DataMap from this DataDomain and any underlying DataNodes that
      * include it.
+     * 
+     * @since 3.1
      */
-    public synchronized void removeMap(String mapName) {
-        DataMap map = getMap(mapName);
+    public synchronized void removeDataMap(String mapName) {
+        DataMap map = getDataMap(mapName);
         if (map == null) {
             return;
         }
@@ -455,10 +471,10 @@ public class DataDomain implements Query
 
         // remove from EntityResolver
         getEntityResolver().removeDataMap(map);
-        entitySorter = null;
 
         // reindex nodes to remove references on removed map entities
         reindexNodes();
+        refreshEntitySorter();
     }
 
     /**
@@ -524,15 +540,13 @@ public class DataDomain implements Query
 
         // add node to name->node map
         nodes.put(node.getName(), node);
-        node.setEntityResolver(this.getEntityResolver());
+        node.setEntityResolver(getEntityResolver());
 
         // add node to "ent name->node" map
         for (DataMap map : node.getDataMaps()) {
-            this.addMap(map);
-            this.nodesByDataMapName.put(map.getName(), node);
+            addDataMap(map);
+            nodesByDataMapName.put(map.getName(), node);
         }
-
-        entitySorter = null;
     }
 
     /**
@@ -604,7 +618,7 @@ public class DataDomain implements Query
 
         for (DataNode node : getDataNodes()) {
             for (DataMap map : node.getDataMaps()) {
-                addMap(map);
+                addDataMap(map);
                 nodesByDataMapName.put(map.getName(), node);
             }
         }
@@ -901,4 +915,10 @@ public class DataDomain implements Query
     public BatchQueryBuilderFactory getQueryBuilderFactory() {
         return queryBuilderFactory;
     }
+    
+    void refreshEntitySorter() {
+        if(entitySorter != null) {
+            entitySorter.setDataMaps(getDataMaps());
+        }
+    }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNode.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNode.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNode.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataNode.java Sun Aug 29 14:03:22 2010
@@ -34,10 +34,8 @@ import org.apache.cayenne.access.dbsync.
 import org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy;
 import org.apache.cayenne.conn.PoolManager;
 import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.map.AshwoodEntitySorter;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.map.EntitySorter;
 import org.apache.cayenne.query.Query;
 
 /**
@@ -54,11 +52,6 @@ public class DataNode implements QueryEn
     protected String schemaUpdateStrategyName;
     protected EntityResolver entityResolver;
     protected SchemaUpdateStrategy schemaUpdateStrategy;
-
-    /**
-     * @deprecated since 3.1 EntitySorter is located at the DataDomain level.
-     */
-    protected EntitySorter entitySorter;
     protected Map<String, DataMap> dataMaps;
 
     TransactionDataSource readThroughDataSource;
@@ -108,11 +101,6 @@ public class DataNode implements QueryEn
         this.name = name;
         this.dataMaps = new HashMap<String, DataMap>();
         this.readThroughDataSource = new TransactionDataSource();
-
-        // since 1.2 we always implement entity sorting, regardless of the underlying DB
-        // as the right order is needed for deferred PK propagation (and maybe other
-        // things too?)
-        this.entitySorter = new AshwoodEntitySorter(Collections.EMPTY_LIST);
     }
 
     /**
@@ -167,8 +155,6 @@ public class DataNode implements QueryEn
         for (DataMap map : dataMaps) {
             this.dataMaps.put(map.getName(), map);
         }
-
-        entitySorter.setDataMaps(dataMaps);
     }
 
     /**
@@ -176,15 +162,10 @@ public class DataNode implements QueryEn
      */
     public void addDataMap(DataMap map) {
         this.dataMaps.put(map.getName(), map);
-
-        entitySorter.setDataMaps(getDataMaps());
     }
 
     public void removeDataMap(String mapName) {
-        DataMap map = dataMaps.remove(mapName);
-        if (map != null) {
-            entitySorter.setDataMaps(getDataMaps());
-        }
+        dataMaps.remove(mapName);
     }
 
     /**
@@ -315,25 +296,6 @@ public class DataNode implements QueryEn
     }
 
     /**
-     * Returns EntitySorter used by the DataNode.
-     * 
-     * @deprecated since 3.1 EntitySorter only exists at the DataDomain level.
-     */
-    public EntitySorter getEntitySorter() {
-        return entitySorter;
-    }
-
-    /**
-     * Sets an EntitySorter that is used to order objects on commit.
-     * 
-     * @since 1.2
-     * @deprecated since 3.1 EntitySorter only exists at the DataDomain level.
-     */
-    public void setEntitySorter(EntitySorter entitySorter) {
-        this.entitySorter = entitySorter;
-    }
-
-    /**
      * Tries to close JDBC connections opened by this node's data source.
      */
     public synchronized void shutdown() {
@@ -361,7 +323,7 @@ public class DataNode implements QueryEn
                 schemaUpdateStrategy.updateSchema(DataNode.this);
             }
             Transaction t = Transaction.getThreadTransaction();
-            
+
             if (t != null) {
                 String key = CONNECTION_RESOURCE_PREFIX + name;
                 Connection c = t.getConnection(key);
@@ -377,7 +339,6 @@ public class DataNode implements QueryEn
                 return new TransactionConnectionDecorator(c);
             }
 
-           
             return dataSource.getConnection();
         }
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java Sun Aug 29 14:03:22 2010
@@ -36,7 +36,9 @@ import org.apache.cayenne.configuration.
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.di.Provider;
+import org.apache.cayenne.event.EventManager;
 import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.EntitySorter;
 import org.apache.cayenne.resource.Resource;
 import org.apache.cayenne.resource.ResourceLocator;
 import org.apache.commons.logging.Log;
@@ -149,12 +151,14 @@ public class DataDomainProvider implemen
 
         DataChannelDescriptor descriptor = tree.getRootNode();
         DataDomain dataDomain = createDataDomain(descriptor.getName());
-        injector.injectMembers(dataDomain);
+        
+        dataDomain.setEntitySorter(injector.getInstance(EntitySorter.class));
+        dataDomain.setEventManager(injector.getInstance(EventManager.class));
 
         dataDomain.initWithProperties(descriptor.getProperties());
 
         for (DataMap dataMap : descriptor.getDataMaps()) {
-            dataDomain.addMap(dataMap);
+            dataDomain.addDataMap(dataMap);
         }
 
         for (DataNodeDescriptor nodeDescriptor : descriptor.getNodeDescriptors()) {
@@ -193,7 +197,7 @@ public class DataDomainProvider implemen
 
             // DataMaps
             for (String dataMapName : nodeDescriptor.getDataMapNames()) {
-                dataNode.addDataMap(dataDomain.getMap(dataMapName));
+                dataNode.addDataMap(dataDomain.getDataMap(dataMapName));
             }
 
             dataDomain.addNode(dataNode);

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=990579&r1=990578&r2=990579&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 Aug 29 14:03:22 2010
@@ -50,6 +50,8 @@ import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.event.DefaultEventManager;
 import org.apache.cayenne.event.EventManager;
+import org.apache.cayenne.map.AshwoodEntitySorter;
+import org.apache.cayenne.map.EntitySorter;
 import org.apache.cayenne.resource.ClassLoaderResourceLocator;
 import org.apache.cayenne.resource.ResourceLocator;
 
@@ -133,5 +135,9 @@ public class ServerModule implements Mod
 
         // a default DBAdapterFactory used to load custom and automatic DbAdapters
         binder.bind(DbAdapterFactory.class).to(DefaultDbAdapterFactory.class);
+
+        // binding AshwoodEntitySorter without scope, as this is a stateful object and is
+        // configured by the owning domain
+        binder.bind(EntitySorter.class).to(AshwoodEntitySorter.class).withoutScope();
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/AshwoodEntitySorter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/AshwoodEntitySorter.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/AshwoodEntitySorter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/AshwoodEntitySorter.java Sun Aug 29 14:03:22 2010
@@ -70,11 +70,16 @@ public class AshwoodEntitySorter impleme
     // used for lazy initialization
     protected boolean dirty;
 
-    public AshwoodEntitySorter(Collection<DataMap> dataMaps) {
+    public AshwoodEntitySorter() {
         tableComparator = new TableComparator();
         dbEntityComparator = new DbEntityComparator();
         objEntityComparator = new ObjEntityComparator();
+        dirty = true;
+        dataMaps = Collections.EMPTY_LIST;
+    }
 
+    public AshwoodEntitySorter(Collection<DataMap> dataMaps) {
+        this();
         setDataMaps(dataMaps);
     }
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/NamedObjectFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/NamedObjectFactory.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/NamedObjectFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/NamedObjectFactory.java Sun Aug 29 14:03:22 2010
@@ -230,7 +230,7 @@ public abstract class NamedObjectFactory
 
             if (namingContext instanceof DataDomain) {
                 DataDomain domain = (DataDomain) namingContext;
-                return domain.getMap(name) != null;
+                return domain.getDataMap(name) != null;
             }
 
             if (namingContext instanceof DataChannelDescriptor) {

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=990579&r1=990578&r2=990579&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 Aug 29 14:03:22 2010
@@ -45,7 +45,7 @@ public class DataDomainTest extends Caye
         assertEquals("tst_name", domain.getName());
     }
 
-    public void testNodes() throws java.lang.Exception {
+    public void testNodes() throws Exception {
         DataDomain domain = new DataDomain("dom1");
         assertEquals(0, domain.getDataNodes().size());
         domain.addNode(new DataNode("1"));
@@ -54,26 +54,26 @@ public class DataDomainTest extends Caye
         assertEquals(2, domain.getDataNodes().size());
     }
 
-    public void testNodeMaps() throws java.lang.Exception {
+    public void testNodeMaps() throws Exception {
         DataDomain domain = new DataDomain("dom1");
-        assertNull(domain.getMap("map"));
+        assertNull(domain.getDataMap("map"));
 
         DataNode node = new DataNode("1");
         node.addDataMap(new DataMap("map"));
 
         domain.addNode(node);
-        assertNotNull(domain.getMap("map"));
+        assertNotNull(domain.getDataMap("map"));
     }
 
-    public void testMaps() throws java.lang.Exception {
+    public void testMaps() throws Exception {
         DataDomain d1 = new DataDomain("dom1");
 
         DataMap m1 = new DataMap("m1");
-        d1.addMap(m1);
-        assertSame(m1, d1.getMap(m1.getName()));
+        d1.addDataMap(m1);
+        assertSame(m1, d1.getDataMap(m1.getName()));
 
-        d1.removeMap(m1.getName());
-        assertNull(d1.getMap(m1.getName()));
+        d1.removeDataMap(m1.getName());
+        assertNull(d1.getDataMap(m1.getName()));
     }
 
     public void testReindexNodes() throws Exception {
@@ -102,7 +102,7 @@ public class DataDomainTest extends Caye
         ObjEntity entity = new ObjEntity("TestEntity");
         map.addObjEntity(entity);
 
-        domain.addMap(map);
+        domain.addDataMap(map);
 
         assertSame(entity, resolver.getObjEntity("TestEntity"));
     }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbGeneratorTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbGeneratorTest.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbGeneratorTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbGeneratorTest.java Sun Aug 29 14:03:22 2010
@@ -35,7 +35,7 @@ public class DbGeneratorTest extends Cay
     public void setUp() throws Exception {
         super.setUp();
 
-        gen = new DbGenerator(getNode().getAdapter(), getDomain().getMap("testmap"));
+        gen = new DbGenerator(getNode().getAdapter(), getDomain().getDataMap("testmap"));
     }
 
     public void testAdapter() throws Exception {
@@ -43,7 +43,7 @@ public class DbGeneratorTest extends Cay
     }
 
     public void testPkFilteringLogic() throws Exception {
-        DataMap map = getDomain().getMap("testmap");
+        DataMap map = getDomain().getDataMap("testmap");
         DbEntity artistExhibit = map.getDbEntity("ARTIST_EXHIBIT");
         DbEntity exhibit = map.getDbEntity("EXHIBIT");
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/MockDataNode.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/MockDataNode.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/MockDataNode.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/MockDataNode.java Sun Aug 29 14:03:22 2010
@@ -30,7 +30,6 @@ import javax.sql.DataSource;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.map.EntitySorter;
 import org.apache.cayenne.query.Query;
 
 public class MockDataNode extends DataNode {
@@ -150,14 +149,6 @@ public class MockDataNode extends DataNo
         return node.getEntityResolver();
     }
 
-    /**
-     * @deprecated since 3.1
-     */
-    @Override
-    public EntitySorter getEntitySorter() {
-        return node.getEntitySorter();
-    }
-
     @Override
     public String getName() {
         return node.getName();
@@ -199,11 +190,6 @@ public class MockDataNode extends DataNo
     }
 
     @Override
-    public void setEntitySorter(EntitySorter entitySorter) {
-        node.setEntitySorter(entitySorter);
-    }
-
-    @Override
     public void setName(String name) {
         node.setName(name);
     }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java Sun Aug 29 14:03:22 2010
@@ -54,7 +54,9 @@ import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.event.EventManager;
 import org.apache.cayenne.event.MockEventManager;
+import org.apache.cayenne.map.AshwoodEntitySorter;
 import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.EntitySorter;
 import org.apache.cayenne.resource.Resource;
 import org.apache.cayenne.resource.ResourceLocator;
 import org.apache.cayenne.resource.mock.MockResource;
@@ -117,6 +119,7 @@ public class DataDomainProviderTest exte
 
             public void configure(Binder binder) {
                 binder.bind(EventManager.class).toInstance(eventManager);
+                binder.bind(EntitySorter.class).toInstance(new AshwoodEntitySorter());
                 binder.bind(ResourceLocator.class).toInstance(locator);
                 binder.bind(RuntimeProperties.class).toInstance(testProperties);
                 binder.bind(ConfigurationNameMapper.class).to(

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterTest.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterTest.java Sun Aug 29 14:03:22 2010
@@ -28,7 +28,7 @@ import org.apache.cayenne.unit.CayenneCa
 public class OracleAdapterTest extends CayenneCase {
 
     public void testUpdatesLOBColumns() throws Exception {
-        DataMap map = getDomain().getMap("testmap");
+        DataMap map = getDomain().getDataMap("testmap");
         assertTrue(OracleAdapter.updatesLOBColumns(new InsertBatchQuery(map
                 .getDbEntity("BLOB_TEST"), 1)));
         assertTrue(OracleAdapter.updatesLOBColumns(new InsertBatchQuery(map

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/EntityResolverTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/EntityResolverTest.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/EntityResolverTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/EntityResolverTest.java Sun Aug 29 14:03:22 2010
@@ -42,7 +42,7 @@ public class EntityResolverTest extends 
                 .getResources()
                 .getAccessStack("GenericStack");
 
-        DataMap generic = stack.getDataDomain().getMap("generic");
+        DataMap generic = stack.getDataDomain().getDataMap("generic");
         EntityResolver resolver = new EntityResolver(Collections.singleton(generic));
 
         ObjEntity g1 = resolver.getObjEntity("Generic1");

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/merge/MergeCase.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/merge/MergeCase.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/merge/MergeCase.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/merge/MergeCase.java Sun Aug 29 14:03:22 2010
@@ -34,6 +34,7 @@ import org.apache.cayenne.access.DataDom
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.QueryLogger;
 import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.map.AshwoodEntitySorter;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
@@ -46,7 +47,7 @@ import org.xml.sax.InputSource;
 
 public class MergeCase extends CayenneCase {
 
-    protected DataDomain dom;
+    protected DataDomain domain;
     protected DataNode node;
     protected DataMap map;
 
@@ -83,7 +84,7 @@ public class MergeCase extends CayenneCa
         
         // clone DataMap by saving and loading from XML as to avoid modifying shared test
         // DataMap
-        DataMap originalMap = getDomain().getMap("testmap");
+        DataMap originalMap = getDomain().getDataMap("testmap");
         StringWriter out = new StringWriter();
         PrintWriter outWriter = new PrintWriter(out);
         originalMap.encodeAsXML(outWriter);
@@ -100,8 +101,9 @@ public class MergeCase extends CayenneCa
         node.setDataSource(orgNode.getDataSource());
         node.addDataMap(map);
         
-        dom = new DataDomain("mergetestdomain");
-        dom.addNode(node);
+        domain = new DataDomain("mergetestdomain");
+        domain.setEntitySorter(new AshwoodEntitySorter());
+        domain.addNode(node);
 
         filterDataMap(node, map);
 
@@ -258,7 +260,7 @@ public class MergeCase extends CayenneCa
     
     @Override
     protected DataContext createDataContext() {
-        return dom.createDataContext();
+        return domain.createDataContext();
     }
 
     @Override

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=990579&r1=990578&r2=990579&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 Aug 29 14:03:22 2010
@@ -42,6 +42,7 @@ import org.apache.cayenne.access.dbsync.
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.dba.QuotingStrategy;
 import org.apache.cayenne.event.DefaultEventManager;
+import org.apache.cayenne.map.AshwoodEntitySorter;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
@@ -75,6 +76,8 @@ public class SimpleAccessStack implement
         this.resources = resources;
         this.domain = new UnitTestDomain("domain");
         domain.setEventManager(new DefaultEventManager(2));
+        domain.setEntitySorter(new AshwoodEntitySorter());
+        
         for (DataMap map : maps) {
             initNode(map);
         }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/jira/CAY_207Test.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/jira/CAY_207Test.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/jira/CAY_207Test.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/jira/CAY_207Test.java Sun Aug 29 14:03:22 2010
@@ -19,10 +19,6 @@
 
 package org.apache.cayenne.unit.jira;
 
-import java.util.List;
-import java.util.Map;
-
-import org.apache.cayenne.DataObjectUtils;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.DataDomain;
 import org.apache.cayenne.access.DataNode;
@@ -31,7 +27,6 @@ import org.apache.cayenne.exp.Expression
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.testdo.inherit.Manager;
 import org.apache.cayenne.unit.PeopleCase;
 
@@ -172,7 +167,7 @@ public class CAY_207Test extends PeopleC
         prepareDataMap();
 
         DataDomain domain = getDomain();
-        DataNode node = domain.lookupDataNode(domain.getMap("people"));
+        DataNode node = domain.lookupDataNode(domain.getDataMap("people"));
         domain.removeDataNode(node.getName());
 
         node.addDataMap(testMap);
@@ -185,8 +180,8 @@ public class CAY_207Test extends PeopleC
 
     protected void cleanup(DataContext context) {
         DataDomain domain = getDomain();
-        domain.removeMap(testMap.getName());
-        DataNode node = domain.lookupDataNode(domain.getMap("people"));
+        domain.removeDataMap(testMap.getName());
+        DataNode node = domain.lookupDataNode(domain.getDataMap("people"));
 
         ExtendedTypeMap map = node.getAdapter().getExtendedTypes();
         map.unregisterType(CAY_207String1.class.getName());

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/jira/CAY_743Test.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/jira/CAY_743Test.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/jira/CAY_743Test.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/jira/CAY_743Test.java Sun Aug 29 14:03:22 2010
@@ -37,8 +37,8 @@ public class CAY_743Test extends TestCas
         DataDomain domain = injector.getInstance(DataDomain.class);
         assertEquals(2, domain.getDataMaps().size());
 
-        DataMap m1 = domain.getMap("map1");
-        DataMap m2 = domain.getMap("map2");
+        DataMap m1 = domain.getDataMap("map1");
+        DataMap m2 = domain.getDataMap("map2");
 
         ObjEntity oe11 = m1.getObjEntity("Entity11");
         ObjEntity oe12 = m1.getObjEntity("Entity12");

Modified: cayenne/main/trunk/itests/cayenne-runtime-itest/src/test/java/org/apache/cayenne/configuration/server/ServerRuntimeIntegrationTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/itests/cayenne-runtime-itest/src/test/java/org/apache/cayenne/configuration/server/ServerRuntimeIntegrationTest.java?rev=990579&r1=990578&r2=990579&view=diff
==============================================================================
--- cayenne/main/trunk/itests/cayenne-runtime-itest/src/test/java/org/apache/cayenne/configuration/server/ServerRuntimeIntegrationTest.java (original)
+++ cayenne/main/trunk/itests/cayenne-runtime-itest/src/test/java/org/apache/cayenne/configuration/server/ServerRuntimeIntegrationTest.java Sun Aug 29 14:03:22 2010
@@ -20,12 +20,12 @@ package org.apache.cayenne.configuration
 
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.DataDomain;
-import org.apache.cayenne.configuration.server.ServerRuntimeCase;
-import org.apache.cayenne.configuration.server.RuntimeName;
 import org.apache.cayenne.event.DefaultEventManager;
 import org.apache.cayenne.event.EventManager;
 import org.apache.cayenne.itest.di_stack.Table1;
+import org.apache.cayenne.map.EntitySorter;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.test.jdbc.DBHelper;
 
@@ -41,21 +41,48 @@ public class ServerRuntimeIntegrationTes
 		DataDomain domain1 = runtime.getDataDomain();
 		assertNotNull(domain1);
 
+		EventManager eventManager1 = domain1.getEventManager();
+		assertNotNull(eventManager1);
+
+		EntitySorter sorter1 = domain1.getEntitySorter();
+		assertNotNull(sorter1);
+
 		DataDomain domain2 = runtime.getDataDomain();
 		assertNotNull(domain2);
 
+		EventManager eventManager2 = domain2.getEventManager();
+		assertNotNull(eventManager2);
+
+		EntitySorter sorter2 = domain2.getEntitySorter();
+		assertNotNull(sorter2);
+
 		assertSame(domain1, domain2);
+		assertSame(eventManager1, eventManager2);
+		assertSame(sorter1, sorter2);
 	}
 
-	public void testNewContext_notSingleton() {
+	public void testContext_notSingleton() {
 
 		ObjectContext context1 = runtime.getContext();
 		assertNotNull(context1);
+		assertTrue(context1 instanceof DataContext);
+
+		DataDomain domain1 = (DataDomain) context1.getChannel();
+		EventManager eventManager1 = domain1.getEventManager();
+		EntitySorter sorter1 = domain1.getEntitySorter();
 
 		ObjectContext context2 = runtime.getContext();
 		assertNotNull(context2);
+		assertTrue(context2 instanceof DataContext);
+		DataDomain domain2 = (DataDomain) context2.getChannel();
+		EventManager eventManager2 = domain2.getEventManager();
+		EntitySorter sorter2 = domain2.getEntitySorter();
 
 		assertNotSame(context1, context2);
+
+		assertSame(domain1, domain2);
+		assertSame(eventManager1, eventManager2);
+		assertSame(sorter1, sorter2);
 	}
 
 	public void testNewContext_separateObjects() throws Exception {
@@ -77,7 +104,6 @@ public class ServerRuntimeIntegrationTes
 		assertEquals("Abc", o1.getName());
 		assertNotSame(o1, o2);
 		assertEquals(o1.getObjectId(), o2.getObjectId());
-
 	}
 
 	public void testShutdown() throws Exception {