diff --git a/Jenkinsfile b/Jenkinsfile
index e01bee9f..2e7ddceb 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -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'
}
}
diff --git a/ci/Dockerfile b/ci/Dockerfile
index ccffe63b..d91fe0e3 100644
--- a/ci/Dockerfile
+++ b/ci/Dockerfile
@@ -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
diff --git a/pom.xml b/pom.xml
index 1b355f8f..eb59aa64 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.hateoas
spring-hateoas
- 1.5.0-SNAPSHOT
+ 2.0.0-SNAPSHOT
Spring HATEOAS
https://github.com/spring-projects/spring-hateoas
@@ -69,7 +69,7 @@
UTF-8
- 1.8
+ 17
3.21.0
0.2.5
1.3
@@ -83,7 +83,7 @@
1.18.22
2020.0.15
1.7.32
- 5.3.15
+ 6.0.0-SNAPSHOT
2.0.0.RELEASE
1.6.10
1.6.0
@@ -981,16 +981,9 @@
- joda-time
- joda-time
- 2.10.10
- test
-
-
-
- javax.servlet
- javax.servlet-api
- 4.0.1
+ jakarta.servlet
+ jakarta.servlet-api
+ 5.0.0
provided
@@ -1058,7 +1051,7 @@
none
https://docs.spring.io/spring/docs/${spring.version}/javadoc-api/
- https://docs.oracle.com/javase/8/docs/api/
+ https://docs.oracle.com/en/java/javase/17/docs/api/
@@ -1160,12 +1153,13 @@
false
+
org.jetbrains.kotlin
kotlin-maven-plugin
${kotlin.version}
- ${source.level}
+ 1.8
@@ -1212,6 +1206,13 @@
false
+
+ spring-snapshot
+ https://repo.spring.io/snapshot
+
+ false
+
+
diff --git a/src/docs/java/org/springframework/hateoas/AffordancesSample.java b/src/docs/java/org/springframework/hateoas/AffordancesSample.java
index a5294e75..91cf6fe6 100644
--- a/src/docs/java/org/springframework/hateoas/AffordancesSample.java
+++ b/src/docs/java/org/springframework/hateoas/AffordancesSample.java
@@ -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;
diff --git a/src/main/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderFactory.java b/src/main/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderFactory.java
index 2f4d365f..91d88e67 100644
--- a/src/main/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderFactory.java
+++ b/src/main/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderFactory.java
@@ -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;
diff --git a/src/test/java/org/springframework/hateoas/TestUtils.java b/src/test/java/org/springframework/hateoas/TestUtils.java
index fab28580..13648122 100644
--- a/src/test/java/org/springframework/hateoas/TestUtils.java
+++ b/src/test/java/org/springframework/hateoas/TestUtils.java
@@ -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;
diff --git a/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderFactoryUnitTest.java b/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderFactoryUnitTest.java
index 0b1dc899..ec9eebd4 100644
--- a/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderFactoryUnitTest.java
+++ b/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderFactoryUnitTest.java
@@ -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 queryParams);