From 715b275d496ba8a75f993df04796ac1cba485f34 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Tue, 20 May 2025 13:37:35 +0200 Subject: [PATCH 01/13] cherry-pick Dockerfile from develop branch - upgrade Dockerfile base images from jdk 17 to 21 - switch from focal to alpine --- Dockerfile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9ea7fb11..ec1a9fb2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ ################################################################################ # BUILD JAR -FROM maven:3-eclipse-temurin-17-focal AS builder +FROM maven:3-eclipse-temurin-21-alpine AS builder WORKDIR /builder @@ -16,12 +16,11 @@ RUN mvn --quiet --batch-mode --update-snapshots --fail-fast -DskipTests package ################################################################################ # BUILD IMAGE -FROM eclipse-temurin:17-jdk-focal +FROM eclipse-temurin:21-jdk-alpine # add non-root user to run the app # https://spring.io/guides/gs/spring-boot-docker -# on ubuntu the following creates a group with the same name as user -RUN adduser spring --system --group +RUN addgroup -S spring && adduser -S spring -G spring USER spring:spring WORKDIR /fdp From 7a26bdef62e29ad08366b2d7bbf8816a387dc173 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Tue, 20 May 2025 13:42:39 +0200 Subject: [PATCH 02/13] upgrade v1.17.x to JDK 21 --- .github/workflows/code-style.yml | 6 +++--- .github/workflows/docker-publish.yml | 2 +- .github/workflows/maven-verify.yml | 2 +- .github/workflows/security.yml | 2 +- README.md | 2 +- pom.xml | 4 ++-- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/code-style.yml b/.github/workflows/code-style.yml index 166f9385..7a1282c1 100644 --- a/.github/workflows/code-style.yml +++ b/.github/workflows/code-style.yml @@ -18,7 +18,7 @@ jobs: env: JAVA_DISTRIBUTION: temurin - JAVA_VERSION: 17 + JAVA_VERSION: 21 steps: - name: Checkout repository @@ -45,7 +45,7 @@ jobs: env: JAVA_DISTRIBUTION: temurin - JAVA_VERSION: 17 + JAVA_VERSION: 21 steps: - name: Checkout repository @@ -72,7 +72,7 @@ jobs: env: JAVA_DISTRIBUTION: temurin - JAVA_VERSION: 17 + JAVA_VERSION: 21 steps: - name: Checkout repository diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 42d7c902..5179430e 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -17,7 +17,7 @@ jobs: verify: uses: FAIRDataTeam/github-workflows/.github/workflows/maven-verify.yml@v2 with: - java-version: 17 + java-version: 21 # todo: enable tests when test duration has been minimized mvn-options: "-DskipTests" publish: diff --git a/.github/workflows/maven-verify.yml b/.github/workflows/maven-verify.yml index c6417e64..81c6ba8d 100644 --- a/.github/workflows/maven-verify.yml +++ b/.github/workflows/maven-verify.yml @@ -26,7 +26,7 @@ jobs: - os: macos-14 mongo: 8 java-version: - - 17 + - 21 uses: FAIRDataTeam/github-workflows/.github/workflows/maven-verify.yml@v2 with: runner: ${{ matrix.runner.os }} diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index fac0979e..e1789e1c 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -23,7 +23,7 @@ jobs: env: JAVA_DISTRIBUTION: temurin - JAVA_VERSION: 17 + JAVA_VERSION: 21 steps: - name: Checkout repository diff --git a/README.md b/README.md index a0c1b964..f4393b05 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ e.g. [app.fairdatapoint.org/swagger-ui.html](https://app.fairdatapoint.org/swagg ### Technology Stack -- **Java** (JDK 17) +- **Java** (JDK 21) - **MongoDB** (4.2) - **Maven** (3.2.5 or higher) - **Docker** (19.03.0-ce or higher) - *for building Docker image only* diff --git a/pom.xml b/pom.xml index a1d1cd98..38f02c11 100644 --- a/pom.xml +++ b/pom.xml @@ -47,8 +47,8 @@ UTF-8 - 17 - 17 + 21 + 21 2.0.0 From 2e0edf75efe6d70dc8fd872d7eb023bc678e2245 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Tue, 20 May 2025 14:02:29 +0200 Subject: [PATCH 03/13] cherry-pick pom.xml from develop branch except the postgres stuff --- pom.xml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 38f02c11..e8cc4a44 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.1.1 + 3.4.5 nl.dtls @@ -56,25 +56,25 @@ 6.0.0 - 2.1.0 + 2.8.6 5.3.1 4.1.1 - 4.3.2 - 0.11.5 - 1.18.28 + 5.1.3 + 0.12.6 + 1.18.38 - 5.2.1 + 5.4.4 - 4.2 + 5.0.0 0.7.6.201602180812 4.3.0 2.3.1 - 6.0.0 + 9.0.1 0.2.0 - 3.3.0 - 4.7.3.5 + 3.6.0 + 4.9.3.0 @@ -347,12 +347,12 @@ com.puppycrawl.tools checkstyle - 10.12.1 + 10.23.1 io.spring.javaformat spring-javaformat-checkstyle - 0.0.39 + 0.0.43 From 244ac59d06c4e3f03e03e7dda8053e061b613e57 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Tue, 20 May 2025 14:03:48 +0200 Subject: [PATCH 04/13] cherry-pick renamed io.jsonwebtoken methods in JwtService.java from develop branch --- .../dtls/fairdatapoint/service/jwt/JwtService.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/nl/dtls/fairdatapoint/service/jwt/JwtService.java b/src/main/java/nl/dtls/fairdatapoint/service/jwt/JwtService.java index db1cfe85..611dc25a 100644 --- a/src/main/java/nl/dtls/fairdatapoint/service/jwt/JwtService.java +++ b/src/main/java/nl/dtls/fairdatapoint/service/jwt/JwtService.java @@ -73,7 +73,7 @@ public class JwtService { protected void init() { secretKey = Base64.getEncoder().encodeToString(secretKey.getBytes()); key = new SecretKeySpec(secretKey.getBytes(), SignatureAlgorithm.HS256.getJcaName()); - parser = Jwts.parserBuilder().setSigningKey(key).build(); + parser = Jwts.parser().setSigningKey(key).build(); } public String createToken(AuthDTO authDTO) { @@ -94,13 +94,13 @@ public Authentication getAuthentication(String token) { } public String getUserUuid(String token) { - return parser.parseClaimsJws(token).getBody().getSubject(); + return parser.parseClaimsJws(token).getPayload().getSubject(); } public boolean validateToken(String token) { try { final Jws claims = parser.parseClaimsJws(token); - return !claims.getBody().getExpiration().before(new Date()); + return !claims.getPayload().getExpiration().before(new Date()); } catch (JwtException | IllegalArgumentException exception) { throw new UnauthorizedException("Expired or invalid JWT token"); @@ -108,13 +108,13 @@ public boolean validateToken(String token) { } private String buildToken(User user) { - final Claims claims = Jwts.claims().setSubject(user.getUuid()); + final Claims claims = Jwts.claims().subject(user.getUuid().toString()).build(); final Date now = new Date(); final Date validity = new Date(now.getTime() + (expiration * DAY_MS)); return Jwts.builder() - .setClaims(claims) - .setIssuedAt(now) - .setExpiration(validity) + .claims(claims) + .issuedAt(now) + .expiration(validity) .signWith(key) .compact(); } From 78c2291c90fa0d943baed843be423d7929b18af8 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Tue, 20 May 2025 14:17:03 +0200 Subject: [PATCH 05/13] upgrade two build dependencies --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index e8cc4a44..67414f7e 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ 6.0.0 - 2.8.6 + 2.8.8 5.3.1 4.1.1 5.1.3 @@ -352,7 +352,7 @@ io.spring.javaformat spring-javaformat-checkstyle - 0.0.43 + 0.0.44 From 31d67875024b84338e01139a7d7e666da87c0705 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Tue, 20 May 2025 14:17:31 +0200 Subject: [PATCH 06/13] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index afbe8714..401073f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Cleaned up Dockerfile (backport) - Separate Github workflows for test and publish (backport) +- Upgraded to Java JDK 21 (LTS) +- Upgraded to latest dependencies ## [1.17.2] From 449de744122896291586cc5f1ef32890156b8d47 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Tue, 20 May 2025 14:22:45 +0200 Subject: [PATCH 07/13] remove unused import --- .../service/metadata/state/MetadataStateService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/nl/dtls/fairdatapoint/service/metadata/state/MetadataStateService.java b/src/main/java/nl/dtls/fairdatapoint/service/metadata/state/MetadataStateService.java index aa3cf62f..2c5c37bf 100644 --- a/src/main/java/nl/dtls/fairdatapoint/service/metadata/state/MetadataStateService.java +++ b/src/main/java/nl/dtls/fairdatapoint/service/metadata/state/MetadataStateService.java @@ -44,7 +44,6 @@ import java.util.stream.Collectors; import static java.lang.String.format; -import static nl.dtls.fairdatapoint.entity.metadata.MetadataGetter.getUri; import static nl.dtls.fairdatapoint.util.RdfUtil.getObjectsBy; import static nl.dtls.fairdatapoint.util.ValueFactoryHelper.i; From 69cad8fedb318a3c5f9495f7f55032dd2a855452 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Tue, 20 May 2025 18:02:40 +0200 Subject: [PATCH 08/13] upgrade mongock version to latest --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 67414f7e..6dd09730 100644 --- a/pom.xml +++ b/pom.xml @@ -57,7 +57,7 @@ 2.8.8 - 5.3.1 + 5.5.1 4.1.1 5.1.3 0.12.6 From e16a01c6acfbe50dcd8d063cf2786be92313e0b9 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Tue, 20 May 2025 18:03:57 +0200 Subject: [PATCH 09/13] remove pinned version for spring-data-mongodb this caused a silent version conflict, because spring-data-mongodb is actually managed via the spring-boot-starter-parent --- pom.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pom.xml b/pom.xml index 6dd09730..fd25dd7a 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,6 @@ 2.8.8 5.5.1 - 4.1.1 5.1.3 0.12.6 1.18.38 @@ -175,7 +174,6 @@ org.springframework.data spring-data-mongodb - ${mongodb.spring-data.version} From 13cfe80d499ed93a4bf84d450d9f192022c74b18 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Wed, 21 May 2025 09:50:29 +0200 Subject: [PATCH 10/13] remove lombok version pin to prevent confllicts, because lombok is already managed by spring-boot-starter-parent --- pom.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pom.xml b/pom.xml index fd25dd7a..d52910fc 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,6 @@ 5.5.1 5.1.3 0.12.6 - 1.18.38 5.4.4 @@ -226,7 +225,6 @@ org.projectlombok lombok - ${lombok.version} From ad9b57690afb78ff8a8c826af60c1a164ef3d630 Mon Sep 17 00:00:00 2001 From: Patrick Dekker <168626347+PatrickDekkerHealthRI@users.noreply.github.com> Date: Tue, 27 May 2025 14:09:37 +0200 Subject: [PATCH 11/13] fix: update Metadataschema, test fixtures should produce valid objects (#703) --- .../development/schema/data/MetadataSchemaFixtures.java | 1 + .../nl/dtls/fairdatapoint/acceptance/schema/Import_POST.java | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/nl/dtls/fairdatapoint/database/mongo/migration/development/schema/data/MetadataSchemaFixtures.java b/src/main/java/nl/dtls/fairdatapoint/database/mongo/migration/development/schema/data/MetadataSchemaFixtures.java index c7af5276..a0d19b27 100644 --- a/src/main/java/nl/dtls/fairdatapoint/database/mongo/migration/development/schema/data/MetadataSchemaFixtures.java +++ b/src/main/java/nl/dtls/fairdatapoint/database/mongo/migration/development/schema/data/MetadataSchemaFixtures.java @@ -59,6 +59,7 @@ private MetadataSchema createSchemaFixture( .version(VERSION) .versionString(VERSION.toString()) .name(name) + .description("") .definition(definition) .targetClasses(targetClasses) .extendSchemas(extendsSchemas) diff --git a/src/test/java/nl/dtls/fairdatapoint/acceptance/schema/Import_POST.java b/src/test/java/nl/dtls/fairdatapoint/acceptance/schema/Import_POST.java index 23af7b31..50e7d34a 100644 --- a/src/test/java/nl/dtls/fairdatapoint/acceptance/schema/Import_POST.java +++ b/src/test/java/nl/dtls/fairdatapoint/acceptance/schema/Import_POST.java @@ -23,7 +23,6 @@ package nl.dtls.fairdatapoint.acceptance.schema; import nl.dtls.fairdatapoint.WebIntegrationTest; -import nl.dtls.fairdatapoint.api.dto.schema.MetadataSchemaRemoteDTO; import nl.dtls.fairdatapoint.api.dto.schema.MetadataSchemaVersionDTO; import nl.dtls.fairdatapoint.database.mongo.migration.development.schema.data.MetadataSchemaFixtures; import nl.dtls.fairdatapoint.database.mongo.repository.MetadataSchemaRepository; @@ -73,6 +72,8 @@ private MetadataSchemaVersionDTO schemaPublicDTO1() { .description(metadataSchemaFixtures.customSchema().getDescription()) .definition(metadataSchemaFixtures.customSchema().getDefinition()) .abstractSchema(metadataSchemaFixtures.customSchema().isAbstractSchema()) + .type(metadataSchemaFixtures.customSchema().getType()) + .targetClasses(metadataSchemaFixtures.customSchema().getTargetClasses()) .extendsSchemaUuids(Collections.emptyList()) .build(); } @@ -91,6 +92,8 @@ private MetadataSchemaVersionDTO schemaPublicDTO2() { .description(metadataSchemaFixtures.customSchema().getDescription()) .definition(metadataSchemaFixtures.customSchema().getDefinition()) .abstractSchema(metadataSchemaFixtures.customSchema().isAbstractSchema()) + .type(metadataSchemaFixtures.customSchema().getType()) + .targetClasses(metadataSchemaFixtures.customSchema().getTargetClasses()) .extendsSchemaUuids(Collections.emptyList()) .build(); } From bf3fe90bf1ba78219e8e6495ecc8141e3b7c9621 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Thu, 29 May 2025 22:23:03 +0200 Subject: [PATCH 12/13] bump versions for checkstyle and httpclient5 to match develop --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index d52910fc..28ebd5ba 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ 0.12.6 - 5.4.4 + 5.5 5.0.0 @@ -343,12 +343,12 @@ com.puppycrawl.tools checkstyle - 10.23.1 + 10.24.0 io.spring.javaformat spring-javaformat-checkstyle - 0.0.44 + 0.0.45 From 89754290f683a585af931b62a5b878d8815a1dd4 Mon Sep 17 00:00:00 2001 From: dennisvang <29799340+dennisvang@users.noreply.github.com> Date: Thu, 29 May 2025 23:09:33 +0200 Subject: [PATCH 13/13] Bump org.springframework.boot:spring-boot-starter-parent from 3.4.5 to 3.5.0 (#702) * Bump org.springframework.boot:spring-boot-starter-parent Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.4.5 to 3.5.0. - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.4.5...v3.5.0) --- updated-dependencies: - dependency-name: org.springframework.boot:spring-boot-starter-parent dependency-version: 3.5.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * fix test res302_redirectsToSwaggerUI spring-boot 3.5 changed the way TestRestTemplate handles redirects https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes#follow-redirects-with-testresttemplate --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dennisvang <29799340+dennisvang@users.noreply.github.com> --- pom.xml | 2 +- .../dtls/fairdatapoint/acceptance/openapi/SwaggerUI_GET.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 28ebd5ba..189cbcbd 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.4.5 + 3.5.0 nl.dtls diff --git a/src/test/java/nl/dtls/fairdatapoint/acceptance/openapi/SwaggerUI_GET.java b/src/test/java/nl/dtls/fairdatapoint/acceptance/openapi/SwaggerUI_GET.java index 65d8b4ee..8caf7c76 100644 --- a/src/test/java/nl/dtls/fairdatapoint/acceptance/openapi/SwaggerUI_GET.java +++ b/src/test/java/nl/dtls/fairdatapoint/acceptance/openapi/SwaggerUI_GET.java @@ -27,6 +27,7 @@ import nl.dtls.fairdatapoint.utils.CustomPageImpl; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -61,7 +62,8 @@ public void res302_redirectsToSwaggerUI() { .build(); // WHEN - ResponseEntity result = client.exchange(request, new ParameterizedTypeReference<>() {}); + ResponseEntity result = client.withRedirects(ClientHttpRequestFactorySettings.Redirects.DONT_FOLLOW) + .exchange(request, new ParameterizedTypeReference<>() {}); // THEN assertThat("Response code is FOUND", result.getStatusCode(), is(equalTo(HttpStatus.FOUND)));