I have a custom ApplicationFactory that wraps the original ApplicationFactory so that it can produce a custom Application that wraps the original Application.  It is configured via faces-config.xml:

<factory>
    <application-factory>custom.MyApplicationFactory</application-factory>
</factory>

As a result, the FacesConfigurator class is not able to properly configure all the standard Converters (for Integer, Long, etc) because it relies on setting instances of org.apache.myfaces.config.impl.digester.elements.Converter on the ApplicationImpl (and my Application is not an instance of ApplicationImpl):

if(application instanceof ApplicationImpl)
{
    for (Iterator it = _dispenser.getConverterConfigurationByClassName(); it.hasNext();)
    {
        String converterClassName = (String) it.next();

        ((ApplicationImpl) application).addConverterConfiguration(converterClassName,
            _dispenser.getConverterConfiguration(converterClassName));
    }
}

Therefore this inner block of code is passed over in my environment.  Is there any way that MyFaces can be changed so that ApplicationImpl does not need to know about org.apache.myfaces.config.impl.digester.elements.Converter internally?  It would be nice if the FacesConfigurator could configure any Application without relying on it being an ApplicationImpl.


Reply via email to