From c3e7175f7516ee785579a7a5deb6fa36c86e3fcd Mon Sep 17 00:00:00 2001 From: graemerocher Date: Thu, 5 Mar 2015 14:19:40 +0100 Subject: [PATCH] fix for GRAILS-12037 "Problem With Multiple Datasources" --- grails-bom/plugins.properties | 4 +-- .../datasource/DataSourceGrailsPlugin.groovy | 7 ++-- .../DataSourceGrailsPluginTests.groovy | 34 +++++++++---------- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/grails-bom/plugins.properties b/grails-bom/plugins.properties index 4d8986d1ddd..73e7da63a38 100644 --- a/grails-bom/plugins.properties +++ b/grails-bom/plugins.properties @@ -1,7 +1,7 @@ -hibernate=4.3.8.0.M2 +hibernate=4.3.8.0.BUILD-SNAPSHOT mongodb=4.0.0.M2 cache=3.0.0.M2 asset-pipeline=3.0.0.M2 -scaffolding=3.0.0.M1 +scaffolding=3.0.0.BUILD-SNAPSHOT fields=2.0.0.M1 geb=1.0.0.BUILD-SNAPSHOT \ No newline at end of file diff --git a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceGrailsPlugin.groovy b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceGrailsPlugin.groovy index f1ebb023582..61b4e6f0e32 100644 --- a/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceGrailsPlugin.groovy +++ b/grails-plugin-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceGrailsPlugin.groovy @@ -107,9 +107,10 @@ class DataSourceGrailsPlugin extends Plugin { protected void createDatasource(beanBuilder, String dataSourceName, Map dataSourceData ) { boolean isDefault = dataSourceName == 'dataSource' - String suffix = isDefault ? '' : dataSourceName + String suffix = isDefault ? '' : "_$dataSourceName" String unproxiedName = "dataSourceUnproxied$suffix" String lazyName = "dataSourceLazy$suffix" + String beanName = isDefault ? 'dataSource' : "dataSource_$dataSourceName" if (applicationContext?.containsBean(dataSourceName)) { return @@ -121,7 +122,7 @@ class DataSourceGrailsPlugin extends Plugin { expectedType = DataSource } beanBuilder."$lazyName"(LazyConnectionDataSourceProxy, beanBuilder.ref(unproxiedName)) - beanBuilder."$dataSourceName"(TransactionAwareDataSourceProxy, beanBuilder.ref(lazyName)) + beanBuilder."$beanName"(TransactionAwareDataSourceProxy, beanBuilder.ref(lazyName)) return } @@ -197,7 +198,7 @@ class DataSourceGrailsPlugin extends Plugin { } beanBuilder."$lazyName"(LazyConnectionDataSourceProxy, beanBuilder.ref(unproxiedName)) - beanBuilder."$dataSourceName"(TransactionAwareDataSourceProxy, beanBuilder.ref(lazyName)) + beanBuilder."$beanName"(TransactionAwareDataSourceProxy, beanBuilder.ref(lazyName)) // transactionManager beans will get overridden in Hibernate plugin beanBuilder."transactionManager$suffix"(DataSourceTransactionManager, beanBuilder.ref(lazyName)) diff --git a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/datasource/DataSourceGrailsPluginTests.groovy b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/datasource/DataSourceGrailsPluginTests.groovy index a68d10d4ffc..0dcf96b4e7d 100644 --- a/grails-test-suite-uber/src/test/groovy/org/grails/plugins/datasource/DataSourceGrailsPluginTests.groovy +++ b/grails-test-suite-uber/src/test/groovy/org/grails/plugins/datasource/DataSourceGrailsPluginTests.groovy @@ -252,7 +252,7 @@ class DataSourceGrailsPluginTests extends AbstractGrailsMockTests { username = "foo" password = "blah" } - dataSource_ds2 { + ds2 { driverClassName = "org.h2.Driver" url = "jdbc:h2:mem:testDb2" username = "user" @@ -261,7 +261,7 @@ class DataSourceGrailsPluginTests extends AbstractGrailsMockTests { dbCreate = "update" readOnly = true } - dataSource_ds3 { + ds3 { driverClassName = "org.h2.Driver" url = "jdbc:h2:mem:testDb3" username = "sa" @@ -269,11 +269,11 @@ class DataSourceGrailsPluginTests extends AbstractGrailsMockTests { dbCreate = "create-drop" readOnly = true } - dataSource_ds4 { + ds4 { driverClassName = "org.h2.Driver" url = "jdbc:h2:mem:testDb4" } - dataSource_jndi { + jndi { jndiName = "java:comp/env/myDataSource" } } @@ -304,13 +304,13 @@ class DataSourceGrailsPluginTests extends AbstractGrailsMockTests { beanDef = bb.getBeanDefinition('dataSource_ds2') assertEquals TransactionAwareDataSourceProxy.name, beanDef.beanClassName - beanDef = bb.getBeanDefinition('dataSourceLazydataSource_ds2') + beanDef = bb.getBeanDefinition('dataSourceLazy_ds2') assertEquals LazyConnectionDataSourceProxy.name, beanDef.beanClassName - beanDef = bb.getBeanDefinition('dataSourceUnproxieddataSource_ds2') + beanDef = bb.getBeanDefinition('dataSourceUnproxied_ds2') assertEquals 'pooled false, readOnly true', ReadOnlyDriverManagerDataSource.name, beanDef.beanClassName - parentBeanDef = bb.getBeanDefinition('abstractGrailsDataSourceBeandataSource_ds2') + parentBeanDef = bb.getBeanDefinition('abstractGrailsDataSourceBean_ds2') assertEquals 'user', parentBeanDef.propertyValues.getPropertyValue('username').value assertEquals 'pass', parentBeanDef.propertyValues.getPropertyValue('password').value @@ -323,13 +323,13 @@ class DataSourceGrailsPluginTests extends AbstractGrailsMockTests { beanDef = bb.getBeanDefinition('dataSource_ds3') assertEquals TransactionAwareDataSourceProxy.name, beanDef.beanClassName - beanDef = bb.getBeanDefinition('dataSourceLazydataSource_ds3') + beanDef = bb.getBeanDefinition('dataSourceLazy_ds3') assertEquals LazyConnectionDataSourceProxy.name, beanDef.beanClassName - beanDef = bb.getBeanDefinition('dataSourceUnproxieddataSource_ds3') + beanDef = bb.getBeanDefinition('dataSourceUnproxied_ds3') assertEquals 'pooled default true, readOnly true', TomcatDataSource.name, beanDef.beanClassName - parentBeanDef = bb.getBeanDefinition('abstractGrailsDataSourceBeandataSource_ds3') + parentBeanDef = bb.getBeanDefinition('abstractGrailsDataSourceBean_ds3') assertEquals 'sa', parentBeanDef.propertyValues.getPropertyValue('username').value assertEquals '', parentBeanDef.propertyValues.getPropertyValue('password').value @@ -342,13 +342,13 @@ class DataSourceGrailsPluginTests extends AbstractGrailsMockTests { beanDef = bb.getBeanDefinition('dataSource_ds4') assertEquals TransactionAwareDataSourceProxy.name, beanDef.beanClassName - beanDef = bb.getBeanDefinition('dataSourceLazydataSource_ds4') + beanDef = bb.getBeanDefinition('dataSourceLazy_ds4') assertEquals LazyConnectionDataSourceProxy.name, beanDef.beanClassName - beanDef = bb.getBeanDefinition('dataSourceUnproxieddataSource_ds4') + beanDef = bb.getBeanDefinition('dataSourceUnproxied_ds4') assertEquals TomcatDataSource.name, beanDef.beanClassName - parentBeanDef = bb.getBeanDefinition('abstractGrailsDataSourceBeandataSource_ds4') + parentBeanDef = bb.getBeanDefinition('abstractGrailsDataSourceBean_ds4') assertEquals 'sa', parentBeanDef.propertyValues.getPropertyValue('username').value assertEquals '', parentBeanDef.propertyValues.getPropertyValue('password').value @@ -361,7 +361,7 @@ class DataSourceGrailsPluginTests extends AbstractGrailsMockTests { beanDef = bb.getBeanDefinition('dataSource_jndi') assertEquals TransactionAwareDataSourceProxy.name, beanDef.beanClassName - beanDef = bb.getBeanDefinition('dataSourceUnproxieddataSource_jndi') + beanDef = bb.getBeanDefinition('dataSourceUnproxied_jndi') assertEquals JndiObjectFactoryBean.name, beanDef.beanClassName assertEquals "java:comp/env/myDataSource", beanDef.propertyValues.getPropertyValue('jndiName').value @@ -379,7 +379,7 @@ class DataSourceGrailsPluginTests extends AbstractGrailsMockTests { username = "sa" password = "" } - dataSource_ds2 { + ds2 { pooled = true driverClassName = "org.h2.Driver" url = "jdbc:h2:tcp://localhost:1234/~/test" @@ -402,8 +402,8 @@ class DataSourceGrailsPluginTests extends AbstractGrailsMockTests { sql.execute('create table thing (foo int)') def dataSource_ds2 = ctx.dataSource_ds2 - def dataSourceLazy_ds2 = ctx.dataSourceLazydataSource_ds2 - def dataSourceUnproxied_ds2 = ctx.dataSourceUnproxieddataSource_ds2 + def dataSourceLazy_ds2 = ctx.dataSourceLazy_ds2 + def dataSourceUnproxied_ds2 = ctx.dataSourceUnproxied_ds2 assert dataSource_ds2.targetDataSource.is(dataSourceLazy_ds2) assert dataSourceLazy_ds2.targetDataSource.is(dataSourceUnproxied_ds2)