From e094c3e7e32099ce0fe9146f40bc6a562d880821 Mon Sep 17 00:00:00 2001 From: Dmytro Nosan Date: Fri, 1 Jun 2018 21:01:44 +0300 Subject: [PATCH 1/2] add TransactionListenerProvider. --- .../jooq/JooqAutoConfiguration.java | 15 ++++++++++++--- .../jooq/JooqAutoConfigurationTests.java | 19 +++++++++++++++++-- .../main/asciidoc/spring-boot-features.adoc | 1 + 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java index bf8052bb995e..aa6faa9f625a 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java @@ -24,6 +24,7 @@ import org.jooq.RecordListenerProvider; import org.jooq.RecordMapperProvider; import org.jooq.RecordUnmapperProvider; +import org.jooq.TransactionListenerProvider; import org.jooq.TransactionProvider; import org.jooq.VisitListenerProvider; import org.jooq.conf.Settings; @@ -51,6 +52,7 @@ * * @author Andreas Ahlenstorf * @author Michael Simons + * @author Dmytro Nosan * @since 1.3.0 */ @Configuration @@ -105,6 +107,8 @@ public static class DslContextConfiguration { private final VisitListenerProvider[] visitListenerProviders; + private final TransactionListenerProvider[] transactionListenerProviders; + public DslContextConfiguration(JooqProperties properties, ConnectionProvider connectionProvider, DataSource dataSource, ObjectProvider transactionProvider, @@ -112,8 +116,9 @@ public DslContextConfiguration(JooqProperties properties, ObjectProvider recordUnmapperProvider, ObjectProvider settings, ObjectProvider recordListenerProviders, - ExecuteListenerProvider[] executeListenerProviders, - ObjectProvider visitListenerProviders) { + ObjectProvider executeListenerProviders, + ObjectProvider visitListenerProviders, + ObjectProvider transactionListenerProviders) { this.properties = properties; this.connection = connectionProvider; this.dataSource = dataSource; @@ -122,8 +127,10 @@ public DslContextConfiguration(JooqProperties properties, this.recordUnmapperProvider = recordUnmapperProvider.getIfAvailable(); this.settings = settings.getIfAvailable(); this.recordListenerProviders = recordListenerProviders.getIfAvailable(); - this.executeListenerProviders = executeListenerProviders; + this.executeListenerProviders = executeListenerProviders.getIfAvailable(); this.visitListenerProviders = visitListenerProviders.getIfAvailable(); + this.transactionListenerProviders = transactionListenerProviders + .getIfAvailable(); } @Bean @@ -152,6 +159,8 @@ public DefaultConfiguration jooqConfiguration() { configuration.set(this.recordListenerProviders); configuration.set(this.executeListenerProviders); configuration.set(this.visitListenerProviders); + configuration + .setTransactionListenerProvider(this.transactionListenerProviders); return configuration; } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfigurationTests.java index e7c99e81f8c2..e968651d36cb 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfigurationTests.java @@ -30,6 +30,8 @@ import org.jooq.RecordUnmapper; import org.jooq.RecordUnmapperProvider; import org.jooq.SQLDialect; +import org.jooq.TransactionListener; +import org.jooq.TransactionListenerProvider; import org.jooq.TransactionalRunnable; import org.jooq.VisitListener; import org.jooq.VisitListenerProvider; @@ -56,6 +58,7 @@ * @author Phillip Webb * @author Andy Wilkinson * @author Stephane Nicoll + * @author Dmytro Nosan */ public class JooqAutoConfigurationTests { @@ -137,8 +140,8 @@ public void customProvidersArePickedUp() { this.contextRunner.withUserConfiguration(JooqDataSourceConfiguration.class, TxManagerConfiguration.class, TestRecordMapperProvider.class, TestRecordUnmapperProvider.class, TestRecordListenerProvider.class, - TestExecuteListenerProvider.class, TestVisitListenerProvider.class) - .run((context) -> { + TestExecuteListenerProvider.class, TestVisitListenerProvider.class, + TestTransactionListenerProvider.class).run((context) -> { DSLContext dsl = context.getBean(DSLContext.class); assertThat(dsl.configuration().recordMapperProvider().getClass()) .isEqualTo(TestRecordMapperProvider.class); @@ -150,6 +153,8 @@ public void customProvidersArePickedUp() { .isEqualTo(2); assertThat(dsl.configuration().visitListenerProviders().length) .isEqualTo(1); + assertThat(dsl.configuration().transactionListenerProviders().length) + .isEqualTo(1); }); } @@ -273,4 +278,14 @@ public VisitListener provide() { } + protected static class TestTransactionListenerProvider + implements TransactionListenerProvider { + + @Override + public TransactionListener provide() { + return null; + } + + } + } diff --git a/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc b/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc index d0677cafd94c..e97bd9ff6839 100644 --- a/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc +++ b/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc @@ -3773,6 +3773,7 @@ following jOOQ Types: * `RecordListenerProvider` * `ExecuteListenerProvider` * `VisitListenerProvider` +* `TransactionListenerProvider` You can also create your own `org.jooq.Configuration` `@Bean` if you want to take complete control of the jOOQ configuration. From 89073d0255d413a7205c292fc4e0196940cfde45 Mon Sep 17 00:00:00 2001 From: Dmytro Nosan Date: Mon, 4 Jun 2018 16:14:38 +0300 Subject: [PATCH 2/2] ObjectProvider executeListenerProviders. --- .../boot/autoconfigure/jooq/JooqAutoConfiguration.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java index aa6faa9f625a..5a0507ca0524 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration.java @@ -116,7 +116,7 @@ public DslContextConfiguration(JooqProperties properties, ObjectProvider recordUnmapperProvider, ObjectProvider settings, ObjectProvider recordListenerProviders, - ObjectProvider executeListenerProviders, + ExecuteListenerProvider[] executeListenerProviders, ObjectProvider visitListenerProviders, ObjectProvider transactionListenerProviders) { this.properties = properties; @@ -127,7 +127,7 @@ public DslContextConfiguration(JooqProperties properties, this.recordUnmapperProvider = recordUnmapperProvider.getIfAvailable(); this.settings = settings.getIfAvailable(); this.recordListenerProviders = recordListenerProviders.getIfAvailable(); - this.executeListenerProviders = executeListenerProviders.getIfAvailable(); + this.executeListenerProviders = executeListenerProviders; this.visitListenerProviders = visitListenerProviders.getIfAvailable(); this.transactionListenerProviders = transactionListenerProviders .getIfAvailable();