Skip to content

Commit aabedf5

Browse files
committed
temp commit
1 parent 8dcca5c commit aabedf5

4 files changed

Lines changed: 29 additions & 30 deletions

File tree

embedded-database-spring-test/src/main/java/io/zonky/test/db/config/EmbeddedDatabaseAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ public BeanPostProcessor liquibasePropertiesPostProcessor() {
292292

293293
@Bean
294294
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
295-
@ConditionalOnClass(name = "org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer")
295+
@ConditionalOnClass(name = "org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer")
296296
@ConditionalOnMissingBean(name = "springScriptDatabaseExtension")
297297
public SpringScriptDatabaseExtension springScriptDatabaseExtension(Environment environment) {
298298
return new SpringScriptDatabaseExtension(environment);

embedded-database-spring-test/src/main/java/io/zonky/test/db/init/SpringScriptDatabaseExtension.java

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,12 @@
2828
import org.springframework.aop.framework.ProxyFactory;
2929
import org.springframework.aop.support.NameMatchMethodPointcutAdvisor;
3030
import org.springframework.beans.factory.config.BeanPostProcessor;
31-
import org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer;
31+
import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer;
3232
import org.springframework.core.Ordered;
3333
import org.springframework.core.env.Environment;
3434

3535
import javax.sql.DataSource;
3636

37-
import static com.google.common.base.Preconditions.checkState;
38-
3937
public class SpringScriptDatabaseExtension implements BeanPostProcessor, Ordered {
4038

4139
private final boolean enabled;
@@ -55,18 +53,18 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) {
5553
return bean;
5654
}
5755

58-
if (bean instanceof AbstractScriptDatabaseInitializer) {
59-
AbstractScriptDatabaseInitializer initializer = (AbstractScriptDatabaseInitializer) bean;
56+
if (bean instanceof DataSourceScriptDatabaseInitializer) {
57+
DataSourceScriptDatabaseInitializer initializer = (DataSourceScriptDatabaseInitializer) bean;
6058
DataSource dataSource = ReflectionUtils.getField(initializer, "dataSource");
6159
DatabaseContext context = AopProxyUtils.getDatabaseContext(dataSource);
6260

6361
if (context != null) {
6462
if (bean instanceof Advised && !((Advised) bean).isFrozen()) {
65-
((Advised) bean).addAdvisor(0, createAdvisor(initializer));
63+
((Advised) bean).addAdvisor(0, createAdvisor(initializer, context));
6664
return bean;
6765
} else {
6866
ProxyFactory proxyFactory = new ProxyFactory(bean);
69-
proxyFactory.addAdvisor(createAdvisor(initializer));
67+
proxyFactory.addAdvisor(createAdvisor(initializer, context));
7068
proxyFactory.setProxyTargetClass(true);
7169
return proxyFactory.getProxy();
7270
}
@@ -81,35 +79,36 @@ public Object postProcessAfterInitialization(Object bean, String beanName) {
8179
return bean;
8280
}
8381

84-
protected Advisor createAdvisor(AbstractScriptDatabaseInitializer initializer) {
85-
Advice advice = new SpringScriptDatabaseExtensionInterceptor(initializer);
82+
protected Advisor createAdvisor(DataSourceScriptDatabaseInitializer initializer, DatabaseContext context) {
83+
Advice advice = new SpringScriptDatabaseExtensionInterceptor(initializer, context);
8684
NameMatchMethodPointcutAdvisor advisor = new NameMatchMethodPointcutAdvisor(advice);
8785
advisor.setMappedNames("afterPropertiesSet", "initializeDatabase");
8886
return advisor;
8987
}
9088

9189
protected static class SpringScriptDatabaseExtensionInterceptor implements MethodInterceptor {
9290

93-
private final AbstractScriptDatabaseInitializer initializer;
91+
private final DataSourceScriptDatabaseInitializer initializer;
92+
private final DatabaseContext context;
9493

95-
protected SpringScriptDatabaseExtensionInterceptor(AbstractScriptDatabaseInitializer initializer) {
94+
protected SpringScriptDatabaseExtensionInterceptor(DataSourceScriptDatabaseInitializer initializer,
95+
DatabaseContext context) {
9696
this.initializer = initializer;
97+
this.context = context;
9798
}
9899

99100
@Override
100101
public Object invoke(MethodInvocation invocation) throws Throwable {
101-
String methodName = invocation.getMethod().getName();
102-
if (!"afterPropertiesSet".equals(methodName) && !"initializeDatabase".equals(methodName)) {
103-
return invocation.proceed();
102+
switch (invocation.getMethod().getName()) {
103+
case "afterPropertiesSet":
104+
context.apply(new SpringScriptDatabasePreparer(initializer));
105+
return null;
106+
case "initializeDatabase":
107+
context.apply(new SpringScriptDatabasePreparer(initializer));
108+
return true;
109+
default:
110+
return invocation.proceed();
104111
}
105-
106-
DataSource dataSource = ReflectionUtils.getField(initializer, "dataSource");
107-
DatabaseContext context = AopProxyUtils.getDatabaseContext(dataSource);
108-
checkState(context != null, "Data source context cannot be resolved");
109-
110-
context.apply(new SpringScriptDatabasePreparer(initializer));
111-
112-
return null;
113112
}
114113
}
115114
}

embedded-database-spring-test/src/main/java/io/zonky/test/db/init/SpringScriptDatabasePreparer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import com.cedarsoftware.util.DeepEquals;
2020
import io.zonky.test.db.preparer.DatabasePreparer;
2121
import io.zonky.test.db.util.ReflectionUtils;
22-
import org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer;
22+
import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer;
2323
import org.springframework.util.ReflectionUtils.FieldFilter;
2424

2525
import javax.sql.DataSource;
@@ -39,12 +39,12 @@ public class SpringScriptDatabasePreparer implements DatabasePreparer {
3939
private static final FieldFilter FIELD_FILTER =
4040
field -> !Modifier.isStatic(field.getModifiers()) && !EXCLUDED_FIELDS.contains(field.getName());
4141

42-
private final AbstractScriptDatabaseInitializer initializer;
43-
private final ThreadLocalDataSource threadLocalDataSource;
42+
private static final ThreadLocalDataSource threadLocalDataSource = new ThreadLocalDataSource();
4443

45-
public SpringScriptDatabasePreparer(AbstractScriptDatabaseInitializer initializer) {
44+
private final DataSourceScriptDatabaseInitializer initializer;
45+
46+
public SpringScriptDatabasePreparer(DataSourceScriptDatabaseInitializer initializer) {
4647
this.initializer = initializer;
47-
this.threadLocalDataSource = new ThreadLocalDataSource();
4848
ReflectionUtils.setField(initializer, "dataSource", threadLocalDataSource);
4949
}
5050

spring-boot-4-stubs/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java renamed to spring-boot-4-stubs/src/main/java/org/springframework/boot/jdbc/init/DataSourceScriptDatabaseInitializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
* https://github.com/spring-projects/spring-boot
88
*/
99

10-
package org.springframework.boot.sql.init;
10+
package org.springframework.boot.jdbc.init;
1111

12-
public class AbstractScriptDatabaseInitializer {
12+
public class DataSourceScriptDatabaseInitializer {
1313

1414
public boolean initializeDatabase() {
1515
return false;

0 commit comments

Comments
 (0)