Skip to content

Commit fda8227

Browse files
committed
Improvements for HibernateDatastoreConnectionSourcesRegistrar
* Set dependsOn of beans `sessionFactory_*` and `transactionManager_*` Closes gh-63
1 parent e348aa1 commit fda8227

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

grace-datastore-gorm-hibernate/src/main/groovy/org/grails/orm/hibernate/support/HibernateDatastoreConnectionSourcesRegistrar.groovy

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
/*
2+
* Copyright 2017-2024 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
116
package org.grails.orm.hibernate.support
217

318
import javax.sql.DataSource
@@ -41,10 +56,10 @@ class HibernateDatastoreConnectionSourcesRegistrar implements BeanDefinitionRegi
4156
String dataSourceBeanName = isDefault ? Settings.SETTING_DATASOURCE : "${Settings.SETTING_DATASOURCE}_$dataSourceName"
4257

4358
if (!registry.containsBeanDefinition(dataSourceBeanName) && shouldConfigureDataSourceBean) {
44-
def dataSourceBean = new RootBeanDefinition()
59+
RootBeanDefinition dataSourceBean = new RootBeanDefinition()
4560
dataSourceBean.setTargetType(DataSource)
4661
dataSourceBean.setBeanClass(InstanceFactoryBean)
47-
def args = new ConstructorArgumentValues()
62+
ConstructorArgumentValues args = new ConstructorArgumentValues()
4863
String spel = "#{dataSourceConnectionSourceFactory.create('$dataSourceName', environment).source}".toString()
4964
args.addGenericArgumentValue(spel)
5065
dataSourceBean.setConstructorArgumentValues(
@@ -58,10 +73,11 @@ class HibernateDatastoreConnectionSourcesRegistrar implements BeanDefinitionRegi
5873
String sessionFactoryName = "sessionFactory$suffix"
5974
String transactionManagerBeanName = "transactionManager$suffix"
6075

61-
def sessionFactoryBean = new RootBeanDefinition()
76+
RootBeanDefinition sessionFactoryBean = new RootBeanDefinition()
6277
sessionFactoryBean.setTargetType(SessionFactory)
6378
sessionFactoryBean.setBeanClass(InstanceFactoryBean)
64-
def args = new ConstructorArgumentValues()
79+
sessionFactoryBean.setDependsOn(dataSourceBeanName)
80+
ConstructorArgumentValues args = new ConstructorArgumentValues()
6581
args.addGenericArgumentValue("#{hibernateDatastore.getDatastoreForConnection('$dataSourceName').sessionFactory}".toString())
6682
sessionFactoryBean.setConstructorArgumentValues(
6783
args
@@ -71,10 +87,11 @@ class HibernateDatastoreConnectionSourcesRegistrar implements BeanDefinitionRegi
7187
sessionFactoryBean
7288
)
7389

74-
def transactionManagerBean = new RootBeanDefinition()
90+
RootBeanDefinition transactionManagerBean = new RootBeanDefinition()
7591
transactionManagerBean.setTargetType(PlatformTransactionManager)
7692
transactionManagerBean.setBeanClass(InstanceFactoryBean)
77-
def txMgrArgs = new ConstructorArgumentValues()
93+
transactionManagerBean.setDependsOn(dataSourceBeanName, sessionFactoryName)
94+
ConstructorArgumentValues txMgrArgs = new ConstructorArgumentValues()
7895
txMgrArgs.addGenericArgumentValue("#{hibernateDatastore.getDatastoreForConnection('$dataSourceName').transactionManager}".toString())
7996
transactionManagerBean.setConstructorArgumentValues(
8097
txMgrArgs
@@ -96,4 +113,5 @@ class HibernateDatastoreConnectionSourcesRegistrar implements BeanDefinitionRegi
96113
int getOrder() {
97114
return Ordered.HIGHEST_PRECEDENCE + 100
98115
}
116+
99117
}

0 commit comments

Comments
 (0)