Hello Mario,

On 9/5/07, Mario Ivankovits <[EMAIL PROTECTED]> wrote:
>
> Hi!
> > It's the opposite, as for any backward compatible system. It means
> > that you can, theoretically,  run a JSF 1.1 application on a 1.2 system.
> I haven't looked at it in very detail, but it seems if you provide your
> own javax.faces.application.Application compiled with JSF1.1 the method
> getELResolve will be used from the JSF1.2 implementation which seems to
> throw an UOE as you can see here (reported from Dan Tran as Orchestra bug)
>
>
> > java.lang.UnsupportedOperationException
> >       javax.faces.application.Application.getELResolver(Application.java
> :443)
> >
> > com.sun.faces.context.FacesContextImpl.getELContext(
> FacesContextImpl.java :174)
> >       javax.faces.component.UIViewRoot.setLocale(UIViewRoot.java:900)


This is, indeed, a compatibility issue. However, I assume it's caused
because you did not use the decorator pattern when you applied your custom
Application implementation, so now you're inheriting from the default
implementation method behavior, which is to throw an
UnsupportedOperationException. I don't think we can flag that as a spec bug
though as they could hardly have done any better. The best solution for you
would be to use decorator pattern, then getELResolver would be dispatched to
ApplicationImpl (either MyFaces's or RI's) rather than default Application
implementation.

So, I'd say upward API compatibility is broken here.


I call that a backward compatibility issue, since you're trying to execute
an application developed with an older API with a newer version. So the new
API is not backward compatible with older applications, but that's just
terminology and changes nothing to your problem though.


Regards,

~ Simon

Ciao,
> Mario
>
>

Reply via email to