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

Diego Villablanca updated LOG4J2-2850:
--------------------------------------
    Description: 
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.

@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)
 Unknown macro:
Unknown macro: {         *return new LocalizedMessage(baseName, key, 
{color:#ff0000}null{color});*     }
     return new LocalizedMessage(resourceBundle, key);
 }

  was:
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.

@Override
 public Message newMessage(final String key)
Unknown macro: \{     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)
Unknown macro: {         *return new LocalizedMessage(baseName, key, 
{color:#ff0000}null{color});*     }
     return new LocalizedMessage(resourceBundle, key);
 }


> 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
>    Affects Versions: 2.13.3
>            Reporter: Diego Villablanca
>            Priority: Trivial
>              Labels: easyfix
>   Original Estimate: 10m
>  Remaining Estimate: 10m
>
> 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.
> @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)
>  Unknown macro:
> Unknown macro: {         *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