[
http://jira.jboss.com/jira/browse/JBSEAM-1289?page=comments#action_12387221 ]
Wolfgang Chico Toepfer commented on JBSEAM-1289:
------------------------------------------------
Hi,
As of last week Seam 2.0 has become productive. Has the situation changed in any way?
What I noticed is that the original way of propagation that this hack applies is not
possible anymore with Seam 2.0 because the line
Manager.instance().restoreConversation(createParameterMapForConversationRestore(convId));
is not possible anymore due to changes of the Seam API.
So if at least we could save this hack and have Seam 2.0 running with Trinidad with this
respect, the next question is which Seam method to use instead of above line. Any ideas?
Thanks,
Wolfgang.
Conversation Propagation andTrinidad Dialogs
--------------------------------------------
Key: JBSEAM-1289
URL:
http://jira.jboss.com/jira/browse/JBSEAM-1289
Project: JBoss Seam
Issue Type: Feature Request
Components: JSF
Affects Versions: 1.2.1.GA
Environment: JBoss 4.0.4GA
Reporter: Brian Smith
Assigned To: Pete Muir
Priority: Minor
Attachments: MyActionListener.java, MyPhaseListener.java
Seam does not automatically support Trinidad's dialog feature in terms of propagating
long running conversations to the dialog window.
Forum User dajevtic has provided a custom phase listener and action listener to enable
propagation but it requires a specific naming convention for the dialog page. It would be
nice to enable support directly using standard Seam notation like the
s:conversationPropagation tag or @Begin(join = true)
Here are the relevant phase listener and action listener
*Phase Listener*
private static final String CONVERSATION_ID_SESSION_PARAMETER =
"conversationId";
private Map createParameterMapForConversationRestore(String conversationId) {
Map paramterMap = new Hashtable();
paramterMap.put(CONVERSATION_ID_SESSION_PARAMETER, conversationId);
return paramterMap;
}
private void restoreConversation(Context context) {
if (context.isSet(CONVERSATION_ID_SESSION_PARAMETER)) {
String convId = context.get(CONVERSATION_ID_SESSION_PARAMETER).toString();
Manager.instance().restoreConversation(createParameterMapForConversationRestore(convId));
context.remove(CONVERSATION_ID_SESSION_PARAMETER);
}
}
public void afterPhase(PhaseEvent event) {
try {
if (event.getPhaseId().equals(PhaseId.RESTORE_VIEW)) {
UIViewRoot root = event.getFacesContext().getViewRoot();
if (root != null) {
String viewId = root.getViewId();
if ((viewId != null) && viewId.endsWith("_dlg.jspx")) {
restoreConversation(Contexts.getSessionContext());
}
}
} else {
log.info("after " + event.getPhaseId());
}
} catch (Exception e) {
log.error("Could not restore Seam conversation", e);
}
}
*Action Listener*
public void processAction(ActionEvent actionEvent)
throws AbortProcessingException {
if (actionEvent.getComponent() instanceof CoreCommandLink) {
CoreCommandLink link = (CoreCommandLink)actionEvent.getComponent();
if (link.isUseWindow()) {
Contexts.getSessionContext().set("conversationId",
Manager.instance().getCurrentConversationId());
}
}
super.processAction(actionEvent);
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira