Merge pull request #14471 from Davin Kevin

* gh-14471:
  Polish "Use ExecutorProvider bean if available when auto-configuring jOOQ"
  Use ExecutorProvider bean if available when auto-configuring jOOQ
This commit is contained in:
Andy Wilkinson
2018-09-17 11:26:02 +01:00
3 changed files with 26 additions and 2 deletions

View File

@@ -21,6 +21,7 @@ import javax.sql.DataSource;
import org.jooq.ConnectionProvider;
import org.jooq.DSLContext;
import org.jooq.ExecuteListenerProvider;
import org.jooq.ExecutorProvider;
import org.jooq.RecordListenerProvider;
import org.jooq.RecordMapperProvider;
import org.jooq.RecordUnmapperProvider;
@@ -109,6 +110,8 @@ public class JooqAutoConfiguration {
private final TransactionListenerProvider[] transactionListenerProviders;
private final ExecutorProvider executorProvider;
public DslContextConfiguration(JooqProperties properties,
ConnectionProvider connectionProvider, DataSource dataSource,
ObjectProvider<TransactionProvider> transactionProvider,
@@ -118,7 +121,8 @@ public class JooqAutoConfiguration {
ObjectProvider<RecordListenerProvider[]> recordListenerProviders,
ExecuteListenerProvider[] executeListenerProviders,
ObjectProvider<VisitListenerProvider[]> visitListenerProviders,
ObjectProvider<TransactionListenerProvider[]> transactionListenerProviders) {
ObjectProvider<TransactionListenerProvider[]> transactionListenerProviders,
ObjectProvider<ExecutorProvider> executorProvider) {
this.properties = properties;
this.connection = connectionProvider;
this.dataSource = dataSource;
@@ -131,6 +135,7 @@ public class JooqAutoConfiguration {
this.visitListenerProviders = visitListenerProviders.getIfAvailable();
this.transactionListenerProviders = transactionListenerProviders
.getIfAvailable();
this.executorProvider = executorProvider.getIfAvailable();
}
@Bean
@@ -156,6 +161,9 @@ public class JooqAutoConfiguration {
if (this.settings != null) {
configuration.set(this.settings);
}
if (this.executorProvider != null) {
configuration.set(this.executorProvider);
}
configuration.set(this.recordListenerProviders);
configuration.set(this.executeListenerProviders);
configuration.set(this.visitListenerProviders);

View File

@@ -16,11 +16,14 @@
package org.springframework.boot.autoconfigure.jooq;
import java.util.concurrent.Executor;
import javax.sql.DataSource;
import org.jooq.DSLContext;
import org.jooq.ExecuteListener;
import org.jooq.ExecuteListenerProvider;
import org.jooq.ExecutorProvider;
import org.jooq.Record;
import org.jooq.RecordListener;
import org.jooq.RecordListenerProvider;
@@ -141,12 +144,15 @@ public class JooqAutoConfigurationTests {
TxManagerConfiguration.class, TestRecordMapperProvider.class,
TestRecordUnmapperProvider.class, TestRecordListenerProvider.class,
TestExecuteListenerProvider.class, TestVisitListenerProvider.class,
TestTransactionListenerProvider.class).run((context) -> {
TestTransactionListenerProvider.class, TestExecutorProvider.class)
.run((context) -> {
DSLContext dsl = context.getBean(DSLContext.class);
assertThat(dsl.configuration().recordMapperProvider().getClass())
.isEqualTo(TestRecordMapperProvider.class);
assertThat(dsl.configuration().recordUnmapperProvider().getClass())
.isEqualTo(TestRecordUnmapperProvider.class);
assertThat(dsl.configuration().executorProvider().getClass())
.isEqualTo(TestExecutorProvider.class);
assertThat(dsl.configuration().recordListenerProviders().length)
.isEqualTo(1);
assertThat(dsl.configuration().executeListenerProviders().length)
@@ -288,4 +294,13 @@ public class JooqAutoConfigurationTests {
}
protected static class TestExecutorProvider implements ExecutorProvider {
@Override
public Executor provide() {
return null;
}
}
}

View File

@@ -3966,6 +3966,7 @@ which is used when the jOOQ `Configuration` is created. You can define beans for
following jOOQ Types:
* `ConnectionProvider`
* `ExecutorProvider`
* `TransactionProvider`
* `RecordMapperProvider`
* `RecordUnmapperProvider`