You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2011/05/23 04:18:47 UTC
svn commit: r1126295 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit:
./ di/client/ di/server/
Author: aadamchik
Date: Mon May 23 02:18:46 2011
New Revision: 1126295
URL: http://svn.apache.org/viewvc?rev=1126295&view=rev
Log:
unit test refactoring
unwinding CayenneResources and friends
Added:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/AccessStackAdapterProvider.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDbAdapterProvider.java
- copied, changed from r1126279, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesDbAdapterProvider.java
Removed:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesAccessStackAdapterProvider.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesDbAdapterProvider.java
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/HSQLDBStackAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/client/ClientCase.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/HSQLDBStackAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/HSQLDBStackAdapter.java?rev=1126295&r1=1126294&r2=1126295&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/HSQLDBStackAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/HSQLDBStackAdapter.java Mon May 23 02:18:46 2011
@@ -24,8 +24,6 @@ import java.sql.Connection;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.map.DataMap;
-/**
- */
public class HSQLDBStackAdapter extends AccessStackAdapter {
public HSQLDBStackAdapter(DbAdapter adapter) {
@@ -36,7 +34,7 @@ public class HSQLDBStackAdapter extends
public boolean supportsLobs() {
return true;
}
-
+
/**
* Note that out of all SP tests HSQLDB (as of 8.0.2) supports only updates that do
* not return a ResultSet (see HSQL CallableStatement JavaDocs). Once HSQL implements
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/client/ClientCase.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/client/ClientCase.java?rev=1126295&r1=1126294&r2=1126295&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/client/ClientCase.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/client/ClientCase.java Mon May 23 02:18:46 2011
@@ -21,6 +21,7 @@ package org.apache.cayenne.unit.di.clien
import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.di.spi.DefaultScope;
+import org.apache.cayenne.unit.CayenneResources;
import org.apache.cayenne.unit.di.DICase;
import org.apache.cayenne.unit.di.server.ServerCaseModule;
@@ -37,6 +38,8 @@ public class ClientCase extends DICase {
injector = DIBootstrap.createInjector(
new ServerCaseModule(testScope),
new ClientCaseModule(testScope));
+ // this triggers schema setup
+ injector.getInstance(CayenneResources.class);
}
@Override
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/AccessStackAdapterProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/AccessStackAdapterProvider.java?rev=1126295&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/AccessStackAdapterProvider.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/AccessStackAdapterProvider.java Mon May 23 02:18:46 2011
@@ -0,0 +1,83 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+package org.apache.cayenne.unit.di.server;
+
+import java.lang.reflect.Constructor;
+import java.util.Map;
+
+import org.apache.cayenne.CayenneRuntimeException;
+import org.apache.cayenne.ConfigurationException;
+import org.apache.cayenne.conn.DataSourceInfo;
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Provider;
+import org.apache.cayenne.unit.AccessStackAdapter;
+import org.apache.cayenne.util.Util;
+
+public class AccessStackAdapterProvider implements Provider<AccessStackAdapter> {
+
+ static final String TEST_ADAPTERS_MAP = "org.apache.cayenne.unit.di.server.CayenneResourcesAccessStackAdapterProvider.adapters";
+
+ private DbAdapter adapter;
+ private DataSourceInfo dataSourceInfo;
+ private Map<String, String> adapterTypesMap;
+
+ public AccessStackAdapterProvider(
+ @Inject(TEST_ADAPTERS_MAP) Map<String, String> adapterTypesMap,
+ @Inject DataSourceInfo dataSourceInfo, @Inject DbAdapter adapter) {
+ this.dataSourceInfo = dataSourceInfo;
+ this.adapterTypesMap = adapterTypesMap;
+ this.adapter = adapter;
+ }
+
+ public AccessStackAdapter get() throws ConfigurationException {
+
+ String testAdapterType = adapterTypesMap
+ .get(dataSourceInfo.getAdapterClassName());
+ if (testAdapterType == null) {
+ throw new IllegalStateException("Unmapped adapter type: "
+ + dataSourceInfo.getAdapterClassName());
+ }
+
+ Class<AccessStackAdapter> type;
+ try {
+ type = (Class<AccessStackAdapter>) Util.getJavaClass(testAdapterType);
+ }
+ catch (ClassNotFoundException e) {
+ throw new CayenneRuntimeException(
+ "Invalid class %s of type AccessStackAdapter",
+ e,
+ testAdapterType);
+ }
+
+ if (!AccessStackAdapter.class.isAssignableFrom(type)) {
+ throw new CayenneRuntimeException(
+ "Class %s is not assignable to AccessStackAdapter",
+ testAdapterType);
+ }
+
+ try {
+ Constructor<AccessStackAdapter> c = type.getConstructor(DbAdapter.class);
+ return c.newInstance(adapter);
+ }
+ catch (Exception e) {
+ throw new ConfigurationException("Error instantiating " + testAdapterType, e);
+ }
+ }
+}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java?rev=1126295&r1=1126294&r2=1126295&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java Mon May 23 02:18:46 2011
@@ -21,6 +21,7 @@ package org.apache.cayenne.unit.di.serve
import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.di.spi.DefaultScope;
+import org.apache.cayenne.unit.CayenneResources;
import org.apache.cayenne.unit.di.DICase;
public class ServerCase extends DICase {
@@ -43,6 +44,9 @@ public class ServerCase extends DICase {
static {
DefaultScope testScope = new DefaultScope();
injector = DIBootstrap.createInjector(new ServerCaseModule(testScope));
+
+ // this triggers schema setup
+ injector.getInstance(CayenneResources.class);
}
@Override
Copied: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDbAdapterProvider.java (from r1126279, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesDbAdapterProvider.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDbAdapterProvider.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDbAdapterProvider.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesDbAdapterProvider.java&r1=1126279&r2=1126295&rev=1126295&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesDbAdapterProvider.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDbAdapterProvider.java Mon May 23 02:18:46 2011
@@ -19,29 +19,26 @@
package org.apache.cayenne.unit.di.server;
import org.apache.cayenne.ConfigurationException;
+import org.apache.cayenne.configuration.AdhocObjectFactory;
import org.apache.cayenne.conn.DataSourceInfo;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.di.Provider;
-import org.apache.cayenne.unit.AccessStackAdapter;
-import org.apache.cayenne.unit.CayenneResources;
-public class CayenneResourcesDbAdapterProvider implements Provider<DbAdapter> {
+public class ServerCaseDbAdapterProvider implements Provider<DbAdapter> {
- private CayenneResources resources;
private DataSourceInfo dataSourceInfo;
+ private AdhocObjectFactory objectFactory;
- public CayenneResourcesDbAdapterProvider(@Inject CayenneResources resources,
- @Inject DataSourceInfo dataSourceInfo) {
+ public ServerCaseDbAdapterProvider(@Inject DataSourceInfo dataSourceInfo,
+ @Inject AdhocObjectFactory objectFactory) {
this.dataSourceInfo = dataSourceInfo;
- this.resources = resources;
+ this.objectFactory = objectFactory;
}
public DbAdapter get() throws ConfigurationException {
- AccessStackAdapter adapter = resources.getAccessStackAdapter(dataSourceInfo
+ return objectFactory.newInstance(DbAdapter.class, dataSourceInfo
.getAdapterClassName());
-
- return adapter.getAdapter();
}
}
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=1126295&r1=1126294&r2=1126295&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 May 23 02:18:46 2011
@@ -24,9 +24,24 @@ import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.jdbc.BatchQueryBuilderFactory;
+import org.apache.cayenne.configuration.AdhocObjectFactory;
+import org.apache.cayenne.configuration.DefaultAdhocObjectFactory;
import org.apache.cayenne.configuration.server.ServerRuntime;
import org.apache.cayenne.conn.DataSourceInfo;
import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.db2.DB2Adapter;
+import org.apache.cayenne.dba.frontbase.FrontBaseAdapter;
+import org.apache.cayenne.dba.h2.H2Adapter;
+import org.apache.cayenne.dba.hsqldb.HSQLDBAdapter;
+import org.apache.cayenne.dba.ingres.IngresAdapter;
+import org.apache.cayenne.dba.mysql.MySQLAdapter;
+import org.apache.cayenne.dba.openbase.OpenBaseAdapter;
+import org.apache.cayenne.dba.oracle.Oracle8Adapter;
+import org.apache.cayenne.dba.oracle.OracleAdapter;
+import org.apache.cayenne.dba.postgres.PostgresAdapter;
+import org.apache.cayenne.dba.sqlite.SQLiteAdapter;
+import org.apache.cayenne.dba.sqlserver.SQLServerAdapter;
+import org.apache.cayenne.dba.sybase.SybaseAdapter;
import org.apache.cayenne.di.Binder;
import org.apache.cayenne.di.Module;
import org.apache.cayenne.di.spi.DefaultScope;
@@ -36,6 +51,18 @@ import org.apache.cayenne.map.EntityReso
import org.apache.cayenne.test.jdbc.DBHelper;
import org.apache.cayenne.unit.AccessStackAdapter;
import org.apache.cayenne.unit.CayenneResources;
+import org.apache.cayenne.unit.DB2StackAdapter;
+import org.apache.cayenne.unit.FrontBaseStackAdapter;
+import org.apache.cayenne.unit.H2StackAdapter;
+import org.apache.cayenne.unit.HSQLDBStackAdapter;
+import org.apache.cayenne.unit.IngresStackAdapter;
+import org.apache.cayenne.unit.MySQLStackAdapter;
+import org.apache.cayenne.unit.OpenBaseStackAdapter;
+import org.apache.cayenne.unit.OracleStackAdapter;
+import org.apache.cayenne.unit.PostgresStackAdapter;
+import org.apache.cayenne.unit.SQLServerStackAdapter;
+import org.apache.cayenne.unit.SQLiteStackAdapter;
+import org.apache.cayenne.unit.SybaseStackAdapter;
import org.apache.cayenne.unit.di.DataChannelInterceptor;
import org.apache.cayenne.unit.di.UnitTestLifecycleManager;
import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
@@ -56,6 +83,34 @@ public class ServerCaseModule implements
// unit test injector. ServerRuntime injector contents are customized
// inside ServerRuntimeProvider.
+ binder.bindMap(AccessStackAdapterProvider.TEST_ADAPTERS_MAP).put(
+ OracleAdapter.class.getName(),
+ OracleStackAdapter.class.getName()).put(
+ Oracle8Adapter.class.getName(),
+ OracleStackAdapter.class.getName()).put(
+ SybaseAdapter.class.getName(),
+ SybaseStackAdapter.class.getName()).put(
+ MySQLAdapter.class.getName(),
+ MySQLStackAdapter.class.getName()).put(
+ PostgresAdapter.class.getName(),
+ PostgresStackAdapter.class.getName()).put(
+ OpenBaseAdapter.class.getName(),
+ OpenBaseStackAdapter.class.getName()).put(
+ SQLServerAdapter.class.getName(),
+ SQLServerStackAdapter.class.getName()).put(
+ DB2Adapter.class.getName(),
+ DB2StackAdapter.class.getName()).put(
+ HSQLDBAdapter.class.getName(),
+ HSQLDBStackAdapter.class.getName()).put(
+ H2Adapter.class.getName(),
+ H2StackAdapter.class.getName()).put(
+ FrontBaseAdapter.class.getName(),
+ FrontBaseStackAdapter.class.getName()).put(
+ IngresAdapter.class.getName(),
+ IngresStackAdapter.class.getName()).put(
+ SQLiteAdapter.class.getName(),
+ SQLiteStackAdapter.class.getName());
+
binder.bind(CayenneResources.class).toProvider(CayenneResourcesProvider.class);
binder.bind(JdbcEventLogger.class).to(CommonsJdbcEventLogger.class);
@@ -68,9 +123,10 @@ public class ServerCaseModule implements
binder
.bind(DataSource.class)
.toProvider(ServerCaseSharedDataSourceProvider.class);
- binder.bind(DbAdapter.class).toProvider(CayenneResourcesDbAdapterProvider.class);
- binder.bind(AccessStackAdapter.class).toProvider(
- CayenneResourcesAccessStackAdapterProvider.class);
+ binder.bind(DbAdapter.class).toProvider(ServerCaseDbAdapterProvider.class);
+ binder
+ .bind(AccessStackAdapter.class)
+ .toProvider(AccessStackAdapterProvider.class);
binder.bind(BatchQueryBuilderFactory.class).toProvider(
ServerCaseBatchQueryBuilderFactoryProvider.class);
binder.bind(DataChannelInterceptor.class).to(
@@ -79,6 +135,7 @@ public class ServerCaseModule implements
SQLTemplateCustomizerProvider.class);
binder.bind(ServerCaseDataSourceFactory.class).to(
ServerCaseDataSourceFactory.class);
+ binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
// test-scoped objects
binder.bind(EntityResolver.class).toProvider(