#1639 - Prepare 2.0 development.
Upgrade to Java 17 and Spring Framework 6. Switch to JakartaEE 9 version of the Servlet API. Drop support for Joda Time. Configure Kotlin plugin to target JDK 1.8 as it doesn't support 17, yet.
This commit is contained in:
115
Jenkinsfile
vendored
115
Jenkinsfile
vendored
@@ -2,7 +2,7 @@ pipeline {
|
||||
agent none
|
||||
|
||||
triggers {
|
||||
pollSCM 'H/10 * * * *'
|
||||
pollSCM 'H/3 * * * *'
|
||||
}
|
||||
|
||||
options {
|
||||
@@ -11,7 +11,7 @@ pipeline {
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Publish OpenJDK 8 + Graphviz + jq docker image') {
|
||||
stage('Publish OpenJDK 17 + Graphviz + jq docker image') {
|
||||
when {
|
||||
changeset "ci/Dockerfile"
|
||||
}
|
||||
@@ -19,7 +19,7 @@ pipeline {
|
||||
|
||||
steps {
|
||||
script {
|
||||
def image = docker.build("springci/spring-hateoas-openjdk8-with-graphviz-and-jq", "ci/")
|
||||
def image = docker.build("springci/spring-hateoas-openjdk17-with-graphviz-and-jq", "ci/")
|
||||
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
|
||||
image.push()
|
||||
}
|
||||
@@ -27,10 +27,10 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
stage("test: baseline (jdk8)") {
|
||||
stage("test: baseline (JDK 17)") {
|
||||
agent {
|
||||
docker {
|
||||
image 'adoptopenjdk/openjdk8:latest'
|
||||
image 'openjdk:17'
|
||||
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
|
||||
}
|
||||
}
|
||||
@@ -40,111 +40,10 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
stage("Test other configurations") {
|
||||
parallel {
|
||||
stage("test: baseline (jdk11)") {
|
||||
agent {
|
||||
docker {
|
||||
image 'adoptopenjdk/openjdk11:latest'
|
||||
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
|
||||
}
|
||||
}
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
steps {
|
||||
sh 'PROFILE=none ci/test.sh'
|
||||
}
|
||||
}
|
||||
stage("test: baseline (jdk17)") {
|
||||
agent {
|
||||
docker {
|
||||
image 'openjdk:17'
|
||||
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
|
||||
}
|
||||
}
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
steps {
|
||||
sh 'PROFILE=none ci/test.sh'
|
||||
}
|
||||
}
|
||||
stage("test: spring-next (jdk8)") {
|
||||
agent {
|
||||
docker {
|
||||
image 'adoptopenjdk/openjdk8:latest'
|
||||
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
|
||||
}
|
||||
}
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
steps {
|
||||
sh 'PROFILE=spring-next ci/test.sh'
|
||||
}
|
||||
}
|
||||
stage("test: spring-next (jdk11)") {
|
||||
agent {
|
||||
docker {
|
||||
image 'adoptopenjdk/openjdk11:latest'
|
||||
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
|
||||
}
|
||||
}
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
steps {
|
||||
sh 'PROFILE=spring-next ci/test.sh'
|
||||
}
|
||||
}
|
||||
stage("test: spring-next (jdk17)") {
|
||||
agent {
|
||||
docker {
|
||||
image 'openjdk:17'
|
||||
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
|
||||
}
|
||||
}
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
steps {
|
||||
sh 'PROFILE=spring-next ci/test.sh'
|
||||
}
|
||||
}
|
||||
stage("test: kotlin-next (jdk8)") {
|
||||
agent {
|
||||
docker {
|
||||
image 'adoptopenjdk/openjdk8:latest'
|
||||
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
|
||||
}
|
||||
}
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
steps {
|
||||
sh 'PROFILE=kotlin-next ci/test.sh'
|
||||
}
|
||||
}
|
||||
stage("test: kotlin-next (jdk11)") {
|
||||
agent {
|
||||
docker {
|
||||
image 'adoptopenjdk/openjdk11:latest'
|
||||
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
|
||||
}
|
||||
}
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
steps {
|
||||
sh 'PROFILE=kotlin-next ci/test.sh'
|
||||
}
|
||||
}
|
||||
stage("test: kotlin-next (jdk17)") {
|
||||
agent {
|
||||
docker {
|
||||
image 'openjdk:17'
|
||||
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
|
||||
}
|
||||
}
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
steps {
|
||||
sh 'PROFILE=kotlin-next ci/test.sh'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Deploy') {
|
||||
agent {
|
||||
docker {
|
||||
image 'springci/spring-hateoas-openjdk8-with-graphviz-and-jq:latest'
|
||||
image 'springci/spring-hateoas-openjdk17-with-graphviz-and-jq:latest'
|
||||
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
|
||||
}
|
||||
}
|
||||
@@ -196,7 +95,7 @@ pipeline {
|
||||
}
|
||||
agent {
|
||||
docker {
|
||||
image 'springci/spring-hateoas-openjdk8-with-graphviz-and-jq:latest'
|
||||
image 'springci/spring-hateoas-openjdk17-with-graphviz-and-jq:latest'
|
||||
args '-v $HOME/.m2:/tmp/jenkins-home/.m2'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
FROM adoptopenjdk/openjdk8:latest
|
||||
FROM openjdk:17-bullseye
|
||||
|
||||
RUN sed -i -e 's/http/https/g' /etc/apt/sources.list
|
||||
|
||||
RUN apt-get update && apt-get install -y graphviz jq gpg
|
||||
|
||||
|
||||
31
pom.xml
31
pom.xml
@@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>org.springframework.hateoas</groupId>
|
||||
<artifactId>spring-hateoas</artifactId>
|
||||
<version>1.5.0-SNAPSHOT</version>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
|
||||
<name>Spring HATEOAS</name>
|
||||
<url>https://github.com/spring-projects/spring-hateoas</url>
|
||||
@@ -69,7 +69,7 @@
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<source.level>1.8</source.level>
|
||||
<source.level>17</source.level>
|
||||
<assertj.version>3.21.0</assertj.version>
|
||||
<docs.resources.version>0.2.5</docs.resources.version>
|
||||
<evo.version>1.3</evo.version>
|
||||
@@ -83,7 +83,7 @@
|
||||
<lombok.version>1.18.22</lombok.version>
|
||||
<reactor-bom.version>2020.0.15</reactor-bom.version>
|
||||
<slf4j.version>1.7.32</slf4j.version>
|
||||
<spring.version>5.3.15</spring.version>
|
||||
<spring.version>6.0.0-SNAPSHOT</spring.version>
|
||||
<spring-plugin.version>2.0.0.RELEASE</spring-plugin.version>
|
||||
<kotlin.version>1.6.10</kotlin.version>
|
||||
<kotlinx-coroutines.version>1.6.0</kotlinx-coroutines.version>
|
||||
@@ -981,16 +981,9 @@
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>joda-time</groupId>
|
||||
<artifactId>joda-time</artifactId>
|
||||
<version>2.10.10</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>4.0.1</version>
|
||||
<groupId>jakarta.servlet</groupId>
|
||||
<artifactId>jakarta.servlet-api</artifactId>
|
||||
<version>5.0.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -1058,7 +1051,7 @@
|
||||
<doclint>none</doclint>
|
||||
<links>
|
||||
<link>https://docs.spring.io/spring/docs/${spring.version}/javadoc-api/</link>
|
||||
<link>https://docs.oracle.com/javase/8/docs/api/</link>
|
||||
<link>https://docs.oracle.com/en/java/javase/17/docs/api/</link>
|
||||
</links>
|
||||
</configuration>
|
||||
</plugin>
|
||||
@@ -1160,12 +1153,13 @@
|
||||
<useSystemClassLoader>false</useSystemClassLoader>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-maven-plugin</artifactId>
|
||||
<version>${kotlin.version}</version>
|
||||
<configuration>
|
||||
<jvmTarget>${source.level}</jvmTarget>
|
||||
<jvmTarget>1.8</jvmTarget>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
@@ -1212,6 +1206,13 @@
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>spring-snapshot</id>
|
||||
<url>https://repo.spring.io/snapshot</url>
|
||||
<releases>
|
||||
<enabled>false</enabled>
|
||||
</releases>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<pluginRepositories>
|
||||
|
||||
@@ -17,8 +17,6 @@ package org.springframework.hateoas;
|
||||
|
||||
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
|
||||
|
||||
import lombok.var;
|
||||
|
||||
import org.springframework.hateoas.SimpleRepresentationModelAssemblerTest.Employee;
|
||||
import org.springframework.hateoas.mediatype.Affordances;
|
||||
import org.springframework.http.HttpMethod;
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package org.springframework.hateoas.server.mvc;
|
||||
|
||||
import jakarta.servlet.ServletContext;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -25,8 +27,6 @@ import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.format.support.DefaultFormattingConversionService;
|
||||
|
||||
@@ -17,10 +17,10 @@ package org.springframework.hateoas;
|
||||
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.springframework.mock.web.MockFilterChain;
|
||||
|
||||
@@ -18,13 +18,13 @@ package org.springframework.hateoas.server.mvc;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.format.ISODateTimeFormat;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
@@ -96,11 +96,11 @@ class WebMvcLinkBuilderFactoryUnitTest extends TestUtils {
|
||||
@Test
|
||||
void usesDateTimeFormatForUriBinding() {
|
||||
|
||||
DateTime now = DateTime.now();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
WebMvcLinkBuilderFactory factory = new WebMvcLinkBuilderFactory();
|
||||
Link link = factory.linkTo(methodOn(SampleController.class).sampleMethod(now)).withSelfRel();
|
||||
assertThat(link.getHref()).endsWith("/sample/" + ISODateTimeFormat.date().print(now));
|
||||
assertThat(link.getHref()).endsWith("/sample/" + now.format(DateTimeFormatter.ISO_DATE));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -190,7 +190,7 @@ class WebMvcLinkBuilderFactoryUnitTest extends TestUtils {
|
||||
HttpEntity<?> sampleMethod(@PathVariable("id") Long id, SpecialType parameter);
|
||||
|
||||
@RequestMapping("/sample/{time}")
|
||||
HttpEntity<?> sampleMethod(@PathVariable("time") @DateTimeFormat(iso = ISO.DATE) DateTime time);
|
||||
HttpEntity<?> sampleMethod(@PathVariable("time") @DateTimeFormat(iso = ISO.DATE) LocalDateTime time);
|
||||
|
||||
@RequestMapping("/sample/mapsupport")
|
||||
HttpEntity<?> sampleMethodWithMap(@RequestParam Map<String, String> queryParams);
|
||||
|
||||
Reference in New Issue
Block a user