[ 
https://issues.apache.org/jira/browse/VELTOOLS-104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12592386#action_12592386
 ] 

Christopher Schultz commented on VELTOOLS-104:
----------------------------------------------

If this change requires a change to the javadocs, it's basically changing 
previously-expected behavior.

Should we maybe reprecate the "render" method and implement another one 
alongside it with these new semantics? I can't really see how the existing 
semantics make any sense in the first place, but this is supposed to be a 
stable API.

> MessageFormat.format() not invoked in ResourceTool.render() if there are no 
> arguments
> -------------------------------------------------------------------------------------
>
>                 Key: VELTOOLS-104
>                 URL: https://issues.apache.org/jira/browse/VELTOOLS-104
>             Project: Velocity Tools
>          Issue Type: Bug
>          Components: GenericTools
>    Affects Versions: 1.4, 2.0, 2.x
>            Reporter: Rod
>             Fix For: 2.0, 2.x
>
>
> render() currently looks like this:
>     public String render(Object resource, Object[] args)
>     {
>         String value = String.valueOf(resource);
>         if (args == null)
>         {
>             return value;
>         }
>         return MessageFormat.format(value, args);
>     }
> Unfortunately, if you're using MessageFormat-ready messages then you should 
> be format()ting even strings with no arguments, even if this seems like an 
> inefficiency.
> We use many strings that are used on their own, or as part of other messages, 
> sometimes they have arguments and sometimes they don't. This creates a sticky 
> situation if you have to use MessageFormat escaping for some messages and not 
> others. For example:
> message1=ResourceTool's problem
> message2=$(message1) is {0}
> where "$(message1)" is a substitution for message1 (which our ResourceBundle 
> does for us). ResourceTool renders the first message fine but the second 
> message with an argument doesn't render properly due to the unescaped ' 
> passed to MessageFormat. Even without the special message substitution 
> render() causes problems because the escaping rules are different depending 
> on the message context.
> The messages should actually be:
> message1=ResourceTool''s problem
> message2=$(message1) is {0}
> to be consistent with MessageFormat's rules across all messages. 
> Unfortunately ResourceTool can't handle this because it doesn't pass a 
> no-argument resource to MessageFormat.
> I'm using a subclass of ResourceTool that doesn't have the shortcut:
>       @Override
>       public String render(Object resource, Object[] args) {
>               return MessageFormat.format(String.valueOf(resource), args);
>       }
> So all my messages have the same escaping rules.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to