Repository navigation
refactor: mechanical javax->jakarta import rename (PR 2 of jakarta migration #861) - #878
Conversation
Mechanical OpenRewrite rename (JavaxMigrationToJakarta), imports only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mechanical OpenRewrite rename, imports only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…, api, root) (PR2 #861) Mechanical OpenRewrite rename, imports only. The invalidate()->logout() behavioral change OpenRewrite bundled into Login/Logout/MobileLogin/SLS/ACS was reverted; these commits are pure import renames. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mechanical OpenRewrite rename, imports only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mechanical OpenRewrite rename, imports only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
CI dispatch — Build and TestManually dispatched "Build and Test" against this branch ( This branch is stacked on #877, so the run exercises PR 1 + PR 2 combined. Result: red — |
There was a problem hiding this comment.
Pull request overview
Second step in the Jakarta migration (#861): mechanically renames Java EE javax.* imports to Jakarta EE jakarta.* across application, unit-test, and integration-test code so the codebase aligns with the Jakarta/Tomcat 10 / Spring 6 baseline introduced in PR #877.
Changes:
- Replace
javax.servlet.*imports withjakarta.servlet.*(servlets, filters, listeners, tests). - Replace
javax.mail.*imports withjakarta.mail.*(mail validation utility). - Keep JDK-owned
javax.*namespaces intact where applicable (e.g.,javax.crypto.*,javax.xml.parsers.*).
Reviewed changes
Copilot reviewed 170 out of 170 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| src/test/java/testUtils/TestProperties.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/test/java/listeners/DatabaseLifecycleListenerTest.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/utils/Validate.java | javax.mail.*/javax.servlet.* → jakarta.mail.*/jakarta.servlet.* import rename |
| src/main/java/servlets/SSOMetadata.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/SSOLogin.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/SLS.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/SetupFilter.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/Setup.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/Register.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/SolutionSubmit.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/RefreshMenu.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/ModuleServletTemplate.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/XxeLesson.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/XssLesson.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/UnvalidatedForwardsLesson.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/SqlInjectionLesson.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/SessionManagementLesson.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/SecurityMisconfigLesson.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/RedirectLessonTarget.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/Redirect.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/PoorValidationLesson.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/DirectObjectLesson.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/CsrfLessonTarget.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/lesson/CsrfLesson.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/GetModule.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/GetCheat.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/FeedbackSubmit.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/XxeChallenge1OldWebService.java | javax.servlet.* → jakarta.servlet.* import rename (wildcard expanded) |
| src/main/java/servlets/module/challenge/XxeChallenge1.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/XssChallengeTwo.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/XssChallengeThree.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/XssChallengeSix.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/XssChallengeOne.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/XssChallengeFour.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/XssChallengeFive.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/UrlAccess3UserList.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/UrlAccess3.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/UrlAccess2Admin.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/UrlAccess2.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/UrlAccess1Admin.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/UrlAccess1.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SqlInjectionStoredProcedure.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SqlInjectionEscaping.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SqlInjectionEmail.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SqlInjection7.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SqlInjection6.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SqlInjection5VipCheck.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SqlInjection5CouponCheck.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SqlInjection5.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SqlInjection4.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SqlInjection3.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SqlInjection1.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement8.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement7SecretQuestion.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement7.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement6SecretQuestion.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement6.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement5SetToken.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement5ChangePassword.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement5.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement4.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement3ChangePassword.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement3.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement2ChangePassword.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement2.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SessionManagement1.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/SecurityMisconfigStealTokens.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/PoorValidation2.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/PoorValidation1.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/NoSqlInjection1.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/DirectObjectBankTransfer.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/DirectObjectBankRegistration.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/DirectObjectBankLogout.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/DirectObjectBankLogin.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/DirectObjectBankCurrentBalance.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/DirectObject2.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/DirectObject1.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeTwo.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeThree.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeTargetTwo.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeTargetThree.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeTargetSix.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeTargetSeven.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeTargetOne.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeTargetJSON.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeTargetFour.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeTargetFive.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeSixGetToken.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeSix.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeSevenGetToken.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeSeven.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeOne.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeJSON.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeFour.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/CsrfChallengeFive.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/BrokenCryptoHomeMade.java | javax.servlet.* → jakarta.servlet.* import rename (JDK javax.crypto.* kept) |
| src/main/java/servlets/module/challenge/BrokenCrypto4.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/module/challenge/BrokenCrypto3.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/MobileLogin.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/Logout.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/Login.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/GetJsonScore.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/ChangeUsername.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/ChangePassword.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/api/Scoreboard.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/api/Levels.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/api/Cheats.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/UpgradePlayer.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/UnSuspendUser.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/SuspendUser.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/SetDefaultClass.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/GiveTakePoints.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/GetPlayersByClass.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/DowngradeAdmin.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/DeletePlayers.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/CreateNewAdmin.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/CreateClass.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/ChangeUserPassword.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/AssignPlayers.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/userManagement/AddPlayer.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/moduleManagement/SetModuleStatus.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/moduleManagement/RemoveModuleLock.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/moduleManagement/OpenWebModules.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/moduleManagement/OpenOrCloseByCategory.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/moduleManagement/OpenMobileModules.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/moduleManagement/OpenAllModules.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/moduleManagement/GetProgress.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/moduleManagement/GetJsonProgress.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/moduleManagement/GetFeedback.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/moduleManagement/EnableModuleBlock.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/moduleManagement/CloseAllModules.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/ToggleRegistration.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/SetTournamentMode.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/SetOpenFloorMode.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/SetCtfMode.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/SetCountdown.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/EnableScoreboard.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/EnableFeedback.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/EnableCheats.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/DisableScoreboard.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/DisableFeedback.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/DisableCheats.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/admin/config/ChangeCoreDatabase.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/servlets/ACS.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/main/java/listeners/DatabaseLifecycleListener.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/SetupIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/module/lesson/SessionManagementLessonIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/module/lesson/CsrfLessonIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/module/GetModuleIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/module/challenge/NoSqlInjection1IT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/module/challenge/BrokenCryptoHomeMadeIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/LogoutIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/LoginIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/api/LevelsIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/userManagement/DeletePlayersIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/moduleManagement/OpenOrCloseByCategoryIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/moduleManagement/OpenAllModulesIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/moduleManagement/GetJsonProgressIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/moduleManagement/GetFeedbackIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/moduleManagement/EnableModuleBlockIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/moduleManagement/CloseAllModulesTestIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/config/ToggleRegistrationIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/config/SetTournamentModeIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/config/SetOpenFloorModeIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/config/SetCtfModeIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/config/EnableFeedbackIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/config/EnableCheatsIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/config/DisableScoreboardIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/config/DisableFeedbackIT.java | javax.servlet.* → jakarta.servlet.* import rename |
| src/it/java/servlets/admin/config/DisableCheatsIT.java | javax.servlet.* → jakarta.servlet.* import rename |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
SeanDuggan
left a comment
There was a problem hiding this comment.
No issues that I can see here.
…a migration #861) (#946) * build: jakarta-ready dependencies (PR 1 of jakarta migration #861) Build-config-only step of the javax -> jakarta migration. Does not compile on its own (source still imports javax.*); the mechanical import rename follows in the next sub-PR. - jakarta.servlet:jakarta.servlet-api:6.0.0 (was javax.servlet:javax.servlet-api:4.0.1) - jakarta JSTL 3.0 api + glassfish impl (was jstl:jstl:1.2) - org.eclipse.angus:angus-mail:2.0.3 (was com.sun.mail:javax.mail:1.6.2) - remove javax:javaee-api:8.0.1 (pulls the legacy javax namespace back in) - align Spring to 6.1.21 (spring-test 5.3.31, spring-core 6.0.2, spring-context 5.3.31 were inconsistent) - remove spring-mock:2.0.8 (Spring 6 spring-test provides the Jakarta mocks) - remove fongo (unused; tests @disabled, rescue tracked in #876) - .env Tomcat base image 9.0 -> 10.1 (first Jakarta-namespace Tomcat) Refs #861. Targets Spring 6.1.x (not 7) per discussion on #869. * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * build: jakarta-ready dependencies (PR 1 of jakarta migration #861) (#877) * build: jakarta-ready dependencies (PR 1 of jakarta migration #861) Build-config-only step of the javax -> jakarta migration. Does not compile on its own (source still imports javax.*); the mechanical import rename follows in the next sub-PR. - jakarta.servlet:jakarta.servlet-api:6.0.0 (was javax.servlet:javax.servlet-api:4.0.1) - jakarta JSTL 3.0 api + glassfish impl (was jstl:jstl:1.2) - org.eclipse.angus:angus-mail:2.0.3 (was com.sun.mail:javax.mail:1.6.2) - remove javax:javaee-api:8.0.1 (pulls the legacy javax namespace back in) - align Spring to 6.1.21 (spring-test 5.3.31, spring-core 6.0.2, spring-context 5.3.31 were inconsistent) - remove spring-mock:2.0.8 (Spring 6 spring-test provides the Jakarta mocks) - remove fongo (unused; tests @disabled, rescue tracked in #876) - .env Tomcat base image 9.0 -> 10.1 (first Jakarta-namespace Tomcat) Refs #861. Targets Spring 6.1.x (not 7) per discussion on #869. * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * refactor: mechanical javax->jakarta import rename (PR 2 of jakarta migration #861) (#878) * refactor: javax->jakarta imports in servlets/module/challenge (PR2 #861) Mechanical OpenRewrite rename (JavaxMigrationToJakarta), imports only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: javax->jakarta imports in servlets/admin (PR2 #861) Mechanical OpenRewrite rename, imports only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: javax->jakarta imports in remaining servlets (module/lesson, api, root) (PR2 #861) Mechanical OpenRewrite rename, imports only. The invalidate()->logout() behavioral change OpenRewrite bundled into Login/Logout/MobileLogin/SLS/ACS was reverted; these commits are pure import renames. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: javax->jakarta imports in remaining src/main (PR2 #861) Mechanical OpenRewrite rename, imports only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor: javax->jakarta imports in src/it and src/test (PR2 #861) Mechanical OpenRewrite rename, imports only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * style: re-sort imports after javax->jakarta rename (spotless) The OpenRewrite rename left jakarta.* imports ordered where javax.* used to sit, which fails google-java-format's import ordering in the lint-java job. Import order only; no code changes. Refs #861 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * build: make the bottom of the stack build on its own (Tomcat 10.1, no java-saml) Every PR in the Jakarta migration stack must pass CI by itself. This one didn't compile: ACS, Logout, SLS and SSOLogin passed jakarta servlet types to java-saml 2.9.0, which only accepts javax.servlet and has no Jakarta release. Its Docker build would also have failed: the Tomcat 9 era server.xml patch doesn't apply to Tomcat 10.1. - Remove java-saml. The SSO endpoints (ACS, SSOLogin, SLS, SSOMetadata) answer 503 "SAML SSO is unavailable during migration", and Logout drops its java-saml branch. SSO is off unless sso.enabled=true, and is reimplemented on pac4j-saml in #939 further up the stack, so the final code on dev is unchanged. - Regenerate serverxml.patch / webxml.patch against Tomcat 10.1.61's conf files (HTTPS via <SSLHostConfig>/<Certificate>), with the matching Dockerfile substitutions. Both apply exactly with the image's GNU patch. Verified locally: spotless, 169 unit tests, 312 integration tests, mvn -Pdocker install, docker compose build, and a Tomcat 10.1.61 smoke test (deploys, HTTP->HTTPS, TLS 1.3, login page, SSO endpoints 503). Refs #861 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix: substitute HTTPS_PORT when redirectPort is on its own line Addresses review on #946. Tomcat 10.1's server.xml puts the HTTP connector's attributes on separate lines, so in the regenerated serverxml.patch redirectPort="HTTPS_PORT" is not followed by " />". The Dockerfile's sed required that suffix, left the literal HTTPS_PORT in conf/server.xml, and HTTP->HTTPS redirects ignored the configured port (it went unnoticed with the default 443). The sed now matches just the attribute, which works for both the Tomcat 10.1 and 11 patch layouts. Test: src/test/scripts/tomcat-config-test.sh, run in CI's build job after docker compose build, checks the built image's conf/server.xml redirects to HTTPS_PORT and has no HTTPS_PORT / TLS_KEYSTORE_* / ALIAS placeholders left. It fails on the previous Dockerfile (HTTPS_PORT=8443) and passes with the fix for 8443 and 443. Refs #861 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: SeanDuggan <sean.duggan4@gmail.com>
PR 2 of the Jakarta migration (#861) — mechanical javax → jakarta rename
Second sub-PR. Stacked on #877 (base =
pr1-jakarta-build-config), so the diff shows only this step. Retarget base tofeat/jakarta-migrationonce #877 merges.What this is
The bulk
import javax.* → import jakarta.*rename across 170 files, generated by OpenRewrite:org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakartaorg.openrewrite.recipe:rewrite-migrate-java:RELEASESplit into 5 package-scoped commits (challenge / admin / remaining servlets / other src/main / it+test) so it can be reviewed commit-by-commit.
Reviewer notes — trust by construction
javax.* → jakarta.*import lines.ses.invalidate()→request.logout()inLogin,Logout,MobileLogin,SLS,ACS. These are not equivalent (request.logout()doesn't clear session attributes;LogoutITassertsuserStamp == nullafter logout and would fail). Reverted — out of scope for a rename PR.web.xml/tomcatShepherdSampleWeb.xmlnamespaces. Reverted — those belong to PR 3.javax.crypto.*(2 files) andjavax.xml.parsers.*(4 files) — JDK/JCA, not Jakarta.Verification —⚠️ does NOT compile standalone yet (expected)
The import rename itself is correct and pure (only
javax.* → jakarta.*import lines). But PR 1 + PR 2 combined does not yet compile:com.onelogin:java-saml:2.9.0is a javax-only library, so the SAML servlets (ACS/SLS/SSOLogin/Logout) fail to compile againstjakarta.servlet.*.That is an intrinsic #861 migration blocker, being fixed in its own dedicated PR (bump to
java-saml3.0.0 +java-saml-servlet-jakarta, rewrite the 4 SAML servlets) — deliberately not folded into this mechanical rename.So CI on this branch is red by design (see comment below) — caused by the java-saml blocker, not the rename. The green gate for the migration is the eventual draft umbrella PR
feat/jakarta-migration → dev, once the java-saml PR is also merged intofeat.(Correction to an earlier note: a non-
cleanlocalmvn test-compilegave a false green;mvn clean test-compileand CI both fail. Alwaysclean.)Refs #861.
🤖 Generated with Claude Code