Skip to content

Commit d83238a

Browse files
committed
Merge branch '2.1.x'
Closes gh-18369
2 parents 4e0de90 + 050460f commit d83238a

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/DataSourceInitializedPublisher.java

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) thro
6565
if (bean instanceof LocalContainerEntityManagerFactoryBean) {
6666
LocalContainerEntityManagerFactoryBean factory = (LocalContainerEntityManagerFactoryBean) bean;
6767
if (factory.getBootstrapExecutor() != null && factory.getJpaVendorAdapter() != null) {
68-
this.schemaCreatedPublisher = new DataSourceSchemaCreatedPublisher(factory.getBootstrapExecutor(),
69-
factory.getJpaVendorAdapter());
68+
this.schemaCreatedPublisher = new DataSourceSchemaCreatedPublisher(factory);
7069
factory.setJpaVendorAdapter(this.schemaCreatedPublisher);
7170
}
7271
}
@@ -86,21 +85,27 @@ public Object postProcessAfterInitialization(Object bean, String beanName) throw
8685
this.hibernateProperties = (HibernateProperties) bean;
8786
}
8887
if (bean instanceof LocalContainerEntityManagerFactoryBean && this.schemaCreatedPublisher == null) {
89-
LocalContainerEntityManagerFactoryBean factory = (LocalContainerEntityManagerFactoryBean) bean;
90-
publishEventIfRequired(factory.getNativeEntityManagerFactory());
88+
LocalContainerEntityManagerFactoryBean factoryBean = (LocalContainerEntityManagerFactoryBean) bean;
89+
EntityManagerFactory entityManagerFactory = factoryBean.getNativeEntityManagerFactory();
90+
publishEventIfRequired(factoryBean, entityManagerFactory);
9191
}
9292
return bean;
9393
}
9494

95-
private void publishEventIfRequired(EntityManagerFactory entityManagerFactory) {
96-
DataSource dataSource = findDataSource(entityManagerFactory);
95+
private void publishEventIfRequired(LocalContainerEntityManagerFactoryBean factoryBean,
96+
EntityManagerFactory entityManagerFactory) {
97+
DataSource dataSource = findDataSource(factoryBean, entityManagerFactory);
9798
if (dataSource != null && isInitializingDatabase(dataSource)) {
9899
this.applicationContext.publishEvent(new DataSourceSchemaCreatedEvent(dataSource));
99100
}
100101
}
101102

102-
private DataSource findDataSource(EntityManagerFactory entityManagerFactory) {
103+
private DataSource findDataSource(LocalContainerEntityManagerFactoryBean factoryBean,
104+
EntityManagerFactory entityManagerFactory) {
103105
Object dataSource = entityManagerFactory.getProperties().get("javax.persistence.nonJtaDataSource");
106+
if (dataSource == null) {
107+
dataSource = factoryBean.getPersistenceUnitInfo().getNonJtaDataSource();
108+
}
104109
return (dataSource instanceof DataSource) ? (DataSource) dataSource : this.dataSource;
105110
}
106111

@@ -142,14 +147,13 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
142147

143148
final class DataSourceSchemaCreatedPublisher implements JpaVendorAdapter {
144149

145-
private final AsyncTaskExecutor bootstrapExecutor;
150+
private final LocalContainerEntityManagerFactoryBean factoryBean;
146151

147152
private final JpaVendorAdapter delegate;
148153

149-
private DataSourceSchemaCreatedPublisher(AsyncTaskExecutor bootstrapExecutor,
150-
JpaVendorAdapter jpaVendorAdapter) {
151-
this.bootstrapExecutor = bootstrapExecutor;
152-
this.delegate = jpaVendorAdapter;
154+
private DataSourceSchemaCreatedPublisher(LocalContainerEntityManagerFactoryBean factoryBean) {
155+
this.factoryBean = factoryBean;
156+
this.delegate = factoryBean.getJpaVendorAdapter();
153157
}
154158

155159
@Override
@@ -188,10 +192,12 @@ public Class<? extends EntityManager> getEntityManagerInterface() {
188192
}
189193

190194
@Override
191-
public void postProcessEntityManagerFactory(EntityManagerFactory emf) {
192-
this.delegate.postProcessEntityManagerFactory(emf);
193-
if (this.bootstrapExecutor != null) {
194-
this.bootstrapExecutor.execute(() -> DataSourceInitializedPublisher.this.publishEventIfRequired(emf));
195+
public void postProcessEntityManagerFactory(EntityManagerFactory entityManagerFactory) {
196+
this.delegate.postProcessEntityManagerFactory(entityManagerFactory);
197+
AsyncTaskExecutor bootstrapExecutor = this.factoryBean.getBootstrapExecutor();
198+
if (bootstrapExecutor != null) {
199+
bootstrapExecutor.execute(() -> DataSourceInitializedPublisher.this
200+
.publishEventIfRequired(this.factoryBean, entityManagerFactory));
195201
}
196202
}
197203

0 commit comments

Comments
 (0)