myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Freedman (JIRA)" <>
Subject [jira] Resolved: (PORTLETBRIDGE-185) Portlet 2.0 Bridge NPE in restore resource request if scope isn't in Map
Date Fri, 04 Mar 2011 00:29:37 GMT


Michael Freedman resolved PORTLETBRIDGE-185.

       Resolution: Fixed
    Fix Version/s: 2.0.1

Turns out the actual use case that caused this occurred because of a concurrency interaction
inside a series of requests that occur after a renderredirect and include an concurrent render
and resource request.  The use case problem is the bridge was creating the scopeId early in
the render but not actually giving it a representation in the ScopeMap until later.  When
a concurrent resource request is run -- it can hit this case where it picks up this new scopeId
but doesn't find the entry.

Fix was actually quite involved -- in that it also showed that in this use case the bridge
was overally aggressively creating new scopes.  So now the scope activation/resolution has
been reworked to make this work/simpler.

> Portlet 2.0 Bridge NPE in restore resource request if scope isn't in Map
> ------------------------------------------------------------------------
>                 Key: PORTLETBRIDGE-185
>                 URL:
>             Project: MyFaces Portlet Bridge
>          Issue Type: Bug
>          Components: Impl
>    Affects Versions: 2.0.0
>            Reporter: Michael Freedman
>            Assignee: Michael Freedman
>             Fix For: 2.0.1
> In handling a resource request we reacquire the bridge request scope.  If we find the
scopeId to use but the scope has since been removed from the ScopeMap (or never put there
in the first place) you get an NPE.  This happen because the code (getResourceRequestScopeId()
in BridgeImpl) dereferences the (Map) object pulled from the scopeMap using the scopeId key
without checking first if this object is null (wasn't found).

This message is automatically generated by JIRA.
For more information on JIRA, see:


View raw message