I have a fix for this using solution B ready.  I'm going to submit it
as a fix to te bug.


On Thu, 2 Dec 2004 13:34:16 -0600, Heath Borders
<[EMAIL PROTECTED]> wrote:
> The JSF spec doesn't go into much detail about the way that the
> Application needs to search for a converter for a given Object type.
> Currently, we only search a Class' direct interfaces and, recursively,
> its superclasses for a match.  This can be problematic if the
> converter definition refers to an interface.  The only checking will
> be for its direct parents.
> 
> Here is an example outlining my problem:
> 
> Interfaces:
> Descriptor, Active, Identifiable
> 
> ModelBase extends Descriptor
> 
> Organization extends Active, Identifiable, ModelBase
> 
> Classes:
> 
> DescriptorImpl implements Descriptor
> 
> ModelBaseImpl extends DescriptorImpl implements ModelBase
> 
> OrganizationImpl extends ModelBaseImpl implements Organization
> 
> This means that if I register my Converter on a Descriptor and a JSF
> component needs to find a Converter for an Organization, it will not
> find one because the search will go something like this:
> 
> Organization = no match
> search interfaces: Active = no match
>                          Identifiable = no match
>                          ModelBase = no match
> search superclass: null = no match
> 
> return null;
> 
> Of course, we should just recursively search the interfaces as well.
> Preferably, we would want users to be able to define a different
> Converter for a Descriptor and an Organization with confidence that
> the Organization would always get an OrganizationConverter.
> 
> That outlines the bug, which I intend to fix.  The real question is
> one of strategy.
> 
> Here are the strategies we could use:
> A: use Class.isAssignableFrom(Class) on each key in the
> _converterTypeMap to match the Class to a converter, then get that
> converter from the Map.  There could be additional algorithms employed
> to choose between multiple matches.
> 
> B: When checking an interface, we just see if it is present in the
> Map.  We could execute the internalCreateConverter(Class) method on
> it, so that its SuperInterfaces will be searched.
> 
> Sorry for the crazy-long email.  Thoughts?
> 
> 
> --
> If you don't have a GMail account, I probably have 5 invites.  Just ask!
> -Heath Borders-Wing
> [EMAIL PROTECTED]
> 


-- 
If you don't have a GMail account, I probably have 5 invites.  Just ask!
-Heath Borders-Wing
[EMAIL PROTECTED]

Reply via email to