Skip to content

XmlConfiguration keeps relevant fields private without providing protected accessors making subclassing difficult #3360

@JWT007

Description

@JWT007

Log4j 2.24

The XmlConfiguration implementation is non-final meaning it is possible to subclass it to provide additional custom functionality; however: the most relevant class field rootElement is private making it near impossible to do anything useful in the subclass.

It would be helpful (and prevent making a complete copy of the implementation) to at the very least provide a protected accessor for this field:

i.e. protected Element getRootElement()

This way, a custom subclass has a chance to perform some custom handling in public void setup() before the hierarchy is constructed.

Most of the AbstractConfiguration configuration-relevant fields are protected (i.e. rootNode) - but it seems someone didn't stick to that approach in the XmlConfiguration implementation.

SIDE NOTE: It seems the complexity of the currrent XmlConfiguration could be greatly reduced by sticking a little more closely to SRP (single-responsibility principle) and offloading the instantiation/configuration of the DocumentBuilderFactory and maybe the validation to separate utility classes .

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    To triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions