You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2010/02/01 00:15:14 UTC

svn commit: r905137 - /openwebbeans/trunk/webbeans-jsf/src/main/java/org/apache/webbeans/jsf/WebBeansPhaseListener.java

Author: gerdogdu
Date: Sun Jan 31 23:15:13 2010
New Revision: 905137

URL: http://svn.apache.org/viewvc?rev=905137&view=rev
Log:
Updating conversation propogation

Modified:
    openwebbeans/trunk/webbeans-jsf/src/main/java/org/apache/webbeans/jsf/WebBeansPhaseListener.java

Modified: openwebbeans/trunk/webbeans-jsf/src/main/java/org/apache/webbeans/jsf/WebBeansPhaseListener.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-jsf/src/main/java/org/apache/webbeans/jsf/WebBeansPhaseListener.java?rev=905137&r1=905136&r2=905137&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-jsf/src/main/java/org/apache/webbeans/jsf/WebBeansPhaseListener.java (original)
+++ openwebbeans/trunk/webbeans-jsf/src/main/java/org/apache/webbeans/jsf/WebBeansPhaseListener.java Sun Jan 31 23:15:13 2010
@@ -19,7 +19,6 @@
 import javax.faces.event.PhaseEvent;
 import javax.faces.event.PhaseId;
 import javax.faces.event.PhaseListener;
-import javax.servlet.http.HttpServletRequest;
 
 import org.apache.webbeans.config.OWBLogConst;
 import org.apache.webbeans.context.ContextFactory;
@@ -50,13 +49,14 @@
      */
     public void afterPhase(PhaseEvent phaseEvent)
     {
-        if (phaseEvent.getPhaseId().equals(PhaseId.RENDER_RESPONSE))
+        if (phaseEvent.getPhaseId().equals(PhaseId.RENDER_RESPONSE) ||
+                JSFUtil.getCurrentFacesContext().getResponseComplete())
         {
         	Conversation conversation = conversationManager.getConversationBeanReference();
         	
             if (conversation.isTransient())
             {
-                logger.info(OWBLogConst.INFO_0041, new Object[]{conversation.getId(), JSFUtil.getViewId()});
+                logger.info(OWBLogConst.INFO_0041, new Object[]{conversation.getId()});
                 ContextFactory.destroyConversationContext();                                                    
             }
             else
@@ -66,13 +66,7 @@
                 owbConversation.updateTimeOut();
                 //Other threads can now access propogated conversation.
                 owbConversation.setInUsed(false);                
-            }
-            
-            HttpServletRequest request = (HttpServletRequest)phaseEvent.getFacesContext().getExternalContext().getRequest();
-            if(request.getMethod().equals("POST"))
-            {
-                JSFUtil.getSession().removeAttribute("POST_CONVERSATION");
-            }
+            }            
         }
     }
 
@@ -81,15 +75,8 @@
      */
     public void beforePhase(PhaseEvent phaseEvent)
     {
-        HttpServletRequest request = (HttpServletRequest)phaseEvent.getFacesContext().getExternalContext().getRequest();
-        
         if (phaseEvent.getPhaseId().equals(PhaseId.RESTORE_VIEW))
         {
-            if(request.getMethod().equals("POST"))
-            {
-                JSFUtil.getSession().setAttribute("POST_CONVERSATION", true);
-            }
-            
             //It looks for cid parameter in the JSF request.
             //If request contains cid, then it must restore conversation
             //Otherwise create NonexistentException
@@ -98,7 +85,7 @@
         	
 			if (conversation.isTransient())
 			{
-				logger.info(OWBLogConst.INFO_0043, new Object[]{conversation.getId(), JSFUtil.getViewId()});
+				logger.info(OWBLogConst.INFO_0043, new Object[]{conversation.getId()});
 				ContextFactory.initConversationContext(null);
 				
 	            //Not restore, throw exception
@@ -109,26 +96,12 @@
 			}
 			else
 			{
-				logger.info(OWBLogConst.INFO_0042, new Object[]{conversation.getId(), JSFUtil.getViewId()});
+				logger.info(OWBLogConst.INFO_0042, new Object[]{conversation.getId()});
 				
 				//Conversation must be used by one thread at a time
 				ConversationImpl owbConversation = (ConversationImpl)conversation;
 				if(!owbConversation.getInUsed().compareAndSet(false, true))
-				{
-				    if(request.getMethod().equals("GET"))
-				    {
-				        //POST-Redirect-GET
-				        if(JSFUtil.getSession().getAttribute("POST_CONVERSATION") != null)
-				        {
-			                   ConversationContext conversationContext = conversationManager.getConversationContext(conversation);
-			                   ContextFactory.initConversationContext(conversationContext);
-			                   
-			                   JSFUtil.getSession().removeAttribute("POST_CONVERSATION");
-			                   
-			                   return;
-				        }
-				    }
-				    
+				{				    
 				    ContextFactory.initConversationContext(null);
 				    //Throw Busy exception
 				    throw new BusyConversationException("Propogated conversation with cid=" + cid + " is used by other request. It creates a new transient conversation");