Bridge ViewHandler incompatible with Trinidad: if access as servlet restoreView fails to restore proper instance -----------------------------------------------------------------------------------------------------------------
Key: PORTLETBRIDGE-151 URL: https://issues.apache.org/jira/browse/PORTLETBRIDGE-151 Project: MyFaces Portlet Bridge Issue Type: Bug Components: Impl Affects Versions: 2.0.0-alpha, 1.0.0 Reporter: Michael Freedman Assignee: Michael Freedman Though the bridge should merely delegate all non-portlet calls in its ViewHandler Impl, it doesn't. This causes the following peculiar problem. The bridge's createView() method causes a PortletNamingContainerUIViewRoot to be created/returned when accessed from a servlet using the code block that temporarily substitutes the component (type) with this class. Trinidad's restore keeps cached versions of the UIViewRoot -- but rather than use it it -- it claims its worried about message/events still on the object. It duplicates it and restores the state into the duplicate. Unfortunately the way it duplicates is is to merely call createComponent (using the component type). As we only temporarily set the component type (class) they duplicate/create the wrong class -- and then restore into it. We have seen situations when Trinidad runs under a rich client layer that PPRs don't render (in the servlet case) because of this -- the UIViewRoots rendered flag is incorrectly set to true because of the bad restore. Note: Though we haven't seen anolmolies when running just with Trinidad (nonPPR) we expect folks will encounter some problems and hence anyone running the bridge with Trinidad (bridge 1.0 or 2.0) should pick up this fix. Simple/basic fix is to have the bridge's ViewHandler, always and only delegate when not a portlet request. This effectively works around the problem. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.