[ 
https://issues.apache.org/jira/browse/TOMEE-4651?focusedWorklogId=1032656&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-1032656
 ]

ASF GitHub Bot logged work on TOMEE-4651:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 28/Jul/26 19:37
            Start Date: 28/Jul/26 19:37
    Worklog Time Spent: 10m 
      Work Description: jungm commented on PR #2844:
URL: https://github.com/apache/tomee/pull/2844#issuecomment-5108836430

   Thanks — I verified all of it independently and you're right on every count. 
Pushed in 164b44ba10.
   
   **Precedence.** Confirmed against tomcat-jasper 11.0.23 bytecode: `scan()` 
calls `scanPlatform()` first, `parseTld()` guards its put with `containsKey` + 
`ifne` (first writer wins), and `scanJspConfig()` does `containsKey` → 
`Log.warn` → skip. So the description was backwards and a bundled 
Jakarta-native JSTL does not win.
   
   Taking your steer and keeping the precedence as-is, since it matches how the 
legacy `http://java.sun.com/jsp/jstl/*` URIs already behave. It is now stated 
in the `aliasJakartaTagsUris()` javadoc and in the commit message, and pinned 
by `containerAliasWinsOverAnApplicationBundledTld`, which drives the real 
`parseTld()` with an app TLD declaring `jakarta.tags.core` — so the assertion 
tracks Tomcat rather than restating my reading of it.
   
   **The `isEmpty()` guard.** Real bug, exactly as you described: 
`populateMyfacesAndJstlData()` guards myfaces (L125) and JSTL (L4142) 
independently, so myfaces-without-JSTL left the map non-empty and warned five 
times. Now guards on `JSTL_URL`. To make that reachable from a test I added a 
package-private `aliasJakartaTagsUris(URL)` overload — `JSTL_URL` is `static 
final` and modern JDKs reject reflective writes, so stubbing it wasn't an 
option. The test asserts zero warnings, which is what actually distinguishes 
the two guards.
   
   **`permittedTaglibs` split.** Confirmed — `PermittedTaglibsTLV` uses a 
single-arg `StringTokenizer`, i.e. any whitespace. Split is now `\s+`; a 
space-separated list previously came back as one token so the widening silently 
no-oped. The test helper read it back with the same wrong delimiter, which is 
why nothing caught it.
   
   **Static-initialiser wiring.** Added `staticInitialiserRegistersTheAliases`. 
Since the shaded jar isn't on the module's test classpath, it asserts over 
`<clinit>` bytecode that `aliasJakartaTagsUris` is called and that 
`populateMyfacesAndJstlData` precedes it.
   
   **Seven vs five.** Stale — bfc0e16bb0 already cut the map to the five URIs 
the spec actually renamed (`permittedTaglibs`/`scriptfree` are 
Apache-Standard-Taglibs TLVs that kept their URIs). The PR description still 
said seven; I've corrected it.
   
   I mutation-tested each fix — reverting the guard, the split, the wiring, and 
the precedence each makes exactly the corresponding test fail. Module suite is 
19/19.
   
   _🤖 Addressed by [Claude Code](https://claude.com/claude-code)_




Issue Time Tracking
-------------------

    Worklog Id:     (was: 1032656)
    Time Spent: 0.5h  (was: 20m)

> TomEE does not register jakarta.tags.* TLD URIs, breaking all Jakarta Tags 3.0
> ------------------------------------------------------------------------------
>
>                 Key: TOMEE-4651
>                 URL: https://issues.apache.org/jira/browse/TOMEE-4651
>             Project: TomEE
>          Issue Type: Bug
>          Components: TomEE Core Server
>            Reporter: Markus Jung
>            Assignee: Markus Jung
>            Priority: Major
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Jakarta Tags 3.0 replaces the old JSTL jar. Its TLD files declare URIs under 
> the jakarta.tags._ namespace. TomEE and Tomcat do not expose these URIs to 
> applications, so any JSP page that declares a taglib with a jakarta.tags._ 
> URI fails at JSP compile time.
> This breaks all 50 Jakarta Tags 3.0 TCK test classes. It also breaks the 
> EJB-Lite JSP vehicles, which use the same tags and fail as a side effect.
> The TCK's own compatibility class hits the same problem. Of its 38 methods, 
> only one avoids a jakarta.tags.* URI; the other 37 fail for the same reason.
> h2. Steps to reproduce / TCK reference
> Run the Jakarta Tags 3.0 TCK against TomEE 11. All ~50 test classes fail, 
> plus the EJB-Lite JSP vehicle tests, including:
> * {{**/jstl/**/JSTLClientIT.java}}
> These are currently excluded in {{runner-webprofile/exclusions/tags.txt}} in 
> the apache/tomee-tck harness repo. Once TomEE registers the jakarta.tags.* 
> TLD URIs, remove this exclusion and rerun the suite to confirm the classes 
> pass.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to