jetty / jetty/jetty.project

Establish new EE Common for Jetty 13.0.x

Open
#14,823 0 comments 0 reactions 1 assignee Claimed by @joakime View on GitHub
Enhancement
Dominant language
Java
Stars
4.1k
Forks
2k
Avg merge
3d 56m
Merged PRs (30d)
48

Description

Starting in Jetty 13, were we want to support EE12, we want to have a common EE codebase and just represent the differences in each EE# version in a way that minimizes code duplication across EE# code trees.

Tasks:

- [x] Create `/jetty-ee/` tree to house common codebase.
- [x] Base initial code of `/jetty-ee/` from existing `/jetty-ee11/` code tree.
- [x] Rename all path segments with `ee11` to `ee` in new `/jetty-ee/` tree.
- [x] Rename all internal file references with `ee11` to `ee` in new `/jetty-ee/` tree. (poms, package names, artifactIds, etc)
- [x] Rename all internal file references with `EE11` to `EECommon` in new `/jetty-ee/` tree (pom names, web.xml contents, etc)
- [x] Remove existing code (not `module-info.java`) from `/jetty-ee11/` tree.
- [x] Remove existing code (not `module-info.java`) from `/jetty-ee10/` tree.
- [x] Move existing `/jetty-core/jetty-ee/` tree into new root level `/jetty-ee/` tree. #14825
- [ ] Establish EE# specific examples from previous `/jetty-ee#-demos/` trees.
- [ ] Maybe leave `/jetty-ee#-demos/` trees alone in their previous locations.
- [ ] Leave `/jetty-ee#-osgi/` trees in previous locations.
- [ ] Remove "ee" and "jakarta" properties from new `/jetty-ee/` poms.
- [ ] Implement EE version specific changes into `/jetty-ee/` tree.
- [ ] Introduce some kind of enum class for EE support levels (should be spec neutral in naming, don't use "Servlet" or things referencing a specific spec that for this class name)
- [ ] Implement differences in EE versions using this new enum class across the `/jetty-ee/` tree (security, jsp, jstl, websocket, servlet, etc)
- [ ] For specs that require more detail, implement spec specific enum (eg: Servlet has an API requirement to expose the whole version, major version, and minor version of the Servlet spec being supported by that EE level)
- [ ] Figure out what to do for EE# specific WebApp Configuration handling (eg: `META-INF/services/org.eclipse.jetty.ee11.webapp.Configuration`)
- [ ] See if `jetty-ee#-jspc-maven-plugin` can be removed in favor of using only the `jetty-ee-jspc-maven-plugin` instead.
- [ ] See if `jetty-ee#-maven-plugin` can be removed in favor of using only the `jetty-ee-maven-plugin` instead.
- [ ] Evaluate each old `/jetty-ee#/jetty-ee#-tests/jetty-ee#-*-webapp/` to see if we need to keep them around for EE# specific testing (eg: the web.xml descriptor and feature tests unique to that version of EE#)
- [ ] Old test modules (eg: `/jetty-ee11/jetty-ee11-websocket/jetty-ee11-websocket-jakarta-tests/`) that don't have OSGi manifests, or module-info.class files, and no longer and source files should be evaluated for removal from their original locations.
- [ ] Once `/jetty-ee11/` tree and `/jetty-ee10/` tree work with new `/jetty-ee/` (EECommon) codebase, copy the `/jetty-ee11/` tree to a new `/jetty-ee12/` tree to initialize the new EE12 support in the `jetty-13.0.x` branch.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.