[jboss-user] [JBoss Seam] - Redirecting to Previous Long Running Conversations

trickyvail do-not-reply at jboss.com
Mon Sep 10 10:28:03 EDT 2007


I have fixed a small error in the last version.

@Name("stickyConversationManager")
  | @Scope(ScopeType.SESSION)
  | public class StickyConversationManager
  | {
  | 	private Stack<String> conversationStack = new Stack<String>();
  | 	
  | 	@Logger
  | 	private Log log;
  | 	
  | 	@In(create = true)
  | 	@Out
  | 	private CartHome cartHome;
  | 
  | 	public String stick()
  | 	{
  | 		Manager manager = Manager.instance(); 
  | 		HttpServletRequest httpServletRequest = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
  | 		String conversationIdRequestParameter = httpServletRequest.getParameter(manager.getConversationIdParameter());
  | 
  | 		if(! manager.isLongRunningOrNestedConversation())
  | 		{
  | 			ConversationEntries conversationEntries = ConversationEntries.instance();
  | 
  | 			if(conversationEntries.getConversationEntries().size() == 0)
  | 			{
  | 				manager.beginConversation();
  | 
  | 				// the following change to the conversation timeout
  | 				// is gone on the next page submission
  | 				Conversation.instance().setTimeout(24 * 60 * 60 * 1000);
  | 				conversationStack.push(Conversation.instance().getId());
  | 			}
  | 			else if(conversationIdRequestParameter == null)
  | 			{
  | 				while(conversationStack.size() > 0)
  | 				{
  | 					ConversationEntry conversationEntry = conversationEntries.getConversationEntry(conversationStack.peek());
  | 					if(conversationEntry != null)
  | 					{
  | 						conversationEntry.redirect();
  | 						break;
  | 					}
  | 					else
  | 					{
  | 						conversationStack.pop();
  | 					}
  | 				}
  | 			}
  | 		}
  | 		else if(manager.isLongRunningConversation())
  | 		{
  | 			try
  | 			{
  | 				if(conversationStack.peek() != Conversation.instance().getId())
  | 				{
  | 					conversationStack.remove(Conversation.instance().getId());
  | 					conversationStack.push(Conversation.instance().getId());
  | 				}
  | 			}
  | 			catch(EmptyStackException e){}
  | 		}
  | 
  | 		log.debug(toString());
  | 		return null;
  | 	}
  | 	
  | 	@Override
  | 	public String toString()
  | 	{
  | 		StringBuffer stringBuffer = new StringBuffer();
  | 		stringBuffer
  | 			.append("<ConversationManager>")
  | 			.append("<Stack>");
  | 		for(String conversationId : conversationStack)
  | 		{
  | 			stringBuffer
  | 				.append("<ConversationId>")
  | 				.append(conversationId)
  | 				.append("</ConversationId>");
  | 		}
  | 		stringBuffer
  | 			.append("</Stack>")
  | 			.append("</ConversationManager>");
  | 		return stringBuffer.toString();
  | 	}
  | }

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4082639#4082639

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4082639



More information about the jboss-user mailing list