ppkarwasz opened a new pull request, #4155:
URL: https://github.com/apache/logging-log4j2/pull/4155

   This PR reworks how the XML configuration format is tested and documented so 
that each behavior of the DOM-to-`Node` conversion in `XmlConfiguration` is 
covered by its own focused test. Doing so surfaced a small attribute-handling 
bug, fixed here.
   
   ## Testing
   
   - `constructHierarchy`, `getType` and `processAttributes` are now `static` 
and take the `PluginManager` and `strict` flag as parameters, so the 
DOM-to-`Node` conversion can be unit-tested with a mocked `PluginManager` 
instead of spinning up a full `LoggerContext`.
   - The `StrictXmlConfigTest` integration test (which only asserted event 
counts and merely happened to exercise strict-mode parsing) is replaced by 
`XmlConfigurationConstructHierarchyTest`, covering individually: plugin 
resolution, attribute folding, text-as-value, strict-mode `type` resolution, 
and XInclude whole-file / positional `element()` / by-`name` (`ID`) fragment 
resolution.
   - The unused `Status`/`ErrorType` bookkeeping is dropped in favor of logging 
the error directly.
   
   ## Bug fix
   
   - The XInclude `fixup-language` feature adds an `xml:lang` attribute to 
included elements that was never stripped (only `xml:base` was) and was not 
covered by any test, so it leaked through as a Log4j configuration attribute. 
`processAttributes` now matches the reserved XML namespace instead of the 
literal attribute name, stripping `xml:base`, `xml:lang`, and any other 
reserved `xml:` attribute.
   - `XmlConfiguration` no longer explicitly enables the 
`fixup-base-uris`/`fixup-language` features: they default to `true` and only
     add attributes Log4j strips (they are not required for nested or relative 
includes to resolve).
   
   ## Documentation
   
   - The XML format section of `configuration.adoc` is moved into a reusable 
AsciiDoc partial (`partials/manual/configuration-xml-format.adoc`).
   - The XInclude docs gain a section about including fragments with positional 
and by-`name` XPointer examples, plus a note that the JDK does not recognize 
`xml:id` and does not implement the `xpointer()` scheme.
   
   There is no behavior change for valid configurations; the only runtime 
difference is that `xml:lang` no longer leaks into the configuration.
   
   ## Checklist
   
   * [x] Based on `2.x`
   * [ ] `./mvnw verify` succeeds (only the affected modules were tested 
locally)
   * [x] Changelog entry in `src/changelog/.2.x.x`
   * [x] Tests provided
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to