You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by Andrew Robinson <an...@gmail.com> on 2010/02/10 22:10:27 UTC
Re: [Trinidad 2] Permission to change the API of CoreRenderer by
adding a new final override and a new sub-class hook method for client
behavior decoding (TRINIDAD-1715)
I am wondering if this may not be a great idea as it may break people
since CoreRenderer is API and not IMPL. Any ideas on how I can do this
in a way to ensure that the client behaviors are decoded but not break
the API?
-Andrew
On Wed, Feb 10, 2010 at 10:39 AM, Andrew Robinson
<an...@gmail.com> wrote:
> I need to add the ClientBehavior decoding logic to Trinidad as I
> forgot to do it earlier
> (https://issues.apache.org/jira/browse/TRINIDAD-1715). I would like to
> put the logic in the renderer, not in UIXComponentBase as it makes
> much more sense to have it there. I need to make sure the method is
> called so that people don't subclass the method and forget to call the
> parent method. I would like to make the following additions to
> CoreRenderer:
>
> @Override
> public final void decode(
> FacesContext facesContext,
> UIComponent component)
> {
> FacesBean facesBean = getFacesBean(component);
> String clientId = null;
> if (facesBean != null)
> {
> clientId = decodeBehaviors(facesContext, component, facesBean);
> }
> decode(facesContext, component, facesBean, clientId);
> }
>
> /**
> * Hook for sub-classes to perform their own decode logic
> * @param facesContext the faces context
> * @param component the component to decode
> * @param facesBean the faces bean for the component
> * @param clientId the client ID if it has been retrieved already
> * during decoding, otherwise it will be null. Passed in for performance
> * reasons, so that if it has already been retrieved it will not need to be
> * retrieved again
> */
> protected void decode(
> FacesContext facesContext,
> UIComponent component,
> FacesBean facesBean,
> String clientId)
> {
> // No-op
> }
>
> Even though this seems the right thing to do, I know that any
> renderers that sub-class CoreRenderer or XhtmlRenderer will need to be
> updated. I will obviously convert the Trinidad renderers. Do you all
> concur that this is the right thing to do, an also if you are okay
> with the API of the new contract?
>
> Thank you,
> Andrew
>