Add XML 1.1 tags and EL functions to both taglibs - #168
Conversation
501b610 to
7bfa00f
Compare
7bfa00f to
806d000
Compare
|
Thanks for the triage. Here's what changed since the reviewed head
Locally, Update: the "Packaged consumer compatibility" run on |
The XML 1.1 encoders added in 1.4.0 were not reachable from either
taglib. Add ForXml11Tag, ForXml11ContentTag and ForXml11AttributeTag
to jsp and jakarta, mirroring the XML 1.0 tags and identical apart
from the javax/jakarta imports. Declare all three as tags and EL
functions in both advanced TLDs, next to their XML 1.0 counterparts,
and add forXml11 to both basic TLDs next to forXml.
TaglibDescriptorTest's exclusion list is now exactly {forJava}, and
the pinned basic set includes forXml11. TagEncodingTest picks up the
new tags from the advanced TLD, covering null, hostile Unicode and
buffer-boundary inputs against the Encode facade. The README states
why forJava has no tag and adds a News entry.
Replace "Control characters are encoded as for forXml11" with "Encodes control characters the same way as forXml11" in the forXml11Content and forXml11Attribute tag and function descriptions, as noted in triage.
2ed487b to
59edee2
Compare
jmanico
left a comment
There was a problem hiding this comment.
Reviewed at ece754c after integration with main and the merged OSGi ranges from #174. The six tag classes delegate directly to the matching Writer facades; both packaged descriptor surfaces declare the matching functions and preserve the intentional forJava omission. XML 1.1 context restrictions are documented. Local reactor verification and focused final-head tag/API/signature/module verification pass; JSP/Jakarta parity passes across 34 source files. Existing parameterized contracts exercise the new tags, including null, Unicode and buffer boundaries. No core algorithms or shipped dependency baselines change. Required CI must pass before merge; real JSP compiler coverage follows under #120.
Reviewed 2026-09-25 (America/Los_Angeles) against
mainatbd249f5. Execution order and cross-issue ownership: #169. Batch 03.This scope replaces the dated implementation prescriptions in the original report and earlier comments; linked historical evidence remains useful but must be rechecked before implementation.
Organization review
Implements #131; keep its
Closes #131link. Reviewed head:7bfa00f3242c8918b7d201c8e55bbd7b1b31e00eagainst mainbd249f5.as for forXml11can be cleaned up during implementation review.[1.4,2)proposal insufficient. Render every current JSP and Jakarta tag/EL binding through isolated JSP engines #120 supplies follow-up real JSP-engine coverage.The body below is the contributor's original implementation description, retained for review.
Closes #131.
Now that #167 has merged, this is rebased onto
mainand is a single commit. It shrinks #167'sTaglibDescriptorTestexclusion list and relies on its parameterizedTagEncodingTest.Change
ForXml11Tag,ForXml11ContentTagandForXml11AttributeTaginjsp/andjakarta/. They mirrorForXmlTag,ForXmlContentTagandForXmlAttributeTag, delegate to theEncode.forXml11*Writer methods, and the two trees are identical apart from thejavax/jakartaimports (scripts/check-taglib-parity.pypasses, 33 files).<tag>and a<function>in bothjava-encoder-advanced.tldfiles, next to their XML 1.0 counterparts.forXml11is added to both basicjava-encoder.tldfiles next toforXml.EncodeJavadoc. They note that the control-character references are XML 1.1 only (XML 1.0 does not allow them), and thatforXml11Contentdoes not escape quotes.Tests
TaglibDescriptorTest(both modules): the exclusion list is now exactly{forJava}, and the pinned basic set includesforXml11. Without the new advanced TLD entries it fails, naming the three missing contexts.TagEncodingTestpicks up the new tags from the advanced TLD: 30 new cases per module (null, empty, plain, hostile Unicode, and 1,023 to 2,049 buffer boundaries), each compared with theEncodefacade.mvn clean verifypasses for all modules on currentmain, including Guard facade mappings and JSP/Jakarta parity #167's invocation-contract checks.Docs
Encode.forX(String)context has a tag and EL function in the advanced taglib exceptforJava, because Java source generation is not a JSP output context.