| # JGit EE8 Bazel bridge |
| |
| This package contains the Bazel-only bridge for source consumers that still run |
| on EE8 and `javax.servlet` while JGit master uses `jakarta.servlet`. |
| |
| JGit hosts this bridge because Gerrit is a known downstream that consumes JGit |
| from source through a git submodule and still runs Jetty 12 EE8. Keeping the |
| bridge in JGit lets Gerrit track JGit master and avoids maintaining a long-lived |
| servlet-4 branch just for Gerrit. That branch was never a stable JGit release |
| line, so it is not a sustainable way for Gerrit to receive JGit maintenance |
| updates. |
| |
| The bridge intentionally keeps the original JGit package names. It rewrites only |
| servlet API references from `jakarta.servlet` to `javax.servlet`, then compiles |
| generated jars from the rewritten source jars. |
| |
| Generated targets: |
| |
| * `//org.eclipse.jgit.http.server.ee8:jgit-servlet-ee8` |
| * `//org.eclipse.jgit.lfs.server.ee8:jgit-lfs-server-ee8` |
| |
| Do not put one of these generated jars and its canonical Jakarta counterpart on |
| the same classpath. They contain the same JGit classes. |
| |
| This is intentionally limited to source generation, build, and test. It does |
| not add Tycho, p2, or Maven Central publication machinery yet. |
| |
| Run: |
| |
| ```sh |
| bazelisk test \ |
| //tools/jgit-ee8:generated_srcs_test \ |
| //org.eclipse.jgit.junit.http.ee8:tests |
| ``` |
| |
| `//tools/jgit-ee8:generated_srcs_test` checks: |
| |
| * generated sources are derived from the canonical source filegroups |
| * generated srcjar entries use Java package paths |
| * generated sources preserve line counts for debugger breakpoints |
| * generated sources contain `javax.servlet`, not `jakarta.servlet` |
| * generated sources do not move JGit classes to an `.ee8` package |
| |
| The dedicated `org.eclipse.jgit.*.ee8` targets follow the Jetty 12 EE8 testing |
| model in a smaller form. Jetty generates EE8 main and test sources from the |
| canonical newer-EE modules and then runs the EE8 tests in the EE8 module graph. |
| JGit does the same for the servlet-facing tests: the HTTP/LFS test sources and |
| shared `junit-http` helpers are transformed to `javax.servlet`, wired to Jetty |
| EE8 test dependencies, and run against the generated EE8 JGit jars. |
| |
| `//org.eclipse.jgit.http.test.ee8:server_unit` is a fast, focused target for the |
| three HTTP server utility tests. It is not part of the default EE8 suite because |
| those classes already run under `//org.eclipse.jgit.http.test.ee8:http`. |
| |
| The test rewrite rules also map Jetty test helper imports from |
| `org.eclipse.jetty.ee11.servlet` to the Jetty EE8 packages needed by the tests. |
| They are intentionally test-only and separate from the production |
| `jakarta.servlet` to `javax.servlet` rules. |
| |
| Next steps: |
| |
| * Keep this source-consumer bridge while Gerrit runs on Jetty 12 EE8. |
| * Reuse these targets for other Bazel source consumers that need EE8 output. |
| * Move the generated-test JUnit helper to bazlets only if more generated-test |
| users need the same split between suite source labels and compiled sources. |
| * Add Maven/Tycho/p2 generation only when a non-Bazel consumer needs published |
| EE8 artifacts. |
| * Keep the canonical `srcs` filegroups aligned with each servlet-facing |
| `java_library` so new Java sources are transformed automatically. |