NullpointerException in MyFacesGenericPortlet after action-invocation
---------------------------------------------------------------------
Key: MYFACES-1150
URL: http://issues.apache.org/jira/browse/MYFACES-1150
Project: MyFaces Core
Type: Bug
Environment: XP / JBoss Portal 2.21RC2 / JDK5
Reporter: Martin Schmidt
The problem is, that the sessionTimeout(...) detector method does not work
properly, because there is always as session in this jboss context - and I
think under many more application servers...
This is the solution (as part of a subclass I made from MyFacesGenericPortlet:
protected void facesRender(RenderRequest request, RenderResponse response)
throws PortletException, java.io.IOException {
if (log.isTraceEnabled())
log.trace("called facesRender");
setContentType(request, response);
//////////////////////////////////////////////////// MODIFIED
String viewId = request.getParameter(VIEW_ID);
boolean nonFacesRequest = (viewId == null) || sessionTimedOut(request);
request.getPortletSession(true).setAttribute(SESSION_LIVE_ATTR,
Boolean.TRUE); /////// say we are alive
if (nonFacesRequest) {
////////////////////////////////////////////////////
setPortletRequestFlag(request);
nonFacesRequest(request, response);
return;
}
setPortletRequestFlag(request);
try {
ServletFacesContextImpl facesContext =
(ServletFacesContextImpl)
request.getPortletSession().getAttribute(CURRENT_FACES_CONTEXT);
if (facesContext == null) {
facesContext = (ServletFacesContextImpl)
facesContext(request, response);
request.getPortletSession().setAttribute(CURRENT_FACES_CONTEXT, facesContext);
}
// TODO: not sure if this can happen. Also double check this
against
// spec section 2.1.3
if (facesContext.getResponseComplete())
return;
facesContext.setExternalContext(makeExternalContext(request,
response));
lifecycle.render(facesContext);
} catch (Throwable e) {
handleExceptionFromLifecycle(e);
}
}
protected boolean sessionTimedOut(PortletRequest request) {
if (super.sessionTimedOut(request))
return true;
Object flag =
request.getPortletSession(false).getAttribute(SESSION_LIVE_ATTR);
return flag == null;
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira