You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by yi...@apache.org on 2010/03/25 21:28:26 UTC

svn commit: r927588 - /openwebbeans/trunk/webbeans-jsf/src/main/java/org/apache/webbeans/jsf/ConversationAwareViewHandler.java

Author: yingwang
Date: Thu Mar 25 20:28:26 2010
New Revision: 927588

URL: http://svn.apache.org/viewvc?rev=927588&view=rev
Log:
[OWB-334] add getRedirectURL method to support jsf 2.0.

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

Modified: openwebbeans/trunk/webbeans-jsf/src/main/java/org/apache/webbeans/jsf/ConversationAwareViewHandler.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-jsf/src/main/java/org/apache/webbeans/jsf/ConversationAwareViewHandler.java?rev=927588&r1=927587&r2=927588&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-jsf/src/main/java/org/apache/webbeans/jsf/ConversationAwareViewHandler.java (original)
+++ openwebbeans/trunk/webbeans-jsf/src/main/java/org/apache/webbeans/jsf/ConversationAwareViewHandler.java Thu Mar 25 20:28:26 2010
@@ -13,6 +13,9 @@
  */
 package org.apache.webbeans.jsf;
 
+import java.util.List;
+import java.util.Map;
+
 import javax.enterprise.context.Conversation;
 import javax.faces.application.ViewHandler;
 import javax.faces.application.ViewHandlerWrapper;
@@ -54,6 +57,30 @@ public class ConversationAwareViewHandle
      * {@inheritDoc}
      */
     @Override
+    public String getRedirectURL(FacesContext context, String viewId,
+            Map<String, List<String>> parameters, boolean includeViewParams)
+    {
+        String url = delegate.getRedirectURL(context, viewId, parameters, includeViewParams);
+        int indexOfQuery = url.indexOf('?');
+        if (indexOfQuery > 0) 
+        {
+        	String queryString = url.substring(indexOfQuery);
+        	// If the query string already has a cid parameter, return url directly.
+        	if (queryString.contains("?cid=") || queryString.contains("&cid="))
+        		return url;
+        }
+        Conversation conversation = conversationManager.getConversationBeanReference();
+        if (conversation != null && !conversation.isTransient())
+        {
+            url = JSFUtil.getRedirectViewIdWithCid(url, conversation.getId());
+        }
+        return url;
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public ViewHandler getWrapped()
     {
         return delegate;