You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by tovarisch <is...@gmail.com> on 2007/06/15 14:01:53 UTC

Re: T5: Type Coercion vs. Translator

I'm a bit confused about coercion and translators. What if I want to use
BigDecimal for two kind of data but with different representation (say 2 and
4 decimals)? I can create two named translators, but what about coercion?

Thanks.


Howard Lewis Ship wrote:
> 
> There's (for the moment) two configurations that control translators.
> Here's the built-in contributions, provided by TapestryModule:
> 
>     /**
>      * Contributes the basic set of default translators:
>      * <ul>
>      * <li>Integer</li>
>      * <li>String</li>
>      * <li>Long</li>
>      * <li>Double</li>
>      * </li>
>      */
>     public static void contributeTranslatorDefaultSource(
>             MappedConfiguration<Class, Translator> configuration)
>     {
>         configuration.add(Integer.class, new IntegerTranslator());
>         configuration.add(String.class, new StringTranslator());
>         configuration.add(Long.class, new LongTranslator());
>         configuration.add(Double.class, new DoubleTranslator());
>     }
> 
>     /**
>      * Contributes the basic set of named translators:
>      * <ul>
>      * <li>integer</li>
>      * <li>string</li>
>      * <li>long</li>
>      * <li>double</li>
>      * </ul>
>      */
>     public static void contributeTranslatorSource(
>             MappedConfiguration<String, Translator> configuration)
>     {
>         // Fortunately, the translators are tiny, so we don't have to
> worry
> about the slight
>         // duplication between this and TranslatorDefaultSource, though it
> is a pain to keep the two
>         // organized (perhaps they should be joined together into a single
> service, where we
>         // identify a name and a match type).
> 
>         configuration.add("integer", new IntegerTranslator());
>         configuration.add("string", new StringTranslator());
>         configuration.add("long", new LongTranslator());
>         configuration.add("double", new DoubleTranslator());
>     }
> 
> The TranslatorDefaultSource is responsible for providing a translator
> based
> on the property type.  The TranslatorSource is used (with the translator:
> binding prefix) to select a translator by name.
> 
> The repetition is annoying and the two services may be merged together at
> some point.
> 
> I don't think a UUID translator would be very complicated: there's a
> static
> fromString() method.
> 
> It does make sense that there should be a default translator that
> leverages
> the TypeCoercer to perform translations to and from strings.  Perhaps
> TranslatorDefaultSource is simply not needed -- scratch that: the
> translators are needed to generate client-side validation JavaScript (but
> a
> default translator would be useful, even if it could not handle
> client-side
> validation).
> 
> 
> On 5/22/07, Fisher, Brice A <ba...@sandia.gov> wrote:
>>
>>   I have a bean that returns an Id as a java.util.UUID.  Tapestry 5
>> can't translate this into anything it can display, so I get a:
>>
>> ---
>> java.lang.IllegalArgumentException
>> No adapter from type java.util.UUID to type
>> org.apache.tapestry.Translator is available (registered types are
>> java.lang.Double, java.lang.Integer, java.lang.Long, java.lang.String).
>> ---
>>
>>   So, I added a Type Coercion to my AppModule to coerce UUID's to
>> Strings, but that's not sufficient.  Do I need to coerce UUIDs to a
>> Translator (and if so, how, as it's not clear how a StringTranslator
>> would be constructed)?  Or is there some other interface to register a
>> type with the Translator?
>>
>>   Thanks,
>>   - Brice
>>
> 
> 
> 
> -- 
> Howard M. Lewis Ship
> TWD Consulting, Inc.
> Independent J2EE / Open-Source Java Consultant
> Creator and PMC Chair, Apache Tapestry
> Creator, Apache HiveMind
> 
> Professional Tapestry training, mentoring, support
> and project work.  http://howardlewisship.com
> 
> 

-- 
View this message in context: http://www.nabble.com/T5%3A-Type-Coercion-vs.-Translator-tf3797064.html#a11138042
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org