Skip to content

Commit 38cd1b4

Browse files
committed
Merge pull request #24862 from izeye
* pr/24862: Polish contribution Polish Closes gh-24862
2 parents bcc1331 + dcc0ca0 commit 38cd1b4

File tree

2 files changed

+38
-11
lines changed

2 files changed

+38
-11
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,22 +95,23 @@ public DefaultDSLContext dslContext(org.jooq.Configuration configuration) {
9595
@Bean
9696
@ConditionalOnMissingBean(org.jooq.Configuration.class)
9797
public DefaultConfiguration jooqConfiguration(JooqProperties properties, ConnectionProvider connectionProvider,
98-
DataSource dataSource, ObjectProvider<DefaultConfigurationCustomizer> configurationCustomizers) {
98+
DataSource dataSource, ObjectProvider<ExecuteListenerProvider> executeListenerProviders,
99+
ObjectProvider<DefaultConfigurationCustomizer> configurationCustomizers) {
99100
DefaultConfiguration configuration = new DefaultConfiguration();
100101
configuration.set(properties.determineSqlDialect(dataSource));
101102
configuration.set(connectionProvider);
103+
configuration.set(executeListenerProviders.orderedStream().toArray(ExecuteListenerProvider[]::new));
102104
configurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(configuration));
103105
return configuration;
104106
}
105107

106108
@Bean
107109
@Deprecated
108-
public DefaultConfigurationCustomizer jooQProviderDefaultConfigurationCustomizer(
110+
public DefaultConfigurationCustomizer jooqProvidersDefaultConfigurationCustomizer(
109111
ObjectProvider<TransactionProvider> transactionProvider,
110112
ObjectProvider<RecordMapperProvider> recordMapperProvider,
111113
ObjectProvider<RecordUnmapperProvider> recordUnmapperProvider, ObjectProvider<Settings> settings,
112114
ObjectProvider<RecordListenerProvider> recordListenerProviders,
113-
ObjectProvider<ExecuteListenerProvider> executeListenerProviders,
114115
ObjectProvider<VisitListenerProvider> visitListenerProviders,
115116
ObjectProvider<TransactionListenerProvider> transactionListenerProviders,
116117
ObjectProvider<ExecutorProvider> executorProvider) {
@@ -121,7 +122,6 @@ public DefaultConfigurationCustomizer jooQProviderDefaultConfigurationCustomizer
121122
settings.ifAvailable(configuration::set);
122123
executorProvider.ifAvailable(configuration::set);
123124
configuration.set(recordListenerProviders.orderedStream().toArray(RecordListenerProvider[]::new));
124-
configuration.set(executeListenerProviders.orderedStream().toArray(ExecuteListenerProvider[]::new));
125125
configuration.set(visitListenerProviders.orderedStream().toArray(VisitListenerProvider[]::new));
126126
configuration.setTransactionListenerProvider(
127127
transactionListenerProviders.orderedStream().toArray(TransactionListenerProvider[]::new));

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfigurationTests.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import javax.sql.DataSource;
2020

2121
import org.jooq.CharsetProvider;
22+
import org.jooq.ConnectionProvider;
2223
import org.jooq.ConverterProvider;
2324
import org.jooq.DSLContext;
2425
import org.jooq.ExecuteListener;
@@ -31,6 +32,7 @@
3132
import org.jooq.TransactionListenerProvider;
3233
import org.jooq.TransactionalRunnable;
3334
import org.jooq.VisitListenerProvider;
35+
import org.jooq.impl.DataSourceConnectionProvider;
3436
import org.jooq.impl.DefaultExecuteListenerProvider;
3537
import org.junit.jupiter.api.Test;
3638

@@ -42,6 +44,7 @@
4244
import org.springframework.core.annotation.Order;
4345
import org.springframework.dao.DataIntegrityViolationException;
4446
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
47+
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
4548
import org.springframework.transaction.PlatformTransactionManager;
4649

4750
import static org.assertj.core.api.Assertions.assertThat;
@@ -101,7 +104,37 @@ void jooqWithTx() {
101104
"insert into jooqtest (name) values ('foo');")));
102105
dsl.transaction(new AssertFetch(dsl, "select count(*) as total from jooqtest_tx;", "1"));
103106
});
107+
}
108+
109+
@Test
110+
void jooqWithDefaultConnectionProvider() {
111+
this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class).run((context) -> {
112+
DSLContext dsl = context.getBean(DSLContext.class);
113+
ConnectionProvider connectionProvider = dsl.configuration().connectionProvider();
114+
assertThat(connectionProvider).isInstanceOf(DataSourceConnectionProvider.class);
115+
DataSource connectionProviderDataSource = ((DataSourceConnectionProvider) connectionProvider).dataSource();
116+
assertThat(connectionProviderDataSource).isInstanceOf(TransactionAwareDataSourceProxy.class);
117+
});
118+
}
119+
120+
@Test
121+
void jooqWithDefaultExecuteListenerProvider() {
122+
this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class).run((context) -> {
123+
DSLContext dsl = context.getBean(DSLContext.class);
124+
assertThat(dsl.configuration().executeListenerProviders()).hasSize(1);
125+
});
126+
}
104127

