[ 
https://issues.apache.org/jira/browse/PORTLETBRIDGE-175?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Freedman resolved PORTLETBRIDGE-175.
--------------------------------------------

       Resolution: Fixed
    Fix Version/s: 3.0.0-alpha

As suggested, modified code to ensure we are in a Portlet request before 
executing phase listener.

> Bridge phase listeners have portlet dependecy but can be executed in a 
> servlet request yielding ClassCastException
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: PORTLETBRIDGE-175
>                 URL: https://issues.apache.org/jira/browse/PORTLETBRIDGE-175
>             Project: MyFaces Portlet Bridge
>          Issue Type: Bug
>          Components: Impl
>    Affects Versions: 1.0.0, 2.0.0, 3.0.0-alpha
>            Reporter: Michael Freedman
>            Assignee: Michael Freedman
>             Fix For: 3.0.0-alpha
>
>
> The Bridge temporarily installs its own phase listeners to provide a variety 
> of behaviors .  As phase listeners are controlled by the lifecycle and there 
> (can be) is only 1 lifecycle instance per application all listeners are 
> called whenever the lifecycle is run.  Because you can have distinct portlets 
> in a application and the application can also run as a servlet care must be 
> taken to only execute the phase listener if its truly the target of the 
> execution.  The bridge properly handles this for the multiple portlet case by 
> checking that the event's FacesContext is the same as the thread's (current 
> instances).  Unfortunately this doesn't prevent the code from executing in 
> the servlet case.  I.e. if a portlet request comes in an is being processed 
> by the bridge it will install the phase listener.  If a second request 
> happens concurrently but accesses this app as a servlet, we will execute the 
> bridge's phase listener in this servlet request.  This results in a 
> ClassCastException as the code accesses the request object as a 
> PortletRequest (but its not). 
> Simple fix is to expand the test to only execute the phase listener is the 
> FacesContext instance match and its a Portlet request.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to