Bridge TCK TestPage179 (redirectRenderPRP1Test) is failing in Pluto 3.0 because ExternalContextImpl.redirect(String url) assumes that the specified URL has has non-encoded query parameters. This is an incorrect assumption since the Portlet Spec leaves the format of Portlet URLs as an implementation detail. For example, portlet containers may obfuscate Portlet URLs as a design option. Another example would be a FriendlyURL that contains implied parameters.
In Pluto 2.0, the _facesViewIdRender URL parameter did not have any special encoding and was easily determined by examining the query-string component of the URL:
But in Pluto 3.0, the facesViewIdRender URL parameter is encoded as a _action parameter that cannot be determined by examining the query-string component of the URL:
The solution to this problem in the Apache MyFaces Portlet Bridge was to save-off the query string as a request attribute in the call to PortletExternalContextImpl.encodeActionURL(String uri) and then retrieve the query-string request attribute in the call to PortletExternalContextImpl.redirect(String url)).