Java 17 across every JVM service; report-service and legacy-portal to Spring Boot 3.2.5 - #275
devin-ai-integration[bot] wants to merge 10 commits into
Conversation
Co-Authored-By: derek.wu <derekwu35@gmail.com>
…asures Maven modules on 17 Co-Authored-By: derek.wu <derekwu35@gmail.com>
…a 17, Boot 3 parent, profile yaml split) Co-Authored-By: derek.wu <derekwu35@gmail.com>
- parent spring-boot-starter-parent 3.2.5, java.version 17 (drop redundant maven.compiler.source/target) - Dockerfile builder maven:3.9-eclipse-temurin-17, runtime eclipse-temurin:17-jre-jammy - drop explicit hibernate.dialect (Hibernate 6 HHH90000025 deprecation; auto-detected) - remove stale LEGACY markers; README reflects the new platform - commons-configuration2 stays at 2.8.0 (CVE demo fixture) Co-Authored-By: derek.wu <derekwu35@gmail.com>
…gacy-portal' into devin/1788425768-java17-boot3
Co-Authored-By: derek.wu <derekwu35@gmail.com>
- pin parent to 3.2.5, drop stale springfox/commons-lang props and the JUnit 5 exclusion - SecurityFilterChain: springdoc paths (/swagger-ui.html, /v3/api-docs/**), lambda headers DSL - SwaggerConfig: expose OpenAPI bean via springdoc - Report.errorMessage: @JdbcTypeCode(SqlTypes.LONGVARCHAR) so Hibernate 6 does not map @lob String to oid - AppConfig: HttpClient 5 read timeout via SocketConfig on the connection manager - drop spring.mvc.pathmatch ant-path-matcher workaround (SpringFox only) - Dockerfile: maven:3.9-eclipse-temurin-17 builder, eclipse-temurin:17-jre-jammy runtime - remove LEGACY comments that no longer describe the code Co-Authored-By: derek.wu <derekwu35@gmail.com>
…port-service' into devin/1788425768-java17-boot3
…e security, drop explicit Hibernate dialects, refresh README/CI comments Co-Authored-By: derek.wu <derekwu35@gmail.com>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
…up errors without Nashorn); clarify intake file records pre-migration state Co-Authored-By: derek.wu <derekwu35@gmail.com>
E2E frontend verification — report-service & legacy-portal on Java 17 / Boot 3.2.5Ran the client-app ( Frontend write path (register → browse → upload)
report-service via gateway (UI JWT): legacy-portal + Boot 3 deltas
Caveat: the Docker images for report-service/legacy-portal could not be built on the test box — Screen recording of the walkthrough is attached to the session's final message. |
Summary
Brings every JVM service in the repo to Java 17 (build file + Dockerfile + CI pin) and the two Spring Boot 2.x services to Spring Boot 3.2.5. Inventory in
docs/java17-migration-intake.yaml; per-service detail, runtime results and follow-ups inMIGRATION_NOTES.md.report-service(Maven)temurin-8/8-jre· CI'8'maven:3.9-eclipse-temurin-17/17-jre-jammy· CI'17'legacy-portal(Maven)temurin-11/11-jre-jammy· CI'11'maven:3.9-eclipse-temurin-17/17-jre-jammy· CI'17'auth-service(Gradle)notification-service(Kotlin/Ktor)jvmToolchain(17)analytics-service(Scala/sbt)Each
migrateservice was done by its own subsession (OpenRewriteUpgradeSpringBoot_3_2first, hand-fixes after) on a branch scoped to that service directory; shared files (CI workflows, deps-remediation harness, README, notes) are lead-only commits.What the recipe could not do (hand-fixed)
report-service:
WebSecurityConfigurerAdapter→SecurityFilterChainbean. AddeddispatcherTypeMatchers(DispatcherType.ERROR).permitAll()— Security 6 authorizes the ERROR dispatch too, so without it every 400/404 came back as an empty 403.Docket→OpenAPIbean,@ApiModel*→@Schema); docs move to/v3/api-docs+/swagger-ui.html.@Lob String errorMessage→+ @JdbcTypeCode(SqlTypes.LONGVARCHAR)so the Postgres column staysvarchar, notoid(verified against Postgres 15).RestTemplatefactory; read timeout viaSocketConfig.commons-text1.9 (CVE-2022-42889 lab fixture), POI 4, iText 5, Guava 28.legacy-portal: coming from 11 there was only the
javax→jakartanamespace change, the Boot 3 profile-document split (application-postgres.yml) and dropping explicit Hibernate dialects.No
--add-opens, nomodule-info.java, no plugin versions pinned over the Boot parent. Tests: report-service 50/0/1 skipped (JUnit 4 → 5), legacy-portal 16/0/1 skipped — identical before and after.Shared changes
ci.yml/docker-build.yml: both Maven jobs on Temurin 17 withcache: maven.deps-remediation.yml,security/deps/modules.yaml, dependency-cve-remediation skill: the CVE harness now measures the Maven modules on JDK 17 (follow-up: regenerate expected transcripts — thescript:case that resolved via Nashorn on 11 isunresolvedon 17).Verification
import javax\.(outside the allowed packages),temurin-8|temurin:8|temurin-11|temurin:11|openjdk:8|openjdk:11in Dockerfiles,java-version: '8'|'11'in workflows.spring-boot-properties-migratorfindings; primary read + write endpoints exercised (details inMIGRATION_NOTES.md). Behaviour deltas vsmain: trailing-slash URLs and unmatched report-service paths now 404/403 — neither is used by the gateway or frontends.Related
Earlier attempts at the same migration exist and are left untouched: #17, #74, #6, #273, #274 and branch
devin/java17-boot3. This PR is an independent run on a fresh branch.Link to Devin session: https://app.devin.ai/sessions/3edf13eff1e74d39b2ccfdfb547b77ed
Open in Devin Desktop: https://app.devin.ai/desktop/session/3edf13eff1e74d39b2ccfdfb547b77ed?variant=devin
Requested by: @TheWuster935