Getting some kind of warning would be nice, though. Maybe you could at least 
add a log.warn statement to inform the developer?


Am 05.12.2011 um 02:34 schrieb Taha Hafeez Siddiqi:

> Hi Igor,
> 
> I also thought of that but then I settled for this solution because 1) it 
> doesn't break 5.2 code 2) we are already using translator-name in the 
> overriding messages 3) throwing an exception because of a missing message-key 
> doesn't seem right.
> 
> regards
> Taha
> 
> On Dec 5, 2011, at 3:43 AM, Igor Drobiazko wrote:
> 
>> Wouldn't it be better to validate each translator in TranslatorSourceImpl
>> and throw an IllegalRgumentException with a detailed message if a
>> translator doesn't provide a message key?  This way the user would
>> immediately at startup know that he needs to provide a key. A default key
>> without any value doesn't make any sense to me.
>> 
>> On Sun, Dec 4, 2011 at 7:07 PM, <ta...@apache.org> wrote:
>> 
>>> Author: tawus
>>> Date: Sun Dec  4 18:07:53 2011
>>> New Revision: 1210164
>>> 
>>> URL: http://svn.apache.org/viewvc?rev=1210164&view=rev
>>> Log:
>>> TAP5-1763: NPE is caused when you create a Translator with null message
>>> key. Fixed by using the 'translator-name'-message in case the message key
>>> is null
>>> 
>>> Modified:
>>> 
>>> tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java
>>> 
>>> tapestry/tapestry5/branches/5.3/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImplTest.java
>>> 
>>> Modified:
>>> tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java
>>> URL:
>>> http://svn.apache.org/viewvc/tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java?rev=1210164&r1=1210163&r2=1210164&view=diff
>>> 
>>> ==============================================================================
>>> ---
>>> tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java
>>> (original)
>>> +++
>>> tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java
>>> Sun Dec  4 18:07:53 2011
>>> @@ -125,7 +125,14 @@ public class FieldTranslatorSourceImpl i
>>>           return overrideMessages.getFormatter(overrideKey);
>>> 
>>>       // Otherwise, use the built-in validation message appropriate to
>>> this validator.
>>> +        String messageKey = translator.getMessageKey();
>>> 
>>> -        return globalMessages.getFormatter(translator.getMessageKey());
>>> +        // If no key has been specified, use translator name to create a
>>> key
>>> +        if(messageKey == null)
>>> +        {
>>> +            messageKey = translatorName + "-message";
>>> +        }
>>> +
>>> +        return globalMessages.getFormatter(messageKey);
>>>   }
>>> }
>>> 
>>> Modified:
>>> tapestry/tapestry5/branches/5.3/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImplTest.java
>>> URL:
>>> http://svn.apache.org/viewvc/tapestry/tapestry5/branches/5.3/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImplTest.java?rev=1210164&r1=1210163&r2=1210164&view=diff
>>> 
>>> ==============================================================================
>>> ---
>>> tapestry/tapestry5/branches/5.3/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImplTest.java
>>> (original)
>>> +++
>>> tapestry/tapestry5/branches/5.3/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImplTest.java
>>> Sun Dec  4 18:07:53 2011
>>> @@ -113,6 +113,50 @@ public class FieldTranslatorSourceImplTe
>>>   }
>>> 
>>>   @Test
>>> +    public void create_default_translator_with_name_and_null_key()
>>> +    {
>>> +        Field field = mockField();
>>> +        Messages messages = mockMessages();
>>> +        Locale locale = Locale.ENGLISH;
>>> +        Class propertyType = Map.class;
>>> +        TranslatorSource ts = mockTranslatorSource();
>>> +        FormSupport fs = mockFormSupport();
>>> +        Translator translator = mockTranslator("maptrans", Map.class);
>>> +        Messages globalMessages = mockMessages();
>>> +        MessageFormatter formatter = mockMessageFormatter();
>>> +        MarkupWriter writer = mockMarkupWriter();
>>> +        String label = "Field Label";
>>> +        String message = "Woops, did it again.";
>>> +        AnnotationProvider ap = mockAnnotationProvider(null);
>>> +
>>> +        train_findByType(ts, propertyType, translator);
>>> +
>>> +        train_getFormValidationId(fs, "myform");
>>> +
>>> +        train_contains(messages, "myform-myfield-maptrans-message",
>>> false);
>>> +        train_contains(messages, "myfield-maptrans-message", false);
>>> +        train_getMessageKey(translator, null);
>>> +
>>> +        train_getMessageFormatter(globalMessages, "maptrans-message",
>>> formatter);
>>> +        train_getLabel(field, label);
>>> +        train_format(formatter, message, label);
>>> +
>>> +        translator.render(field, message, writer, fs);
>>> +
>>> +        replay();
>>> +
>>> +        FieldTranslatorSource source = new FieldTranslatorSourceImpl(ts,
>>> globalMessages, fs);
>>> +
>>> +        FieldTranslator ft = source.createDefaultTranslator(field,
>>> "myfield", messages, locale, propertyType, ap);
>>> +
>>> +        assertEquals(ft.getType(), Map.class);
>>> +
>>> +        ft.render(writer);
>>> +
>>> +        verify();
>>> +    }
>>> +
>>> +    @Test
>>>   public void create_default_translator_with_name()
>>>   {
>>>       Field field = mockField();
>>> 
>>> 
>>> 
>> 
>> 
>> -- 
>> Best regards,
>> 
>> Igor Drobiazko
>> http://tapestry5.de
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: dev-h...@tapestry.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org

Reply via email to