Bruno Dumon wrote:

On Wed, 2004-11-10 at 12:15 +0100, Daniel Fagerstrom wrote:
<snip/>


CForms Convertor Integration
----------------------------

Here is the Convertor interface:

public interface Convertor {
/**
* Converts string representation into the object of convertor's type.
*
* @param formatCache can be null if not needed
*/
ConversionResult convertFromString(String value, Locale locale, FormatCache formatCache);


   String convertToString(Object value, Locale locale, FormatCache formatCache);

   Class getTypeClass();

   /**
    * Generates a bit of information about this convertor (optional).
    */
   void generateSaxFragment(ContentHandler contentHandler, Locale locale) 
throws SAXException;

   public interface FormatCache {
       public Object get();
       public void store(Object object);
   }
}

The main problem is the ConversionResult. It is a class that in turn uses some CForms specific stuff, (ValidationError, I18NMessage and Cosntants). I think the idea of having a ConversionResult is ok, but we need to make it independent of the rest of CForms.

AFAICS we don't need the formatCache in a convertion component, each convertor will only be needed to be defined once



The purpose of the formatCache is if a lot of values need to be converted using the same convertor, which is (or can be) the case in selection lists. Java's DateFormat and NumberFormat classes are not thread-safe,

Ok. didn't know that, disturbing :/

so they need to be recreated for each conversion, and this
can be quite heavy (eg the number or date formatting pattern must be
reparsed each time). The format cache allows to store the prepared
Date/NumberFormat instance, but is completely optional.


Yes, now it makes perfect sense. Would it be possible to let the convertor manager handle some thread local Date/NumberFormat cache, so that the user of the convertor doesn't have to manage that?

/Daniel



Reply via email to