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 00:52:36 UTC
svn commit: r1126269 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit:
./ di/client/ di/server/
Author: aadamchik
Date: Sun May 22 22:52:35 2011
New Revision: 1126269
URL: http://svn.apache.org/viewvc?rev=1126269&view=rev
Log:
unit test refactoring
attempt at injectable CayenneResources
Added:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesProvider.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/CayenneResources.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/CayenneResourcesAccessStackAdapterProvider.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesDbAdapterProvider.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/ServerCaseDataSourceFactory.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseModule.java
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/ServerRuntimeProvider.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/CayenneResources.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/CayenneResources.java?rev=1126269&r1=1126268&r2=1126269&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/CayenneResources.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/CayenneResources.java Sun May 22 22:52:35 2011
@@ -19,7 +19,6 @@
package org.apache.cayenne.unit;
-import java.io.InputStream;
import java.sql.SQLException;
import java.util.Map;
@@ -34,80 +33,20 @@ import org.apache.cayenne.conn.PoolManag
import org.apache.cayenne.dba.JdbcAdapter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.BeanFactoryAware;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
-import org.springframework.core.io.InputStreamResource;
/**
* Initializes connections for Cayenne unit tests.
*/
-public class CayenneResources implements BeanFactoryAware {
+public class CayenneResources {
private static Log logger = LogFactory.getLog(CayenneResources.class);
- public static final String TEST_RESOURCES_DESCRIPTOR = "spring-test-resources.xml";
-
- public static final String CONNECTION_NAME_KEY = "cayenneTestConnection";
- public static final String SKIP_SCHEMA_KEY = "cayenne.test.schema.skip";
-
- public static final String SCHEMA_SETUP_STACK = "SchemaSetupStack";
public static final String SQL_TEMPLATE_CUSTOMIZER = "SQLTemplateCustomizer";
- public static final String DEFAULT_CONNECTION_KEY = "internal_embedded_datasource";
-
- private static CayenneResources resources;
-
- private static CayenneResources loadResources() {
-
- InputStream in = Thread
- .currentThread()
- .getContextClassLoader()
- .getResourceAsStream(TEST_RESOURCES_DESCRIPTOR);
-
- if (in == null) {
- logger.error("Can't locate resource: " + TEST_RESOURCES_DESCRIPTOR);
- throw new RuntimeException(
- "Can't locate resource descriptor in the ClassLoader: "
- + TEST_RESOURCES_DESCRIPTOR);
- }
-
- BeanFactory factory = new XmlBeanFactory(new InputStreamResource(in));
- CayenneResources resources = (CayenneResources) factory.getBean(
- "TestResources",
- CayenneResources.class);
-
- resources.setConnectionKey(System.getProperty(CONNECTION_NAME_KEY));
-
- return resources;
- }
protected DataSourceInfo connectionInfo;
protected DataSource dataSource;
- protected BeanFactory beanFactory;
protected Map<String, AccessStackAdapter> adapterMap;
- /**
- * Returns shared test resource instance.
- */
- public static CayenneResources getResources() {
- if (resources == null) {
- resources = loadResources();
-
- // rebuild schema after the resources static var is initialized so that after
- // possible initial failure we don't attempt rebuilding schema in subsequent
- // tests
- try {
- resources.rebuildSchema();
- }
- catch (Exception ex) {
- logger.error("Error generating schema...", ex);
- throw new RuntimeException("Error generating schema");
- }
- }
- return resources;
- }
-
public CayenneResources(Map<String, AccessStackAdapter> adapterMap) {
this.adapterMap = adapterMap;
@@ -116,65 +55,12 @@ public class CayenneResources implements
for (AccessStackAdapter adapter : adapterMap.values()) {
((JdbcAdapter) adapter.getAdapter()).setBatchQueryBuilderFactory(factory);
}
- }
-
- /**
- * Completely rebuilds test schema.
- */
- void rebuildSchema() throws Exception {
-
- if ("true".equalsIgnoreCase(System.getProperty(SKIP_SCHEMA_KEY))) {
- logger.info("skipping schema generation... ");
- return;
- }
-
- // generate schema using a special AccessStack that
- // combines all DataMaps that require schema support
- // schema generation is done like that instead of
- // per stack on demand, to avoid conflicts when
- // dropping and generating PK objects.
- AccessStack stack = getAccessStack(SCHEMA_SETUP_STACK);
-
- stack.dropSchema();
- stack.dropPKSupport();
- stack.createSchema();
- stack.createPKSupport();
- }
-
- public void setConnectionKey(String connectionKey) {
-
- connectionInfo = ConnectionProperties.getInstance().getConnectionInfo(
- connectionKey);
-
- // attempt default if invalid key is specified
- if (connectionInfo == null) {
-
- logger.info("Invalid connection key '"
- + connectionKey
- + "', trying default: "
- + DEFAULT_CONNECTION_KEY);
-
- connectionInfo = ConnectionProperties.getInstance().getConnectionInfo(
- DEFAULT_CONNECTION_KEY);
- }
- if (connectionInfo == null) {
- throw new RuntimeException("Null connection info for key: " + connectionKey);
- }
-
- logger.info("test connection info: " + connectionInfo);
- this.dataSource = createDataSource();
- }
-
- /**
- * BeanFactoryAware implementation to store BeanFactory.
- */
- public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
- this.beanFactory = beanFactory;
}
- public AccessStack getAccessStack(String name) {
- return (AccessStack) beanFactory.getBean(name, AccessStack.class);
+ public void setConnectionInfo(DataSourceInfo connectionInfo) {
+ this.connectionInfo = connectionInfo;
+ this.dataSource = createDataSource();
}
/**
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=1126269&r1=1126268&r2=1126269&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 Sun May 22 22:52:35 2011
@@ -21,7 +21,6 @@ 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;
@@ -34,10 +33,9 @@ public class ClientCase extends DICase {
private static final Injector injector;
static {
- final CayenneResources resources = CayenneResources.getResources();
DefaultScope testScope = new DefaultScope();
injector = DIBootstrap.createInjector(
- new ServerCaseModule(resources, testScope),
+ new ServerCaseModule(testScope),
new ClientCaseModule(testScope));
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesAccessStackAdapterProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesAccessStackAdapterProvider.java?rev=1126269&r1=1126268&r2=1126269&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesAccessStackAdapterProvider.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesAccessStackAdapterProvider.java Sun May 22 22:52:35 2011
@@ -20,20 +20,24 @@ package org.apache.cayenne.unit.di.serve
import org.apache.cayenne.ConfigurationException;
import org.apache.cayenne.conn.DataSourceInfo;
+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 CayenneResourcesAccessStackAdapterProvider implements Provider<AccessStackAdapter> {
+public class CayenneResourcesAccessStackAdapterProvider implements
+ Provider<AccessStackAdapter> {
- protected CayenneResources resources;
+ private CayenneResources resources;
+ private DataSourceInfo dataSourceInfo;
- public CayenneResourcesAccessStackAdapterProvider(CayenneResources resources) {
+ public CayenneResourcesAccessStackAdapterProvider(@Inject CayenneResources resources,
+ @Inject DataSourceInfo dataSourceInfo) {
+ this.dataSourceInfo = dataSourceInfo;
this.resources = resources;
}
public AccessStackAdapter get() throws ConfigurationException {
- DataSourceInfo connectionInfo = resources.getConnectionInfo();
- return resources.getAccessStackAdapter(connectionInfo.getAdapterClassName());
+ return resources.getAccessStackAdapter(dataSourceInfo.getAdapterClassName());
}
}
Modified: 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/CayenneResourcesDbAdapterProvider.java?rev=1126269&r1=1126268&r2=1126269&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/CayenneResourcesDbAdapterProvider.java Sun May 22 22:52:35 2011
@@ -21,22 +21,25 @@ package org.apache.cayenne.unit.di.serve
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.unit.CayenneResources;
public class CayenneResourcesDbAdapterProvider implements Provider<DbAdapter> {
- protected CayenneResources resources;
+ private CayenneResources resources;
+ private DataSourceInfo dataSourceInfo;
- public CayenneResourcesDbAdapterProvider(CayenneResources resources) {
+ public CayenneResourcesDbAdapterProvider(@Inject CayenneResources resources,
+ @Inject DataSourceInfo dataSourceInfo) {
+ this.dataSourceInfo = dataSourceInfo;
this.resources = resources;
}
public DbAdapter get() throws ConfigurationException {
- DataSourceInfo connectionInfo = resources.getConnectionInfo();
- AccessStackAdapter adapter = resources.getAccessStackAdapter(connectionInfo
+ AccessStackAdapter adapter = resources.getAccessStackAdapter(dataSourceInfo
.getAdapterClassName());
return adapter.getAdapter();
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesProvider.java?rev=1126269&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesProvider.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesProvider.java Sun May 22 22:52:35 2011
@@ -0,0 +1,110 @@
+/*****************************************************************
+ * 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.io.InputStream;
+
+import org.apache.cayenne.ConfigurationException;
+import org.apache.cayenne.conn.DataSourceInfo;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Provider;
+import org.apache.cayenne.unit.AccessStack;
+import org.apache.cayenne.unit.CayenneResources;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.core.io.InputStreamResource;
+
+public class CayenneResourcesProvider implements Provider<CayenneResources> {
+
+ private static Log logger = LogFactory.getLog(CayenneResourcesProvider.class);
+
+ public static final String TEST_RESOURCES_DESCRIPTOR = "spring-test-resources.xml";
+
+ public static final String CONNECTION_NAME_KEY = "cayenneTestConnection";
+ public static final String DEFAULT_CONNECTION_KEY = "internal_embedded_datasource";
+
+ public static final String SKIP_SCHEMA_KEY = "cayenne.test.schema.skip";
+ public static final String SCHEMA_SETUP_STACK = "SchemaSetupStack";
+
+ @Inject
+ private DataSourceInfo dataSourceInfo;
+
+ public CayenneResources get() throws ConfigurationException {
+
+ InputStream in = Thread
+ .currentThread()
+ .getContextClassLoader()
+ .getResourceAsStream(TEST_RESOURCES_DESCRIPTOR);
+
+ if (in == null) {
+ logger.error("Can't locate resource: " + TEST_RESOURCES_DESCRIPTOR);
+ throw new RuntimeException(
+ "Can't locate resource descriptor in the ClassLoader: "
+ + TEST_RESOURCES_DESCRIPTOR);
+ }
+
+ BeanFactory factory = new XmlBeanFactory(new InputStreamResource(in));
+ CayenneResources resources = (CayenneResources) factory.getBean(
+ "TestResources",
+ CayenneResources.class);
+
+ resources.setConnectionInfo(dataSourceInfo);
+
+ // rebuild schema after the resources instance is loaded so that after
+ // possible initial failure we don't attempt rebuilding schema in subsequent
+ // tests
+ try {
+ rebuildSchema(factory);
+ }
+ catch (Exception ex) {
+ logger.error("Error generating schema...", ex);
+ throw new RuntimeException("Error generating schema");
+ }
+
+ return resources;
+ }
+
+ /**
+ * Completely rebuilds test schema.
+ */
+ private void rebuildSchema(BeanFactory beanFactory) throws Exception {
+
+ if ("true".equalsIgnoreCase(System.getProperty(SKIP_SCHEMA_KEY))) {
+ logger.info("skipping schema generation... ");
+ return;
+ }
+
+ // generate schema using a special AccessStack that
+ // combines all DataMaps that require schema support
+ // schema generation is done like that instead of
+ // per stack on demand, to avoid conflicts when
+ // dropping and generating PK objects.
+ AccessStack stack = (AccessStack) beanFactory.getBean(
+ SCHEMA_SETUP_STACK,
+ AccessStack.class);
+
+ stack.dropSchema();
+ stack.dropPKSupport();
+ stack.createSchema();
+ stack.createPKSupport();
+ }
+
+}
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=1126269&r1=1126268&r2=1126269&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 Sun May 22 22:52:35 2011
@@ -21,7 +21,6 @@ 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 {
@@ -42,9 +41,8 @@ public class ServerCase extends DICase {
private static final Injector injector;
static {
- CayenneResources resources = CayenneResources.getResources();
DefaultScope testScope = new DefaultScope();
- injector = DIBootstrap.createInjector(new ServerCaseModule(resources, testScope));
+ injector = DIBootstrap.createInjector(new ServerCaseModule(testScope));
}
@Override
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=1126269&r1=1126268&r2=1126269&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 22 22:52:35 2011
@@ -30,6 +30,7 @@ import javax.sql.DataSource;
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 {
@@ -38,17 +39,13 @@ public class ServerCaseDataSourceFactory
private Map<String, DataSource> dataSources;
private Set<String> mapsWithDedicatedDataSource;
- ServerCaseDataSourceFactory(DataSourceInfo dataSourceInfo,
- String... mapsWithDedicatedDataSource) {
-
- if (mapsWithDedicatedDataSource == null) {
- mapsWithDedicatedDataSource = new String[0];
- }
+ public ServerCaseDataSourceFactory(@Inject DataSourceInfo dataSourceInfo) {
this.dataSourceInfo = dataSourceInfo;
this.dataSources = new HashMap<String, DataSource>();
- this.mapsWithDedicatedDataSource = new HashSet<String>(Arrays
- .asList(mapsWithDedicatedDataSource));
+ this.mapsWithDedicatedDataSource = new HashSet<String>(Arrays.asList(
+ "map-db1",
+ "map-db2"));
this.sharedDataSource = createDataSource();
}
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java?rev=1126269&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataSourceInfoProvider.java Sun May 22 22:52:35 2011
@@ -0,0 +1,62 @@
+/*****************************************************************
+ * 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 org.apache.cayenne.ConfigurationException;
+import org.apache.cayenne.conn.DataSourceInfo;
+import org.apache.cayenne.di.Provider;
+import org.apache.cayenne.unit.ConnectionProperties;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class ServerCaseDataSourceInfoProvider implements Provider<DataSourceInfo> {
+
+ private static final String CONNECTION_NAME_KEY = "cayenneTestConnection";
+ private static final String DEFAULT_CONNECTION_KEY = "internal_embedded_datasource";
+
+ private static Log logger = LogFactory.getLog(ServerCaseDataSourceInfoProvider.class);
+
+ public DataSourceInfo get() throws ConfigurationException {
+
+ String connectionKey = System.getProperty(CONNECTION_NAME_KEY);
+
+ DataSourceInfo connectionInfo = ConnectionProperties
+ .getInstance()
+ .getConnectionInfo(connectionKey);
+
+ // attempt default if invalid key is specified
+ if (connectionInfo == null) {
+
+ logger.info("Invalid connection key '"
+ + connectionKey
+ + "', trying default: "
+ + DEFAULT_CONNECTION_KEY);
+
+ connectionInfo = ConnectionProperties.getInstance().getConnectionInfo(
+ DEFAULT_CONNECTION_KEY);
+ }
+
+ if (connectionInfo == null) {
+ throw new RuntimeException("Null connection info for key: " + connectionKey);
+ }
+
+ logger.info("loaded connection info: " + connectionInfo);
+ return connectionInfo;
+ }
+}
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=1126269&r1=1126268&r2=1126269&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 22 22:52:35 2011
@@ -42,46 +42,43 @@ import org.apache.cayenne.unit.util.SQLT
public class ServerCaseModule implements Module {
- protected CayenneResources resources;
protected DefaultScope testScope;
- public ServerCaseModule(CayenneResources resources, DefaultScope testScope) {
- this.resources = resources;
+ public ServerCaseModule(DefaultScope testScope) {
this.testScope = testScope;
}
public void configure(Binder binder) {
- ServerCaseDataSourceFactory dataSourceFactory = new ServerCaseDataSourceFactory(
- resources.getConnectionInfo(),
- "map-db1",
- "map-db2");
-
// these are the objects injectable in unit tests that subclass from
// ServerCase. Note that ServerRuntimeProvider creates ServerRuntime
// instances complete with their own DI injectors, independent from the
// unit test injector. ServerRuntime injector contents are customized
// inside ServerRuntimeProvider.
+ binder.bind(CayenneResources.class).toProvider(CayenneResourcesProvider.class);
binder.bind(JdbcEventLogger.class).to(CommonsJdbcEventLogger.class);
// singleton objects
binder.bind(UnitTestLifecycleManager.class).toInstance(
new ServerCaseLifecycleManager(testScope));
- binder.bind(DataSourceInfo.class).toInstance(resources.getConnectionInfo());
- binder.bind(DataSource.class).toProviderInstance(
- new ServerCaseSharedDataSourceProvider(dataSourceFactory));
- binder.bind(DbAdapter.class).toProviderInstance(
- new CayenneResourcesDbAdapterProvider(resources));
- binder.bind(AccessStackAdapter.class).toProviderInstance(
- new CayenneResourcesAccessStackAdapterProvider(resources));
+ binder.bind(DataSourceInfo.class).toProvider(
+ ServerCaseDataSourceInfoProvider.class);
+ binder
+ .bind(DataSource.class)
+ .toProvider(ServerCaseSharedDataSourceProvider.class);
+ binder.bind(DbAdapter.class).toProvider(CayenneResourcesDbAdapterProvider.class);
+ binder.bind(AccessStackAdapter.class).toProvider(
+ CayenneResourcesAccessStackAdapterProvider.class);
binder.bind(BatchQueryBuilderFactory.class).toProvider(
ServerCaseBatchQueryBuilderFactoryProvider.class);
binder.bind(DataChannelInterceptor.class).to(
ServerCaseDataChannelInterceptor.class);
binder.bind(SQLTemplateCustomizer.class).toProvider(
SQLTemplateCustomizerProvider.class);
+ binder.bind(ServerCaseDataSourceFactory.class).to(
+ ServerCaseDataSourceFactory.class);
// test-scoped objects
binder.bind(EntityResolver.class).toProvider(
@@ -90,8 +87,8 @@ public class ServerCaseModule implements
testScope);
binder.bind(ServerCaseProperties.class).to(ServerCaseProperties.class).in(
testScope);
- binder.bind(ServerRuntime.class).toProviderInstance(
- new ServerRuntimeProvider(resources, dataSourceFactory)).in(testScope);
+ binder.bind(ServerRuntime.class).toProvider(ServerRuntimeProvider.class).in(
+ testScope);
binder
.bind(ObjectContext.class)
.toProvider(ServerCaseObjectContextProvider.class)
@@ -104,5 +101,4 @@ public class ServerCaseModule implements
binder.bind(DBHelper.class).toProvider(FlavoredDBHelperProvider.class).in(
testScope);
}
-
}
Modified: 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-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceProvider.java?rev=1126269&r1=1126268&r2=1126269&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-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseSharedDataSourceProvider.java Sun May 22 22:52:35 2011
@@ -21,6 +21,7 @@ package org.apache.cayenne.unit.di.serve
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> {
@@ -28,7 +29,7 @@ public class ServerCaseSharedDataSourceP
protected ServerCaseDataSourceFactory dataSourceFactory;
public ServerCaseSharedDataSourceProvider(
- ServerCaseDataSourceFactory dataSourceFactory) {
+ @Inject ServerCaseDataSourceFactory dataSourceFactory) {
this.dataSourceFactory = dataSourceFactory;
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java?rev=1126269&r1=1126268&r2=1126269&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java Sun May 22 22:52:35 2011
@@ -26,20 +26,21 @@ import org.apache.cayenne.di.Binder;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.di.Module;
import org.apache.cayenne.di.Provider;
-import org.apache.cayenne.unit.CayenneResources;
public class ServerRuntimeProvider implements Provider<ServerRuntime> {
- @Inject
- protected ServerCaseProperties properties;
-
- private CayenneResources resources;
+ private ServerCaseProperties properties;
private ServerCaseDataSourceFactory dataSourceFactory;
- public ServerRuntimeProvider(CayenneResources resources,
- ServerCaseDataSourceFactory dataSourceFactory) {
- this.resources = resources;
+ private Provider<DbAdapter> dbAdapterProvider;
+
+ public ServerRuntimeProvider(@Inject ServerCaseDataSourceFactory dataSourceFactory,
+ @Inject ServerCaseProperties properties,
+ @Inject Provider<DbAdapter> dbAdapterProvider) {
+
this.dataSourceFactory = dataSourceFactory;
+ this.properties = properties;
+ this.dbAdapterProvider = dbAdapterProvider;
}
public ServerRuntime get() throws ConfigurationException {
@@ -60,8 +61,7 @@ public class ServerRuntimeProvider imple
// these are the objects overriding standard ServerModule definitions or
// dependencies needed by such overrides
- binder.bind(DbAdapter.class).toProviderInstance(
- new CayenneResourcesDbAdapterProvider(resources));
+ binder.bind(DbAdapter.class).toProviderInstance(dbAdapterProvider);
binder.bind(DataDomain.class).toProvider(ServerCaseDataDomainProvider.class);
// map DataSources for all test DataNode names