]
Brian Leathem commented on WELD-878:
------------------------------------
This seems to be killing the viewAction from Seam Faces, preventing the viewAction
component from performing navigations. Can we re-assess the priority of resolving this?
Many eyes are looking at the viewAction right now, for possible inclusion in JSF 2.2.
I have a JSFUnit/Arquillian test in a feature branch of Seam Faces demonstrating this
failure. Please let me know if you would like details on running this test (building
JSFUnit is required at the moment).
WeldPhaseListener fails to activate conversation context if
conversation is not found
-------------------------------------------------------------------------------------
Key: WELD-878
URL:
https://issues.jboss.org/browse/WELD-878
Project: Weld
Issue Type: Bug
Components: Conversations, Web Tier integration (JSF, JSP, EL and Servlet)
Affects Versions: 1.1.0.Final, 1.1.1.Final
Environment: Glassfish 3.1 B43 updated with weld-1.1.1
Reporter: Jarkko Hyƶty
It seems that org.jboss.weld.jsf.WeldPhaseListener fails to activate conversation context
if a conversation is not found by the supplied conversation id. This problem is
potentially related to [SEAMCATCH-46],[WELD-855].
JSR-299 6.7.4 Conversation context lifecycle has a requirement that 'If the
propagated conversation cannot be restored, the container _must associate the request with
a new transient conversation_ and throw an exception of type
javax.enterprise.context.NonexistentConversationException from the restore view phase of
the JSF lifecycle.'. However, the implementation of
org.jboss.weld.jsf.WeldPhaseListener.activateConversations fails to do that if a
conversation is not found by the conversation id.
{code}
private void activateConversations(FacesContext facesContext)
{
ConversationContext conversationContext =
instance().select(HttpConversationContext.class).get();
String cid = getConversationId(facesContext, conversationContext);
log.debug(RESUMING_CONVERSATION, cid);
if (cid != null && conversationContext.getConversation(cid) == null)
{
throw new NonexistentConversationException(NO_CONVERSATION_FOUND_TO_RESTORE,
cid);
}
conversationContext.activate(cid);
}
{code}
Recovering from the exception becomes difficult since the context is not active. Typical
symptom is 'java.lang.IllegalStateException: Unable to load current conversations from
the associated request, something went badly wrong when associate() was called
at
org.jboss.weld.context.AbstractConversationContext.getCurrentConversation(AbstractConversationContext.java:413)'
--
This message is automatically generated by JIRA.
For more information on JIRA, see: