Browse Source

Upgrade to jOOQ 3.20 and require Java 21 to use it

Closes gh-48619
pull/48869/head
Andy Wilkinson 4 weeks ago
parent
commit
56928bbe38
  1. 3
      documentation/spring-boot-docs/src/docs/antora/modules/ROOT/pages/system-requirements.adoc
  2. 1
      module/spring-boot-flyway/build.gradle
  3. 45
      module/spring-boot-flyway/src/test/java/org/springframework/boot/flyway/autoconfigure/FlywayAutoConfigurationTests.java
  4. 6
      module/spring-boot-jooq-test/build.gradle
  5. 7
      module/spring-boot-jooq/build.gradle
  6. 105
      module/spring-boot-jooq/src/test/java/org/springframework/boot/jooq/autoconfigure/JooqFlywayDatabaseInitializationTests.java
  7. 2
      module/spring-boot-jooq/src/test/resources/org/springframework/boot/jooq/autoconfigure/settings.xml
  8. 6
      platform/spring-boot-dependencies/build.gradle

3
documentation/spring-boot-docs/src/docs/antora/modules/ROOT/pages/system-requirements.adoc

@ -4,6 +4,9 @@ @@ -4,6 +4,9 @@
Spring Boot {version-spring-boot} requires at least https://www.java.com[Java 17] and is compatible with versions up to and including Java 25.
{url-spring-framework-docs}/[Spring Framework {version-spring-framework}] or above is also required.
Support for third-party projects may have additional or higher requirements.
Refer to the documentation for that support for further details.
Explicit build support is provided for the following build tools:
|===

1
module/spring-boot-flyway/build.gradle

@ -49,7 +49,6 @@ dependencies { @@ -49,7 +49,6 @@ dependencies {
dockerTestRuntimeOnly("org.postgresql:postgresql")
testImplementation(project(":core:spring-boot-test"))
testImplementation(project(":module:spring-boot-jooq"))
testImplementation(project(":test-support:spring-boot-test-support"))
testImplementation(testFixtures(project(":core:spring-boot-autoconfigure")))
testImplementation("jakarta.persistence:jakarta.persistence-api")

45
module/spring-boot-flyway/src/test/java/org/springframework/boot/flyway/autoconfigure/FlywayAutoConfigurationTests.java

@ -49,9 +49,6 @@ import org.flywaydb.database.oracle.OracleConfigurationExtension; @@ -49,9 +49,6 @@ import org.flywaydb.database.oracle.OracleConfigurationExtension;
import org.flywaydb.database.postgresql.PostgreSQLConfigurationExtension;
import org.flywaydb.database.sqlserver.SQLServerConfigurationExtension;
import org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform;
import org.jooq.DSLContext;
import org.jooq.SQLDialect;
import org.jooq.impl.DefaultDSLContext;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InOrder;
@ -60,7 +57,6 @@ import org.postgresql.Driver; @@ -60,7 +57,6 @@ import org.postgresql.Driver;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.aot.hint.predicate.RuntimeHintsPredicates;
import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.flyway.autoconfigure.FlywayAutoConfiguration.FlywayAutoConfigurationRuntimeHints;
@ -822,37 +818,6 @@ class FlywayAutoConfigurationTests { @@ -822,37 +818,6 @@ class FlywayAutoConfigurationTests {
});
}
@Test
void whenFlywayIsAutoConfiguredThenJooqDslContextDependsOnFlywayBeans() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class, JooqConfiguration.class)
.run((context) -> {
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("flywayInitializer", "flyway");
});
}
@Test
void whenCustomMigrationInitializerIsDefinedThenJooqDslContextDependsOnIt() {
this.contextRunner
.withUserConfiguration(EmbeddedDataSourceConfiguration.class, JooqConfiguration.class,
CustomFlywayMigrationInitializer.class)
.run((context) -> {
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("flywayMigrationInitializer",
"flyway");
});
}
@Test
void whenCustomFlywayIsDefinedThenJooqDslContextDependsOnIt() {
this.contextRunner
.withUserConfiguration(EmbeddedDataSourceConfiguration.class, JooqConfiguration.class, CustomFlyway.class)
.run((context) -> {
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("customFlyway");
});
}
@Test
void scriptPlaceholderPrefixIsCorrectlyMapped() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
@ -1186,16 +1151,6 @@ class FlywayAutoConfigurationTests { @@ -1186,16 +1151,6 @@ class FlywayAutoConfigurationTests {
}
@Configuration(proxyBeanMethods = false)
static class JooqConfiguration {
@Bean
DSLContext dslContext() {
return new DefaultDSLContext(SQLDialect.H2);
}
}
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(DataSourceProperties.class)
abstract static class AbstractUserH2DataSourceConfiguration {

6
module/spring-boot-jooq-test/build.gradle

@ -23,6 +23,12 @@ plugins { @@ -23,6 +23,12 @@ plugins {
description = "Spring Boot jOOQ Test"
systemRequirements {
java {
version = JavaLanguageVersion.of(21)
}
}
dependencies {
api(project(":core:spring-boot-test-autoconfigure"))
api(project(":module:spring-boot-jdbc-test"))

7
module/spring-boot-jooq/build.gradle

@ -24,6 +24,12 @@ plugins { @@ -24,6 +24,12 @@ plugins {
description = "Spring Boot jOOQ"
systemRequirements {
java {
version = JavaLanguageVersion.of(21)
}
}
dependencies {
api(project(":module:spring-boot-jdbc"))
api(project(":module:spring-boot-transaction"))
@ -34,6 +40,7 @@ dependencies { @@ -34,6 +40,7 @@ dependencies {
optional("jakarta.xml.bind:jakarta.xml.bind-api")
testImplementation(project(":core:spring-boot-test"))
testImplementation(project(":module:spring-boot-flyway"))
testImplementation(project(":test-support:spring-boot-test-support"))
testRuntimeOnly("ch.qos.logback:logback-classic")

105
module/spring-boot-jooq/src/test/java/org/springframework/boot/jooq/autoconfigure/JooqFlywayDatabaseInitializationTests.java

@ -0,0 +1,105 @@ @@ -0,0 +1,105 @@
/*
* Copyright 2012-present the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.jooq.autoconfigure;
import org.flywaydb.core.Flyway;
import org.jooq.DSLContext;
import org.jooq.SQLDialect;
import org.jooq.impl.DefaultDSLContext;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.flyway.autoconfigure.FlywayAutoConfiguration;
import org.springframework.boot.flyway.autoconfigure.FlywayMigrationInitializer;
import org.springframework.boot.jdbc.autoconfigure.EmbeddedDataSourceConfiguration;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests for jOQQ when Flyway is being used for DB initialization.
*
* @author Andy Wilkinson
*/
class JooqFlywayDatabaseInitializationTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(FlywayAutoConfiguration.class))
.withUserConfiguration(EmbeddedDataSourceConfiguration.class, JooqConfiguration.class)
.withPropertyValues("spring.datasource.generate-unique-name=true");
@Test
void whenFlywayIsAutoConfiguredThenJooqDslContextDependsOnFlywayBeans() {
this.contextRunner.run((context) -> {
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("flywayInitializer", "flyway");
});
}
@Test
void whenCustomMigrationInitializerIsDefinedThenJooqDslContextDependsOnIt() {
this.contextRunner.withUserConfiguration(CustomFlywayMigrationInitializer.class).run((context) -> {
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("flywayMigrationInitializer", "flyway");
});
}
@Test
void whenCustomFlywayIsDefinedThenJooqDslContextDependsOnIt() {
this.contextRunner.withUserConfiguration(CustomFlyway.class).run((context) -> {
BeanDefinition beanDefinition = context.getBeanFactory().getBeanDefinition("dslContext");
assertThat(beanDefinition.getDependsOn()).containsExactlyInAnyOrder("customFlyway");
});
}
@Configuration(proxyBeanMethods = false)
static class JooqConfiguration {
@Bean
DSLContext dslContext() {
return new DefaultDSLContext(SQLDialect.H2);
}
}
@Configuration(proxyBeanMethods = false)
static class CustomFlywayMigrationInitializer {
@Bean
FlywayMigrationInitializer flywayMigrationInitializer(Flyway flyway) {
FlywayMigrationInitializer initializer = new FlywayMigrationInitializer(flyway);
initializer.setOrder(Ordered.HIGHEST_PRECEDENCE);
return initializer;
}
}
@Configuration(proxyBeanMethods = false)
static class CustomFlyway {
@Bean
Flyway customFlyway() {
return Flyway.configure().load();
}
}
}

2
module/spring-boot-jooq/src/test/resources/org/springframework/boot/jooq/autoconfigure/settings.xml

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<settings xmlns="http://www.jooq.org/xsd/jooq-runtime-3.19.29.xsd">
<settings xmlns="http://www.jooq.org/xsd/jooq-runtime-3.20.10.xsd">
<batchSize>100</batchSize>
</settings>

6
platform/spring-boot-dependencies/build.gradle

@ -1058,11 +1058,7 @@ bom { @@ -1058,11 +1058,7 @@ bom {
]
}
}
library("jOOQ", "3.19.29") {
prohibit {
versionRange "[3.20.0,)"
because "it requires Java 21"
}
library("jOOQ", "3.20.10") {
group("org.jooq") {
bom("jooq-bom")
plugins = [

Loading…
Cancel
Save