[ 
https://issues.apache.org/jira/browse/TAP5-2439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14270851#comment-14270851
 ] 

Michael Dukaczewski commented on TAP5-2439:
-------------------------------------------

For my projects I currently use a patched version of Tapestry 5.4-beta-22 where 
I have only one Version of getLabelForEnum():
{code:title=TapestryInternalUtils.java}
    public static String getLabelForEnum(Messages messages, Enum value)
    {
        String prefix = lastTerm(value.getClass().getName()).replace('$', '.');

        String name = value.name();

        String key = prefix + "." + name;

        if (messages.contains(key))
            return messages.get(key);

        if (messages.contains(name))
            return messages.get(name);

        return toUserPresentable(name.toLowerCase());
    }
{code}
As you can see I have also replaced the dollar char with a dot to get a more 
consistent key with the java code.

> Inconsistent label keys in message catalog for enums
> ----------------------------------------------------
>
>                 Key: TAP5-2439
>                 URL: https://issues.apache.org/jira/browse/TAP5-2439
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.4
>            Reporter: Michael Dukaczewski
>            Priority: Minor
>
> When customizing the label of an enum that is defined inside a class two 
> different key in the message catalog are needed.
> Example, given the following class:
> {code:title=Address.java}
> public class Address {
>    public enum Honorific {MR, MRS, MISS, DR}
>    // [...]
> }
> {code}
> Two entries per value in the message catalog are needed to get a consistent 
> output:
> {code:title=app.properties}
> Honorific.MR=Mr.
> Address$Honorific.MR=Mr.
> {code}
> The problem is that there are two different methods in TapestryInternalUtils 
> to get a label for an enum:
> {code:title=TapestryInternalUtils.java}
> String getLabelForEnum(Messages messages, String prefix, Enum value)
> String getLabelForEnum(Messages messages, Enum value)
> {code}
> The former is called by EnumSelectModel, where the latter is used by 
> PropertyDisplayBlocks.
> Although the second method calls the first, but here the prefix is generated 
> by TapestryInternalUtils.lastTerm(). In the other callings of the first 
> method Class.toSimpleName() is used, which does not produce the same result.
> I think the best solution would be to remove the method with 3 arguments 
> completely, because there is no meaningful use for it. All labels for an enum 
> should be generated consistent in the same way.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to