[ 
https://issues.apache.org/jira/browse/LOG4J2-3693?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeff Thomas closed LOG4J2-3693.
-------------------------------
    Resolution: Duplicate

> XmlConfiguration keeps relevant fields private without providing protected 
> accessors making subclassing difficult
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: LOG4J2-3693
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3693
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: API, Configuration
>    Affects Versions: 2.24.0
>            Reporter: Jeff Thomas
>            Priority: Major
>
> 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 :P.



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

Reply via email to