Diego Villablanca created LOG4J2-2850:
-----------------------------------------

             Summary: LocalizedMessageFactory creates new message with baseName 
as messagePattern
                 Key: LOG4J2-2850
                 URL: https://issues.apache.org/jira/browse/LOG4J2-2850
             Project: Log4j 2
          Issue Type: Bug
          Components: API, Core
    Affects Versions: 2.13.3
            Reporter: Diego Villablanca


When I instantiate LocalizedMessageFactory with the String baseName constructor 
and then I create a new LocalizedMessage by the method _public Message 
newMessage(final String key)_, it instantiates the message with the constructor 
that use String messagePattern and String key, using the resource bundle 
baseName as messagePattern, and the key as an argument of the pattern.

/**
 * @since 2.8
 */
 @Override
 public Message newMessage(final String key) {
     if (resourceBundle == null) {
         *return new LocalizedMessage(baseName, key);*
     }
     return new LocalizedMessage(resourceBundle, key);
 }

The constructor of LocalizedMessage used is:

*public LocalizedMessage(final String {color:#FF0000}messagePattern{color}, 
final Object {color:#FF0000}arg{color}) {*
     *this((ResourceBundle) null, (Locale) null, 
{color:#FF0000}messagePattern{color}, new Object[] 
{{color:#FF0000}arg{color}});*
 *}*

The Factory should use this constructor:

public LocalizedMessage(final String baseName, final String key, final Object 
arg) {
     this(baseName, (Locale) null, key, new Object[] \{arg});
 }

The fix should be:

/**
 * @since 2.8
 */
 @Override
 public Message newMessage(final String key) {
     if (resourceBundle == null) {
         *return new LocalizedMessage(baseName, key, 
{color:#FF0000}null{color});*
     }
     return new LocalizedMessage(resourceBundle, key);
 }



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to