JWT007 opened a new issue, #3464:
URL: https://github.com/apache/logging-log4j2/issues/3464

   Log4j 2.24.3
   ---
   When using a configuration builder and adding a FilterComponentBuilder, 
generating XML from the ConfigurationBuilder causes exception when the filter 
is defined with a null OnMatch/OnMismatch Result.
   
   Configuring the onMatch/onMismatch attributes is not required - null should 
be a valid value.
   
   In this case, no attributtes should be added.
   
   However in tthe DefaulttFilterComponentBuilder, attributes are added to tthe 
builder without performing a null-check first.
   
   ```
   class DefaultFilterComponentBuilder extends 
DefaultComponentAndConfigurationBuilder<FilterComponentBuilder>
           implements FilterComponentBuilder {
   
       public DefaultFilterComponentBuilder(
               final DefaultConfigurationBuilder<? extends Configuration> 
builder,
               final String type,
               final String onMatch,
               final String onMismatch) {
           super(builder, type);
           addAttribute(AbstractFilterBuilder.ATTR_ON_MATCH, onMatch);
           addAttribute(AbstractFilterBuilder.ATTR_ON_MISMATCH, onMismatch);
       }
   }
   ```
   
   This results attributes with *null* values in the builder tree which can 
cause XML serialization problems.
   
   I think this might be better:
   
   ```
   class DefaultFilterComponentBuilder extends 
DefaultComponentAndConfigurationBuilder<FilterComponentBuilder>
           implements FilterComponentBuilder {
   
       public DefaultFilterComponentBuilder(
               final DefaultConfigurationBuilder<? extends Configuration> 
builder,
               final String type,
               final String onMatch,
               final String onMismatch) {
           super(builder, type);
           Optional.ofNullable(onMatch).ifPresent(() -> 
addAttribute(AbstractFilterBuilder.ATTR_ON_MATCH, onMatch));
           Optional.ofNullable(onMismatch).ifPresent(() -> 
addAttribute(AbstractFilterBuilder.ATTR_ON_MISMATCH, onMismatch));
       }
   }
   ```
   
   


-- 
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: notifications-unsubscr...@logging.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to