Skip to content

refactor: mechanical javax->jakarta import rename (PR 2 of jakarta migration #861) - #878

Merged
ismisepaul merged 5 commits into
pr1-jakarta-build-configfrom
pr2-openrewrite-jakarta-rename
Jun 5, 2026
Merged

ismisepaul merged 5 commits into
pr1-jakarta-build-configfrom
pr2-openrewrite-jakarta-rename

Conversation

@ismisepaul

@ismisepaul ismisepaul commented Jun 4, 2026 •

Copy link
Copy Markdown
Member

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 to feat/jakarta-migration once #877 merges.

What this is

The bulk import javax.* → import jakarta.* rename across 170 files, generated by OpenRewrite:

  • recipe org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
  • artifact org.openrewrite.recipe:rewrite-migrate-java:RELEASE

Split 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

  • Pure import renames. The diff was verified to contain only javax.* → jakarta.* import lines.
  • Two non-mechanical things OpenRewrite tried, both handled:
    1. It bundled a behavioral change ses.invalidate() → request.logout() in Login, Logout, MobileLogin, SLS, ACS. These are not equivalent (request.logout() doesn't clear session attributes; LogoutIT asserts userStamp == null after logout and would fail). Reverted — out of scope for a rename PR.
    2. It edited web.xml / tomcatShepherdSampleWeb.xml namespaces. Reverted — those belong to PR 3.
  • Intentionally unchanged: javax.crypto.* (2 files) and javax.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.0 is a javax-only library, so the SAML servlets (ACS/SLS/SSOLogin/Logout) fail to compile against jakarta.servlet.*.

That is an intrinsic #861 migration blocker, being fixed in its own dedicated PR (bump to java-saml 3.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 into feat.

(Correction to an earlier note: a non-clean local mvn test-compile gave a false green; mvn clean test-compile and CI both fail. Always clean.)

Refs #861.

🤖 Generated with Claude Code

ismisepaul and others added 5 commits June 4, 2026 22:51
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>
@ismisepaul

ismisepaul commented Jun 4, 2026 •

Copy link
Copy Markdown
Member Author

CI dispatch — Build and Test

Manually dispatched "Build and Test" against this branch (workflow_dispatch):

▶️ https://github.com/OWASP/SecurityShepherd/actions/runs/26981823548

This branch is stacked on #877, so the run exercises PR 1 + PR 2 combined. Result: red — com.onelogin:java-saml:2.9.0 is javax-only and the SAML servlets won't compile against jakarta.servlet.*. That's an intrinsic #861 blocker handled in its own dedicated PR (java-saml 3.0.0 + java-saml-servlet-jakarta), not this rename. The real green gate is the draft umbrella PR feat → dev once the java-saml PR is also in feat.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 with jakarta.servlet.* (servlets, filters, listeners, tests).
  • Replace javax.mail.* imports with jakarta.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 SeanDuggan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues that I can see here.

@ismisepaul
ismisepaul merged commit 7802a97 into pr1-jakarta-build-config Jun 5, 2026
3 of 7 checks passed
ismisepaul added a commit that referenced this pull request Jun 5, 2026
…a-migration

Brings the mechanical javax->jakarta import rename onto the integration
branch so it carries the jakarta-ready dependencies (#877) and the renamed
source (#878) together. Completes #861's integration branch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ismisepaul added a commit that referenced this pull request Oct 23, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

3 participants