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 2012/05/13 13:11:41 UTC

svn commit: r1337846 - in /cayenne/main/trunk/framework: cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/ cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/ cayenne-jdk1.5-unpublished/src/main/java/org/apache/c...

Author: aadamchik
Date: Sun May 13 11:11:40 2012
New Revision: 1337846

URL: http://svn.apache.org/viewvc?rev=1337846&view=rev
Log:
CAY-1706 Build support on JDK 1.7

second patch by Andrei Veprev - hiding JDBC differences between the JDK versions

Added:
    cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/ScopeEventListener.java
      - copied, changed from r1334903, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceProvider.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceFactory.java
Removed:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceProvider.java
Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DelegatingDataSourceFactory.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/PoolManager.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbLoaderPartialTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbLoaderTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/BindDirectiveTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/TypesMappingTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferTest.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/di/server/FlavoredDBHelperProvider.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceFactory.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java

Copied: cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/ScopeEventListener.java (from r1334903, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceProvider.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/ScopeEventListener.java?p2=cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/ScopeEventListener.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceProvider.java&r1=1334903&r2=1337846&rev=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceProvider.java (original)
+++ cayenne/main/trunk/framework/cayenne-di-unpublished/src/main/java/org/apache/cayenne/di/ScopeEventListener.java Sun May 13 11:11:40 2012
@@ -16,24 +16,20 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.di.server;
+package org.apache.cayenne.di;
 
-import javax.sql.DataSource;
 
-import org.apache.cayenne.ConfigurationException;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Provider;
-
-public class ServerCaseSharedDataSourceProvider implements Provider<DataSource> {
-
-    protected ServerCaseDataSourceFactory dataSourceFactory;
-
-    public ServerCaseSharedDataSourceProvider(
-            @Inject ServerCaseDataSourceFactory dataSourceFactory) {
-        this.dataSourceFactory = dataSourceFactory;
-    }
-
-    public DataSource get() throws ConfigurationException {
-        return dataSourceFactory.getSharedDataSource();
-    }
+/**
+ * This interface duplicates default reflection based mechanism for receiving DI events.
+ * It is not fully supported and its usage are reserved for cases when for some reason
+ * it is not possible to use reflection. It is used for example in
+ * {@link javax.sql.DataSource} managing layer to provide compatibility with java version 5.
+ *
+ * @since 3.1
+ */
+public interface ScopeEventListener {
+    /**
+     * Similar to {@link BeforeScopeEnd}
+     */
+    void beforeScopeEnd();
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DelegatingDataSourceFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DelegatingDataSourceFactory.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DelegatingDataSourceFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/configuration/server/DelegatingDataSourceFactory.java Sun May 13 11:11:40 2012
@@ -18,12 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.configuration.server;
 
-import java.lang.reflect.Method;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import javax.sql.DataSource;
-
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.configuration.Constants;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
@@ -31,10 +25,14 @@ import org.apache.cayenne.configuration.
 import org.apache.cayenne.di.AdhocObjectFactory;
 import org.apache.cayenne.di.BeforeScopeEnd;
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.spi.ScopeEventBinding;
+import org.apache.cayenne.di.ScopeEventListener;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import javax.sql.DataSource;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 /**
  * A {@link DataSourceFactory} that delegates DataSource creation to another factory,
  * which is determined dynamically per DataNodeDescriptor. The delegate class may be
@@ -59,10 +57,10 @@ public class DelegatingDataSourceFactory
     @Inject
     protected RuntimeProperties properties;
 
-    protected Map<DataSource, ScopeEventBinding> managedDataSources;
+    protected Map<DataSource, ScopeEventListener> managedDataSources;
 
     public DelegatingDataSourceFactory() {
-        managedDataSources = new ConcurrentHashMap<DataSource, ScopeEventBinding>();
+        managedDataSources = new ConcurrentHashMap<DataSource, ScopeEventListener>();
     }
 
     public DataSource getDataSource(DataNodeDescriptor nodeDescriptor) throws Exception {
@@ -74,8 +72,8 @@ public class DelegatingDataSourceFactory
 
     @BeforeScopeEnd
     public void shutdown() {
-        for (ScopeEventBinding binding : managedDataSources.values()) {
-            binding.onScopeEvent();
+        for (ScopeEventListener listener : managedDataSources.values()) {
+            listener.beforeScopeEnd();
         }
 
         managedDataSources.clear();
@@ -87,25 +85,9 @@ public class DelegatingDataSourceFactory
      */
     protected void attachToScope(DataSource dataSource) {
 
-        // no real thread-safety here, just checking to speed up processing... in the
-        // worst case we'll replace event binding for the same pool with an equivalent one
         if (!managedDataSources.containsKey(dataSource)) {
-
-            Class<BeforeScopeEnd> annotationType = BeforeScopeEnd.class;
-
-            // note that checking for class directly prevents wrapping... will wait till
-            // Java6/JDBC4 upgrade to check for wrappers
-            for (Method method : dataSource.getClass().getMethods()) {
-
-                if (method.isAnnotationPresent(annotationType)) {
-                    managedDataSources.put(dataSource, new ScopeEventBinding(
-                            dataSource,
-                            method));
-
-                    // no need to look further as we are supporting only a single scope
-                    // method
-                    break;
-                }
+            if (dataSource instanceof ScopeEventListener) {
+                managedDataSources.put(dataSource, (ScopeEventListener) dataSource);
             }
         }
     }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/PoolManager.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/PoolManager.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/PoolManager.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/conn/PoolManager.java Sun May 13 11:11:40 2012
@@ -19,6 +19,15 @@
 
 package org.apache.cayenne.conn;
 
+import org.apache.cayenne.CayenneRuntimeException;
+import org.apache.cayenne.di.ScopeEventListener;
+import org.apache.cayenne.log.JdbcEventLogger;
+
+import javax.sql.ConnectionEvent;
+import javax.sql.ConnectionEventListener;
+import javax.sql.ConnectionPoolDataSource;
+import javax.sql.DataSource;
+import javax.sql.PooledConnection;
 import java.io.PrintWriter;
 import java.sql.Connection;
 import java.sql.SQLException;
@@ -28,19 +37,10 @@ import java.util.List;
 import java.util.ListIterator;
 import java.util.logging.Logger;
 
-import javax.sql.ConnectionEvent;
-import javax.sql.ConnectionEventListener;
-import javax.sql.ConnectionPoolDataSource;
-import javax.sql.DataSource;
-import javax.sql.PooledConnection;
-
-import org.apache.cayenne.di.BeforeScopeEnd;
-import org.apache.cayenne.log.JdbcEventLogger;
-
 /**
  * PoolManager is a Cayenne implementation of a pooling DataSource.
  */
-public class PoolManager implements DataSource, ConnectionEventListener {
+public class PoolManager implements ScopeEventListener, DataSource, ConnectionEventListener {
 
     /**
      * Defines a maximum time in milliseconds that a connection request could wait in the
@@ -188,7 +188,6 @@ public class PoolManager implements Data
      * 
      * @since 3.1
      */
-    @BeforeScopeEnd
     public synchronized void shutdown() throws SQLException {
         
         // disposing maintenance thread first to avoid any changes to pools
@@ -222,6 +221,15 @@ public class PoolManager implements Data
         }
     }
 
+    public void beforeScopeEnd() {
+        try {
+            shutdown();
+        }
+        catch (SQLException e) {
+            throw new CayenneRuntimeException("Error while shutting down");
+        }
+    }
+
     protected void disposeOfMaintenanceThread() {
         if (poolMaintenanceThread != null) {
             poolMaintenanceThread.shutdown();

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java Sun May 13 11:11:40 2012
@@ -43,6 +43,7 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.Fault;
 import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.PersistenceState;
+import org.apache.cayenne.configuration.server.DataSourceFactory;
 import org.apache.cayenne.conn.PoolManager;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
@@ -68,6 +69,7 @@ import org.apache.cayenne.unit.UnitDbAda
 import org.apache.cayenne.unit.di.DataChannelInterceptor;
 import org.apache.cayenne.unit.di.UnitTestClosure;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
 @UseServerRuntime(ServerCase.TESTMAP_PROJECT)
@@ -86,7 +88,7 @@ public class DataContextTest extends Ser
     protected DataChannelInterceptor queryInterceptor;
 
     @Inject
-    protected DataSource dataSource;
+    protected ServerCaseDataSourceFactory dataSourceFactory;
 
     protected TableHelper tArtist;
     protected TableHelper tExhibit;
@@ -762,7 +764,7 @@ public class DataContextTest extends Ser
     }
 
     private void changeMaxConnections(int delta) {
-        PoolManager manager = (PoolManager) dataSource;
+        PoolManager manager = (PoolManager) dataSourceFactory.getSharedDataSource();
         manager.setMaxConnections(manager.getMaxConnections() + delta);
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbLoaderPartialTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbLoaderPartialTest.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbLoaderPartialTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbLoaderPartialTest.java Sun May 13 11:11:40 2012
@@ -21,8 +21,6 @@ package org.apache.cayenne.access;
 
 import java.util.Collection;
 
-import javax.sql.DataSource;
-
 import org.apache.cayenne.CayenneException;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.di.Inject;
@@ -30,6 +28,7 @@ import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
 @UseServerRuntime(ServerCase.TESTMAP_PROJECT)
@@ -39,14 +38,14 @@ public class DbLoaderPartialTest extends
     private DbAdapter adapter;
 
     @Inject
-    private DataSource dataSource;
+    private ServerCaseDataSourceFactory dataSourceFactory;
 
     private DbLoader loader;
 
     @Override
     protected void setUpAfterInjection() throws Exception {
         loader = new DbLoader(
-                dataSource.getConnection(),
+                dataSourceFactory.getSharedDataSource().getConnection(),
                 adapter,
                 new DbLoaderDelegate() {
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbLoaderTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbLoaderTest.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbLoaderTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DbLoaderTest.java Sun May 13 11:11:40 2012
@@ -24,8 +24,6 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 
-import javax.sql.DataSource;
-
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.dba.TypesMapping;
@@ -38,6 +36,7 @@ import org.apache.cayenne.map.ObjAttribu
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.unit.UnitDbAdapter;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
 @UseServerRuntime(ServerCase.TESTMAP_PROJECT)
@@ -50,7 +49,7 @@ public class DbLoaderTest extends Server
     private DbAdapter adapter;
 
     @Inject
-    private DataSource dataSource;
+    private ServerCaseDataSourceFactory dataSourceFactory;
 
     @Inject
     private UnitDbAdapter accessStackAdapter;
@@ -59,7 +58,7 @@ public class DbLoaderTest extends Server
 
     @Override
     protected void setUpAfterInjection() throws Exception {
-        loader = new DbLoader(dataSource.getConnection(), adapter, null);
+        loader = new DbLoader(dataSourceFactory.getSharedDataSource().getConnection(), adapter, null);
     }
 
     @Override

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyTest.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyTest.java Sun May 13 11:11:40 2012
@@ -29,8 +29,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import javax.sql.DataSource;
-
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.MockOperationObserver;
@@ -43,6 +41,7 @@ import org.apache.cayenne.map.EntityReso
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
 @UseServerRuntime(ServerCase.DEFAULT_PROJECT)
@@ -55,7 +54,7 @@ public class SchemaUpdateStrategyTest ex
     private DbAdapter adapter;
     
     @Inject
-    private DataSource dataSource;
+    private ServerCaseDataSourceFactory dataSourceFactory;
     
     @Inject
     private JdbcEventLogger jdbcEventLogger;
@@ -267,7 +266,7 @@ public class SchemaUpdateStrategyTest ex
         dataNode.setJdbcEventLogger(jdbcEventLogger);
         dataNode.setDataMaps(colection);
         dataNode.setAdapter(adapter);
-        dataNode.setDataSource(dataSource);
+        dataNode.setDataSource(dataSourceFactory.getSharedDataSource());
         dataNode.setDataSourceFactory(node.getDataSourceFactory());
         dataNode.setSchemaUpdateStrategyName(node.getSchemaUpdateStrategyName());
         dataNode.setEntityResolver(new EntityResolver(colection));

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/BindDirectiveTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/BindDirectiveTest.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/BindDirectiveTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/BindDirectiveTest.java Sun May 13 11:11:40 2012
@@ -29,8 +29,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.sql.DataSource;
-
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.MockOperationObserver;
@@ -43,6 +41,7 @@ import org.apache.cayenne.query.SelectQu
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
 /**
@@ -52,7 +51,7 @@ import org.apache.cayenne.unit.di.server
 public class BindDirectiveTest extends ServerCase {
 
     @Inject
-    private DataSource dataSource;
+    private ServerCaseDataSourceFactory dataSourceFactory;
 
     @Inject
     private JdbcAdapter adapter;
@@ -234,7 +233,7 @@ public class BindDirectiveTest extends S
                 adapter,
                 context.getEntityResolver());
 
-        Connection c = dataSource.getConnection();
+        Connection c = dataSourceFactory.getSharedDataSource().getConnection();
         try {
             MockOperationObserver observer = new MockOperationObserver();
             action.performAction(c, observer);

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionTest.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionTest.java Sun May 13 11:11:40 2012
@@ -26,8 +26,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.sql.DataSource;
-
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.DataNode;
@@ -43,6 +41,7 @@ import org.apache.cayenne.test.jdbc.DBHe
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
 
@@ -50,7 +49,7 @@ import org.apache.cayenne.unit.util.SQLT
 public class SQLTemplateActionTest extends ServerCase {
 
     @Inject
-    protected DataSource dataSource;
+    protected ServerCaseDataSourceFactory dataSourceFactory;
 
     @Inject
     protected DataNode node;
@@ -118,7 +117,7 @@ public class SQLTemplateActionTest exten
         assertTrue(plan instanceof SQLTemplateAction);
 
         MockOperationObserver observer = new MockOperationObserver();
-        Connection c = dataSource.getConnection();
+        Connection c = dataSourceFactory.getSharedDataSource().getConnection();
 
         try {
             plan.performAction(c, observer);
@@ -157,7 +156,7 @@ public class SQLTemplateActionTest exten
         SQLAction plan = adapter.getAction(template, node);
 
         MockOperationObserver observer = new MockOperationObserver();
-        Connection c = dataSource.getConnection();
+        Connection c = dataSourceFactory.getSharedDataSource().getConnection();
 
         try {
             plan.performAction(c, observer);
@@ -190,7 +189,7 @@ public class SQLTemplateActionTest exten
         SQLAction plan = adapter.getAction(template, node);
 
         MockOperationObserver observer = new MockOperationObserver();
-        Connection c = dataSource.getConnection();
+        Connection c = dataSourceFactory.getSharedDataSource().getConnection();
 
         try {
             plan.performAction(c, observer);
@@ -223,7 +222,7 @@ public class SQLTemplateActionTest exten
         SQLAction plan = adapter.getAction(template, node);
 
         MockOperationObserver observer = new MockOperationObserver();
-        Connection c = dataSource.getConnection();
+        Connection c = dataSourceFactory.getSharedDataSource().getConnection();
 
         try {
             plan.performAction(c, observer);
@@ -255,7 +254,7 @@ public class SQLTemplateActionTest exten
 
         SQLAction action = adapter.getAction(template, node);
 
-        Connection c = dataSource.getConnection();
+        Connection c = dataSourceFactory.getSharedDataSource().getConnection();
         try {
             MockOperationObserver observer = new MockOperationObserver();
             action.performAction(c, observer);
@@ -283,7 +282,7 @@ public class SQLTemplateActionTest exten
 
         SQLAction action = adapter.getAction(template, node);
 
-        Connection c = dataSource.getConnection();
+        Connection c = dataSourceFactory.getSharedDataSource().getConnection();
         try {
             MockOperationObserver observer = new MockOperationObserver();
             action.performAction(c, observer);
@@ -323,7 +322,7 @@ public class SQLTemplateActionTest exten
         assertSame(adapter, action.getAdapter());
         assertSame(template, action.getQuery());
 
-        Connection c = dataSource.getConnection();
+        Connection c = dataSourceFactory.getSharedDataSource().getConnection();
         try {
             MockOperationObserver observer = new MockOperationObserver();
             action.performAction(c, observer);

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java Sun May 13 11:11:40 2012
@@ -24,8 +24,6 @@ import java.sql.SQLException;
 import java.util.Date;
 import java.util.List;
 
-import javax.sql.DataSource;
-
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.jdbc.ColumnDescriptor;
 import org.apache.cayenne.dba.DbAdapter;
@@ -47,13 +45,14 @@ import org.apache.cayenne.testdo.testmap
 import org.apache.cayenne.testdo.testmap.CompoundPainting;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
 @UseServerRuntime(ServerCase.TESTMAP_PROJECT)
 public class SelectTranslatorTest extends ServerCase {
 
     @Inject
-    private DataSource dataSource;
+    private ServerCaseDataSourceFactory dataSourceFactory;
 
     @Inject
     private DataContext context;
@@ -1099,7 +1098,7 @@ public class SelectTranslatorTest extend
         void test(SelectQuery q) throws Exception {
             SelectTranslator transl = makeTranslator(q);
 
-            Connection c = dataSource.getConnection();
+            Connection c = dataSourceFactory.getSharedDataSource().getConnection();
             try {
 
                 transl.setConnection(c);

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/TypesMappingTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/TypesMappingTest.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/TypesMappingTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/TypesMappingTest.java Sun May 13 11:11:40 2012
@@ -28,16 +28,15 @@ import java.util.Calendar;
 import java.util.GregorianCalendar;
 import java.util.List;
 
-import javax.sql.DataSource;
-
 import org.apache.cayenne.MockSerializable;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 
 public class TypesMappingTest extends ServerCase {
 
     @Inject
-    private DataSource dataSource;
+    private ServerCaseDataSourceFactory dataSourceFactory;
 
     public void testGetSqlTypeByJava() throws Exception {
         assertEquals(Types.VARCHAR, TypesMapping.getSqlTypeByJava(String.class));
@@ -107,7 +106,7 @@ public class TypesMappingTest extends Se
     public void testTypeInfoCompleteness() throws Exception {
         // check counts
         // since more then 1 database type can map to a single JDBC type
-        Connection conn = dataSource.getConnection();
+        Connection conn = dataSourceFactory.getSharedDataSource().getConnection();
         int len = 0;
         try {
             DatabaseMetaData md = conn.getMetaData();
@@ -139,7 +138,7 @@ public class TypesMappingTest extends Se
     }
 
     TypesMapping createTypesMapping() throws Exception {
-        Connection conn = dataSource.getConnection();
+        Connection conn = dataSourceFactory.getSharedDataSource().getConnection();
 
         try {
             DatabaseMetaData md = conn.getMetaData();

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferTest.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferTest.java Sun May 13 11:11:40 2012
@@ -22,21 +22,20 @@ package org.apache.cayenne.dba.sqlserver
 import java.sql.Connection;
 import java.sql.SQLException;
 
-import javax.sql.DataSource;
-
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.di.AdhocObjectFactory;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.unit.UnitDbAdapter;
 import org.apache.cayenne.unit.SQLServerUnitDbAdapter;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
 @UseServerRuntime(ServerCase.TESTMAP_PROJECT)
 public class SQLServerSnifferTest extends ServerCase {
 
     @Inject
-    private DataSource dataSource;
+    private ServerCaseDataSourceFactory dataSourceFactory;
 
     @Inject
     private UnitDbAdapter accessStackAdapter;
@@ -49,7 +48,7 @@ public class SQLServerSnifferTest extend
         SQLServerSniffer sniffer = new SQLServerSniffer(objectFactory);
 
         DbAdapter adapter = null;
-        Connection c = dataSource.getConnection();
+        Connection c = dataSourceFactory.getSharedDataSource().getConnection();
 
         try {
             adapter = sniffer.createAdapter(c.getMetaData());

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=1337846&r1=1337845&r2=1337846&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 May 13 11:11:40 2012
@@ -25,8 +25,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import javax.sql.DataSource;
-
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.dba.DbAdapter;
@@ -37,6 +35,7 @@ import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.unit.UnitDbAdapter;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 
 public abstract class MergeCase extends ServerCase {
 
@@ -47,7 +46,7 @@ public abstract class MergeCase extends 
     private UnitDbAdapter accessStackAdapter;
 
     @Inject
-    private DataSource dataSource;
+    private ServerCaseDataSourceFactory dataSourceFactory;
 
     @Inject
     protected EntityResolver resolver;
@@ -139,7 +138,7 @@ public abstract class MergeCase extends 
     }
 
     private void executeSql(String sql) throws Exception {
-        Connection conn = dataSource.getConnection();
+        Connection conn = dataSourceFactory.getSharedDataSource().getConnection();
 
         try {
             Statement st = conn.createStatement();

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/FlavoredDBHelperProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/FlavoredDBHelperProvider.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/FlavoredDBHelperProvider.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/FlavoredDBHelperProvider.java Sun May 13 11:11:40 2012
@@ -18,8 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.unit.di.server;
 
-import javax.sql.DataSource;
-
 import org.apache.cayenne.ConfigurationException;
 import org.apache.cayenne.DataChannel;
 import org.apache.cayenne.configuration.server.ServerRuntime;
@@ -32,7 +30,7 @@ import org.apache.cayenne.test.jdbc.DBHe
 public class FlavoredDBHelperProvider implements Provider<DBHelper> {
 
     @Inject
-    protected DataSource dataSource;
+    protected ServerCaseDataSourceFactory dataSourceFactory;
 
     @Inject
     // injecting provider to make this provider independent from scoping of ServerRuntime
@@ -45,7 +43,7 @@ public class FlavoredDBHelperProvider im
 
         DataChannel channel = serverRuntimeProvider.get().getChannel();
         DataMap firstMap = channel.getEntityResolver().getDataMaps().iterator().next();
-        return new FlavoredDBHelper(dataSource, adapter.getQuotingStrategy(firstMap
-                .isQuotingSQLIdentifiers()));
+        return new FlavoredDBHelper(dataSourceFactory.getSharedDataSource(),
+                adapter.getQuotingStrategy(firstMap.isQuotingSQLIdentifiers()));
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java Sun May 13 11:11:40 2012
@@ -81,16 +81,16 @@ public class SchemaBuilder {
         "CLOB_DETAIL"
     };
 
-    private DataSource dataSource;
+    private ServerCaseDataSourceFactory dataSourceFactory;
     private UnitDbAdapter unitDbAdapter;
     private DbAdapter dbAdapter;
     private DataDomain domain;
     private JdbcEventLogger jdbcEventLogger;
 
-    public SchemaBuilder(@Inject DataSource dataSource,
+    public SchemaBuilder(@Inject ServerCaseDataSourceFactory dataSourceFactory,
             @Inject UnitDbAdapter unitDbAdapter, @Inject DbAdapter dbAdapter,
             @Inject JdbcEventLogger jdbcEventLogger) {
-        this.dataSource = dataSource;
+        this.dataSourceFactory = dataSourceFactory;
         this.unitDbAdapter = unitDbAdapter;
         this.dbAdapter = dbAdapter;
         this.jdbcEventLogger = jdbcEventLogger;
@@ -146,7 +146,7 @@ public class SchemaBuilder {
         DataNode node = new DataNode(map.getName());
         node.setJdbcEventLogger(jdbcEventLogger);
         node.setAdapter(dbAdapter);
-        node.setDataSource(dataSource);
+        node.setDataSource(dataSourceFactory.getSharedDataSource());
 
         // setup test extended types
         node.getAdapter().getExtendedTypes().registerType(new StringET1ExtendedType());
@@ -264,7 +264,7 @@ public class SchemaBuilder {
     }
 
     private void dropSchema(DataNode node, DataMap map) throws Exception {
-        Connection conn = dataSource.getConnection();
+        Connection conn = dataSourceFactory.getSharedDataSource().getConnection();
         List<DbEntity> list = dbEntitiesInInsertOrder(node, map);
 
         try {
@@ -326,7 +326,7 @@ public class SchemaBuilder {
     }
 
     private void createSchema(DataNode node, DataMap map) throws Exception {
-        Connection conn = dataSource.getConnection();
+        Connection conn = dataSourceFactory.getSharedDataSource().getConnection();
 
         try {
             unitDbAdapter.willCreateTables(conn, map);

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceFactory.java?rev=1337846&r1=1337845&r2=1337846&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceFactory.java Sun May 13 11:11:40 2012
@@ -27,12 +27,14 @@ import java.util.Set;
 
 import javax.sql.DataSource;
 
+import org.apache.cayenne.configuration.DataNodeDescriptor;
+import org.apache.cayenne.configuration.server.DataSourceFactory;
 import org.apache.cayenne.conn.DataSourceInfo;
 import org.apache.cayenne.conn.PoolDataSource;
 import org.apache.cayenne.conn.PoolManager;
 import org.apache.cayenne.di.Inject;
 
-public class ServerCaseDataSourceFactory {
+public class ServerCaseDataSourceFactory  {
 
     private DataSource sharedDataSource;
     private DataSourceInfo dataSourceInfo;

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=1337846&r1=1337845&r2=1337846&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 Sun May 13 11:11:40 2012
@@ -52,6 +52,7 @@ import org.apache.cayenne.configuration.
 import org.apache.cayenne.configuration.DefaultRuntimeProperties;
 import org.apache.cayenne.configuration.ObjectStoreFactory;
 import org.apache.cayenne.configuration.RuntimeProperties;
+import org.apache.cayenne.configuration.server.DataSourceFactory;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.conn.DataSourceInfo;
 import org.apache.cayenne.dba.DbAdapter;
@@ -181,9 +182,7 @@ public class ServerCaseModule implements
 
         binder.bind(DataSourceInfo.class).toProvider(
                 ServerCaseDataSourceInfoProvider.class);
-        binder
-                .bind(DataSource.class)
-                .toProvider(ServerCaseSharedDataSourceProvider.class);
+        binder.bind(DataSourceFactory.class).to(ServerCaseSharedDataSourceFactory.class);
         binder.bind(DbAdapter.class).toProvider(ServerCaseDbAdapterProvider.class);
         binder.bind(JdbcAdapter.class).toProvider(ServerCaseDbAdapterProvider.class);
         binder.bind(UnitDbAdapter.class).toProvider(UnitDbAdapterProvider.class);

Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceFactory.java?rev=1337846&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceFactory.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceFactory.java Sun May 13 11:11:40 2012
@@ -0,0 +1,19 @@
+package org.apache.cayenne.unit.di.server;
+
+import org.apache.cayenne.configuration.DataNodeDescriptor;
+import org.apache.cayenne.configuration.server.DataSourceFactory;
+import org.apache.cayenne.di.Inject;
+
+import javax.sql.DataSource;
+
+public class ServerCaseSharedDataSourceFactory implements DataSourceFactory {
+
+    private ServerCaseDataSourceFactory factory;
+
+    public ServerCaseSharedDataSourceFactory(@Inject ServerCaseDataSourceFactory factory) {
+    }
+
+    public DataSource getDataSource(DataNodeDescriptor nodeDescriptor) throws Exception {
+        return factory.getSharedDataSource();
+    }
+}