128+
@Test
129+
void jooqWithSeveralExecuteListenerProviders() {
130+
this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class, TestExecuteListenerProvider.class)
131+
.run((context) -> {
132+
DSLContext dsl = context.getBean(DSLContext.class);
133+
ExecuteListenerProvider[] executeListenerProviders = dsl.configuration().executeListenerProviders();
134+
assertThat(executeListenerProviders).hasSize(2);
135+
assertThat(executeListenerProviders[0]).isInstanceOf(DefaultExecuteListenerProvider.class);
136+
assertThat(executeListenerProviders[1]).isInstanceOf(TestExecuteListenerProvider.class);
137+
});
105138
}
106139

107140
@Test
@@ -129,9 +162,7 @@ void customProvidersArePickedUp() {
129162
VisitListenerProvider visitListenerProvider = mock(VisitListenerProvider.class);
130163
TransactionListenerProvider transactionListenerProvider = mock(TransactionListenerProvider.class);
131164
ExecutorProvider executorProvider = mock(ExecutorProvider.class);
132-
this.contextRunner
133-
.withUserConfiguration(JooqDataSourceConfiguration.class, TxManagerConfiguration.class,
134-
TestExecuteListenerProvider.class)
165+
this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class, TxManagerConfiguration.class)
135166
.withBean(RecordMapperProvider.class, () -> recordMapperProvider)
136167
.withBean(RecordUnmapperProvider.class, () -> recordUnmapperProvider)
137168
.withBean(RecordListenerProvider.class, () -> recordListenerProvider)
@@ -143,10 +174,6 @@ void customProvidersArePickedUp() {
143174
assertThat(dsl.configuration().recordUnmapperProvider()).isSameAs(recordUnmapperProvider);
144175
assertThat(dsl.configuration().executorProvider()).isSameAs(executorProvider);
145176
assertThat(dsl.configuration().recordListenerProviders()).containsExactly(recordListenerProvider);
146-
ExecuteListenerProvider[] executeListenerProviders = dsl.configuration().executeListenerProviders();
147-
assertThat(executeListenerProviders).hasSize(2);
148-
assertThat(executeListenerProviders[0]).isInstanceOf(DefaultExecuteListenerProvider.class);
149-
assertThat(executeListenerProviders[1]).isInstanceOf(TestExecuteListenerProvider.class);
150177
assertThat(dsl.configuration().visitListenerProviders()).containsExactly(visitListenerProvider);
151178
assertThat(dsl.configuration().transactionListenerProviders())
152179
.containsExactly(transactionListenerProvider);

0 commit comments

Comments
 (0)