Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
d83238aa
Commit
d83238aa
authored
Sep 26, 2019
by
Phillip Webb
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '2.1.x'
Closes gh-18369
parents
4e0de90e
050460f6
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
16 deletions
+22
-16
DataSourceInitializedPublisher.java
...autoconfigure/orm/jpa/DataSourceInitializedPublisher.java
+22
-16
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/DataSourceInitializedPublisher.java
View file @
d83238aa
...
@@ -65,8 +65,7 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
...
@@ -65,8 +65,7 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
if
(
bean
instanceof
LocalContainerEntityManagerFactoryBean
)
{
if
(
bean
instanceof
LocalContainerEntityManagerFactoryBean
)
{
LocalContainerEntityManagerFactoryBean
factory
=
(
LocalContainerEntityManagerFactoryBean
)
bean
;
LocalContainerEntityManagerFactoryBean
factory
=
(
LocalContainerEntityManagerFactoryBean
)
bean
;
if
(
factory
.
getBootstrapExecutor
()
!=
null
&&
factory
.
getJpaVendorAdapter
()
!=
null
)
{
if
(
factory
.
getBootstrapExecutor
()
!=
null
&&
factory
.
getJpaVendorAdapter
()
!=
null
)
{
this
.
schemaCreatedPublisher
=
new
DataSourceSchemaCreatedPublisher
(
factory
.
getBootstrapExecutor
(),
this
.
schemaCreatedPublisher
=
new
DataSourceSchemaCreatedPublisher
(
factory
);
factory
.
getJpaVendorAdapter
());
factory
.
setJpaVendorAdapter
(
this
.
schemaCreatedPublisher
);
factory
.
setJpaVendorAdapter
(
this
.
schemaCreatedPublisher
);
}
}
}
}
...
@@ -86,21 +85,27 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
...
@@ -86,21 +85,27 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
this
.
hibernateProperties
=
(
HibernateProperties
)
bean
;
this
.
hibernateProperties
=
(
HibernateProperties
)
bean
;
}
}
if
(
bean
instanceof
LocalContainerEntityManagerFactoryBean
&&
this
.
schemaCreatedPublisher
==
null
)
{
if
(
bean
instanceof
LocalContainerEntityManagerFactoryBean
&&
this
.
schemaCreatedPublisher
==
null
)
{
LocalContainerEntityManagerFactoryBean
factory
=
(
LocalContainerEntityManagerFactoryBean
)
bean
;
LocalContainerEntityManagerFactoryBean
factoryBean
=
(
LocalContainerEntityManagerFactoryBean
)
bean
;
publishEventIfRequired
(
factory
.
getNativeEntityManagerFactory
());
EntityManagerFactory
entityManagerFactory
=
factoryBean
.
getNativeEntityManagerFactory
();
publishEventIfRequired
(
factoryBean
,
entityManagerFactory
);
}
}
return
bean
;
return
bean
;
}
}
private
void
publishEventIfRequired
(
EntityManagerFactory
entityManagerFactory
)
{
private
void
publishEventIfRequired
(
LocalContainerEntityManagerFactoryBean
factoryBean
,
DataSource
dataSource
=
findDataSource
(
entityManagerFactory
);
EntityManagerFactory
entityManagerFactory
)
{
DataSource
dataSource
=
findDataSource
(
factoryBean
,
entityManagerFactory
);
if
(
dataSource
!=
null
&&
isInitializingDatabase
(
dataSource
))
{
if
(
dataSource
!=
null
&&
isInitializingDatabase
(
dataSource
))
{
this
.
applicationContext
.
publishEvent
(
new
DataSourceSchemaCreatedEvent
(
dataSource
));
this
.
applicationContext
.
publishEvent
(
new
DataSourceSchemaCreatedEvent
(
dataSource
));
}
}
}
}
private
DataSource
findDataSource
(
EntityManagerFactory
entityManagerFactory
)
{
private
DataSource
findDataSource
(
LocalContainerEntityManagerFactoryBean
factoryBean
,
EntityManagerFactory
entityManagerFactory
)
{
Object
dataSource
=
entityManagerFactory
.
getProperties
().
get
(
"javax.persistence.nonJtaDataSource"
);
Object
dataSource
=
entityManagerFactory
.
getProperties
().
get
(
"javax.persistence.nonJtaDataSource"
);
if
(
dataSource
==
null
)
{
dataSource
=
factoryBean
.
getPersistenceUnitInfo
().
getNonJtaDataSource
();
}
return
(
dataSource
instanceof
DataSource
)
?
(
DataSource
)
dataSource
:
this
.
dataSource
;
return
(
dataSource
instanceof
DataSource
)
?
(
DataSource
)
dataSource
:
this
.
dataSource
;
}
}
...
@@ -142,14 +147,13 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
...
@@ -142,14 +147,13 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
final
class
DataSourceSchemaCreatedPublisher
implements
JpaVendorAdapter
{
final
class
DataSourceSchemaCreatedPublisher
implements
JpaVendorAdapter
{
private
final
AsyncTaskExecutor
bootstrapExecutor
;
private
final
LocalContainerEntityManagerFactoryBean
factoryBean
;
private
final
JpaVendorAdapter
delegate
;
private
final
JpaVendorAdapter
delegate
;
private
DataSourceSchemaCreatedPublisher
(
AsyncTaskExecutor
bootstrapExecutor
,
private
DataSourceSchemaCreatedPublisher
(
LocalContainerEntityManagerFactoryBean
factoryBean
)
{
JpaVendorAdapter
jpaVendorAdapter
)
{
this
.
factoryBean
=
factoryBean
;
this
.
bootstrapExecutor
=
bootstrapExecutor
;
this
.
delegate
=
factoryBean
.
getJpaVendorAdapter
();
this
.
delegate
=
jpaVendorAdapter
;
}
}
@Override
@Override
...
@@ -188,10 +192,12 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
...
@@ -188,10 +192,12 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
}
}
@Override
@Override
public
void
postProcessEntityManagerFactory
(
EntityManagerFactory
emf
)
{
public
void
postProcessEntityManagerFactory
(
EntityManagerFactory
entityManagerFactory
)
{
this
.
delegate
.
postProcessEntityManagerFactory
(
emf
);
this
.
delegate
.
postProcessEntityManagerFactory
(
entityManagerFactory
);
if
(
this
.
bootstrapExecutor
!=
null
)
{
AsyncTaskExecutor
bootstrapExecutor
=
this
.
factoryBean
.
getBootstrapExecutor
();
this
.
bootstrapExecutor
.
execute
(()
->
DataSourceInitializedPublisher
.
this
.
publishEventIfRequired
(
emf
));
if
(
bootstrapExecutor
!=
null
)
{
bootstrapExecutor
.
execute
(()
->
DataSourceInitializedPublisher
.
this
.
publishEventIfRequired
(
this
.
factoryBean
,
entityManagerFactory
));
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment