Merge branch '1.4.x' into 1.5.x

This commit is contained in:
Phillip Webb
2017-03-01 23:44:40 -08:00
11 changed files with 141 additions and 52 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -64,20 +64,33 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
if (bean instanceof JpaProperties) {
this.properties = (JpaProperties) bean;
}
if (bean instanceof EntityManagerFactory && this.dataSource != null
&& isInitializingDatabase()) {
this.applicationContext
.publishEvent(new DataSourceInitializedEvent(this.dataSource));
if (bean instanceof EntityManagerFactory) {
publishEventIfRequired((EntityManagerFactory) bean);
}
return bean;
}
private boolean isInitializingDatabase() {
private void publishEventIfRequired(EntityManagerFactory entityManagerFactory) {
DataSource dataSource = findDataSource(entityManagerFactory);
if (dataSource != null && isInitializingDatabase(dataSource)) {
this.applicationContext
.publishEvent(new DataSourceInitializedEvent(dataSource));
}
}
private DataSource findDataSource(EntityManagerFactory entityManagerFactory) {
Object dataSource = entityManagerFactory.getProperties()
.get("javax.persistence.nonJtaDataSource");
return (dataSource != null && dataSource instanceof DataSource
? (DataSource) dataSource : this.dataSource);
}
private boolean isInitializingDatabase(DataSource dataSource) {
if (this.properties == null) {
return true; // better safe than sorry
}
Map<String, String> hibernate = this.properties
.getHibernateProperties(this.dataSource);
.getHibernateProperties(dataSource);
if (hibernate.containsKey("hibernate.hbm2ddl.auto")) {
return true;
}