You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2010/07/16 20:12:07 UTC
svn commit: r964893 - in /myfaces/extensions/cdi/trunk/jee-modules:
jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/config/
jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/request/
jsf-mod...
Author: gpetracek
Date: Fri Jul 16 18:12:06 2010
New Revision: 964893
URL: http://svn.apache.org/viewvc?rev=964893&view=rev
Log:
EXTCDI-1, EXTCDI-2 and EXTCDI-3 RedirectHandler
Added:
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/request/DefaultRedirectHandler.java
- copied, changed from r964799, myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/request/DefaultRedirectProcessor.java
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/RedirectHandler.java
- copied, changed from r964799, myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/RedirectProcessor.java
myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/request/DefaultRedirectHandler.java
- copied, changed from r964799, myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/scope/conversation/DefaultRedirectProcessor.java
Removed:
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/request/DefaultRedirectProcessor.java
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/RedirectProcessor.java
myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/scope/conversation/DefaultRedirectProcessor.java
Modified:
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/config/DefaultWindowContextConfig.java
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultWindowContextManager.java
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/RedirectedConversationAwareExternalContext.java
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/JsfAwareWindowContextConfig.java
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/util/ConversationUtils.java
myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/scope/conversation/RedirectedConversationAwareExternalContext.java
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/config/DefaultWindowContextConfig.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/config/DefaultWindowContextConfig.java?rev=964893&r1=964892&r2=964893&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/config/DefaultWindowContextConfig.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/config/DefaultWindowContextConfig.java Fri Jul 16 18:12:06 2010
@@ -22,8 +22,8 @@ import org.apache.myfaces.extensions.cdi
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowContextConfig;
import static org.apache.myfaces.extensions.cdi.javaee.jsf.api.ConfigParameter.*;
import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.JsfAwareWindowContextConfig;
-import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectProcessor;
-import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.request.DefaultRedirectProcessor;
+import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectHandler;
+import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.request.DefaultRedirectHandler;
import javax.enterprise.context.Dependent;
import javax.enterprise.context.ApplicationScoped;
@@ -178,8 +178,8 @@ public class DefaultWindowContextConfig
setAttribute(GROUPED_CONVERSATION_TIMEOUT, Integer.parseInt(timeoutString));
}
- public RedirectProcessor getRedirectProcessor()
+ public RedirectHandler getRedirectHandler()
{
- return new DefaultRedirectProcessor();
+ return new DefaultRedirectHandler();
}
}
\ No newline at end of file
Copied: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/request/DefaultRedirectHandler.java (from r964799, myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/request/DefaultRedirectProcessor.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/request/DefaultRedirectHandler.java?p2=myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/request/DefaultRedirectHandler.java&p1=myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/request/DefaultRedirectProcessor.java&r1=964799&r2=964893&rev=964893&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/request/DefaultRedirectProcessor.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/request/DefaultRedirectHandler.java Fri Jul 16 18:12:06 2010
@@ -18,7 +18,7 @@
*/
package org.apache.myfaces.extensions.cdi.javaee.jsf.impl.request;
-import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectProcessor;
+import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectHandler;
import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.UUID_ID_KEY;
import javax.faces.context.ExternalContext;
@@ -27,17 +27,22 @@ import java.io.IOException;
/**
* @author Gerhard Petracek
*/
-public class DefaultRedirectProcessor implements RedirectProcessor
+public class DefaultRedirectHandler implements RedirectHandler
{
- public void redirect(ExternalContext externalContext, String url, String uniqueRequestId) throws IOException
+ public void sendRedirect(ExternalContext externalContext, String url, String requestIdKey) throws IOException
{
- if (uniqueRequestId != null)
+ if (requestIdKey != null)
{
- url = url + "?" + UUID_ID_KEY + "=" + uniqueRequestId;
+ url = url + "?" + UUID_ID_KEY + "=" + requestIdKey;
url = externalContext.encodeActionURL(url);
}
externalContext.redirect(url);
}
+
+ public String restoreRequestIdKey(ExternalContext externalContext)
+ {
+ return externalContext.getRequestParameterMap().get(UUID_ID_KEY);
+ }
}
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultWindowContextManager.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultWindowContextManager.java?rev=964893&r1=964892&r2=964893&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultWindowContextManager.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultWindowContextManager.java Fri Jul 16 18:12:06 2010
@@ -31,6 +31,8 @@ import org.apache.myfaces.extensions.cdi
import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.resolveWindowContextId;
import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.restoreInformationOfRequest;
import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.EditableWindowContext;
+import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectHandler;
+import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.JsfAwareWindowContextConfig;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
@@ -74,17 +76,24 @@ public class DefaultWindowContextManager
private WindowContextConfig windowContextConfig;
+ private RedirectHandler redirectHandler;
+
@PostConstruct
protected void init()
{
- windowContextConfig = this.configResolver.resolve(WindowContextConfig.class);
+ this.windowContextConfig = this.configResolver.resolve(WindowContextConfig.class);
+ this.redirectHandler = configResolver.resolve(JsfAwareWindowContextConfig.class).getRedirectHandler();
}
//don't change/optimize this observer!!!
protected void cleanup(@Observes @AfterPhase(PhaseId.RESTORE_VIEW) PhaseEvent phaseEvent,
- RequestTypeResolver requestTypeResolver)
+ RequestTypeResolver requestTypeResolver,
+ ConfigResolver configResolver)
{
- processConversationAwareRedirectsAndForwards(phaseEvent, requestTypeResolver);
+ processConversationAwareRedirectsAndForwards(phaseEvent,
+ requestTypeResolver,
+ configResolver.resolve(
+ JsfAwareWindowContextConfig.class).getRedirectHandler());
//for performance reasons + cleanup at the beginning of the request (check timeout,...)
//+ we aren't allowed to cleanup in case of redirects
@@ -98,12 +107,12 @@ public class DefaultWindowContextManager
}
private void processConversationAwareRedirectsAndForwards(
- PhaseEvent phaseEvent, RequestTypeResolver requestTypeResolver)
+ PhaseEvent phaseEvent, RequestTypeResolver requestTypeResolver, RedirectHandler redirectHandler)
{
//restore view-id in case of a get request - we need it esp. for redirects
if (!requestTypeResolver.isPostRequest())
{
- restoreInformationOfRequest(phaseEvent.getFacesContext());
+ restoreInformationOfRequest(phaseEvent.getFacesContext(), redirectHandler);
}
}
@@ -177,7 +186,8 @@ public class DefaultWindowContextManager
//TODO improve performance
public WindowContext getCurrentWindowContext()
{
- Long windowContextId = resolveWindowContextId(this.windowContextConfig.isGetRequestParameterSupported());
+ Long windowContextId = resolveWindowContextId(this.windowContextConfig.isGetRequestParameterSupported(),
+ this.redirectHandler);
if (windowContextId == null)
{
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/RedirectedConversationAwareExternalContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/RedirectedConversationAwareExternalContext.java?rev=964893&r1=964892&r2=964893&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/RedirectedConversationAwareExternalContext.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/RedirectedConversationAwareExternalContext.java Fri Jul 16 18:12:06 2010
@@ -19,7 +19,7 @@
package org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation;
import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.*;
-import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectProcessor;
+import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectHandler;
import javax.faces.context.ExternalContext;
import java.io.IOException;
@@ -40,7 +40,7 @@ public class RedirectedConversationAware
{
private ExternalContext wrapped;
- private static RedirectProcessor redirectProcessor;
+ private static RedirectHandler redirectHandler;
public RedirectedConversationAwareExternalContext(ExternalContext wrapped)
{
@@ -259,14 +259,14 @@ public class RedirectedConversationAware
throws IOException
{
lazyInit();
- sendRedirect(this.wrapped, url, redirectProcessor);
+ sendRedirect(this.wrapped, url, redirectHandler);
}
private synchronized void lazyInit()
{
- if(redirectProcessor == null)
+ if(redirectHandler == null)
{
- redirectProcessor = getRedirectProcessor();
+ redirectHandler = getRedirectHandler();
}
}
}
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/JsfAwareWindowContextConfig.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/JsfAwareWindowContextConfig.java?rev=964893&r1=964892&r2=964893&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/JsfAwareWindowContextConfig.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/JsfAwareWindowContextConfig.java Fri Jul 16 18:12:06 2010
@@ -25,5 +25,5 @@ import org.apache.myfaces.extensions.cdi
*/
public abstract class JsfAwareWindowContextConfig extends WindowContextConfig
{
- public abstract RedirectProcessor getRedirectProcessor();
+ public abstract RedirectHandler getRedirectHandler();
}
Copied: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/RedirectHandler.java (from r964799, myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/RedirectProcessor.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/RedirectHandler.java?p2=myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/RedirectHandler.java&p1=myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/RedirectProcessor.java&r1=964799&r2=964893&rev=964893&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/RedirectProcessor.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/spi/RedirectHandler.java Fri Jul 16 18:12:06 2010
@@ -24,7 +24,9 @@ import java.io.IOException;
/**
* @author Gerhard Petracek
*/
-public interface RedirectProcessor
+public interface RedirectHandler
{
- void redirect(ExternalContext externalContext, String url, String uniqueRequestId) throws IOException;
+ void sendRedirect(ExternalContext externalContext, String url, String requestIdKey) throws IOException;
+
+ String restoreRequestIdKey(ExternalContext externalContext);
}
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/util/ConversationUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/util/ConversationUtils.java?rev=964893&r1=964892&r2=964893&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/util/ConversationUtils.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/util/ConversationUtils.java Fri Jul 16 18:12:06 2010
@@ -29,7 +29,7 @@ import org.apache.myfaces.extensions.cdi
import org.apache.myfaces.extensions.cdi.core.impl.utils.CodiUtils;
import org.apache.myfaces.extensions.cdi.javaee.jsf.api.qualifier.Jsf;
import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.WindowContextIdHolderComponent;
-import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectProcessor;
+import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectHandler;
import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.JsfAwareWindowContextConfig;
import javax.enterprise.inject.spi.Bean;
@@ -155,14 +155,24 @@ public class ConversationUtils
}
//TODO
- public static Long resolveWindowContextId(boolean requestParameterSupported)
+ public static Long resolveWindowContextId(boolean requestParameterSupported, RedirectHandler redirectHandler)
{
FacesContext facesContext = FacesContext.getCurrentInstance();
Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
Map<String, Object> requestMap = facesContext.getExternalContext().getRequestMap();
- String uuidKey = requestParameterMap.get(UUID_ID_KEY);
+ String uuidKey = null;
+
+ if(redirectHandler != null)
+ {
+ uuidKey = redirectHandler.restoreRequestIdKey(facesContext.getExternalContext());
+ }
+
+ if(uuidKey == null)
+ {
+ uuidKey = requestParameterMap.get(UUID_ID_KEY);
+ }
//try to restore {@link UuidEntry}
if(uuidKey != null)
@@ -213,6 +223,9 @@ public class ConversationUtils
if (windowContextIdHolder != null)
{
+ requestMap.put(
+ WindowContextManager.WINDOW_CONTEXT_ID_PARAMETER_KEY, windowContextIdHolder.getWindowContextId());
+
//TODO cache for request
return windowContextIdHolder.getWindowContextId();
}
@@ -252,7 +265,7 @@ public class ConversationUtils
}
//TODO
- public static void restoreInformationOfRequest(FacesContext facesContext)
+ public static void restoreInformationOfRequest(FacesContext facesContext, RedirectHandler redirectHandler)
{
Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
Map<String, Object> requstMap = facesContext.getExternalContext().getRequestMap();
@@ -260,7 +273,17 @@ public class ConversationUtils
requstMap.put(NEW_VIEW_ID_KEY, facesContext.getViewRoot().getViewId());
- String uuidKey = requestParameterMap.get(UUID_ID_KEY);
+ String uuidKey = null;
+
+ if(redirectHandler != null)
+ {
+ uuidKey = redirectHandler.restoreRequestIdKey(facesContext.getExternalContext());
+ }
+
+ if(uuidKey == null)
+ {
+ uuidKey = requestParameterMap.get(UUID_ID_KEY);
+ }
if(uuidKey != null)
{
@@ -350,11 +373,11 @@ public class ConversationUtils
public static void sendRedirect(ExternalContext externalContext,
String url,
- RedirectProcessor redirectProcessor) throws IOException
+ RedirectHandler redirectHandler) throws IOException
{
- if(redirectProcessor != null)
+ if(redirectHandler != null)
{
- Long windowContextId = resolveWindowContextId();
+ Long windowContextId = resolveWindowContextId(redirectHandler);
String uniqueRequestId = null;
if (windowContextId != null)
@@ -366,7 +389,7 @@ public class ConversationUtils
uniqueRequestId = uuidEntry.getUuid();
}
- redirectProcessor.redirect(externalContext, url, uniqueRequestId);
+ redirectHandler.sendRedirect(externalContext, url, uniqueRequestId);
}
else
{
@@ -375,13 +398,14 @@ public class ConversationUtils
}
}
- private static Long resolveWindowContextId()
+ private static Long resolveWindowContextId(RedirectHandler redirectHandler)
{
return ConversationUtils.resolveWindowContextId(false
- /*TODO log warning if request parameter is disabled - we have to use false here*/);
+ /*TODO log warning if request parameter is disabled - we have to use false here*/,
+ redirectHandler);
}
- public static RedirectProcessor getRedirectProcessor()
+ public static RedirectHandler getRedirectHandler()
{
Set<Bean<?>> configResolvers = getInstance().getBeanManager().getBeans(ConfigResolver.class);
@@ -389,6 +413,6 @@ public class ConversationUtils
ConfigResolver configResolver = (ConfigResolver) CodiUtils
.getOrCreateScopedInstanceOfBean(configResolvers.iterator().next());
- return configResolver.resolve(JsfAwareWindowContextConfig.class).getRedirectProcessor();
+ return configResolver.resolve(JsfAwareWindowContextConfig.class).getRedirectHandler();
}
}
Copied: myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/request/DefaultRedirectHandler.java (from r964799, myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/scope/conversation/DefaultRedirectProcessor.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/request/DefaultRedirectHandler.java?p2=myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/request/DefaultRedirectHandler.java&p1=myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/scope/conversation/DefaultRedirectProcessor.java&r1=964799&r2=964893&rev=964893&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/scope/conversation/DefaultRedirectProcessor.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/request/DefaultRedirectHandler.java Fri Jul 16 18:12:06 2010
@@ -16,10 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.extensions.cdi.javaee.jsf2.impl.scope.conversation;
+package org.apache.myfaces.extensions.cdi.javaee.jsf2.impl.request;
-import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectProcessor;
import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.UUID_ID_KEY;
+import static org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils.tryToLoadClassForName;
import javax.faces.context.ExternalContext;
import java.io.IOException;
@@ -27,18 +27,43 @@ import java.io.IOException;
/**
* @author Gerhard Petracek
*/
-public class DefaultRedirectProcessor implements RedirectProcessor
+public class DefaultRedirectHandler extends
+ org.apache.myfaces.extensions.cdi.javaee.jsf.impl.request.DefaultRedirectHandler
{
- public void redirect(ExternalContext externalContext, String url, String uniqueRequestId) throws IOException
+ //workaround for myfaces core2
+ private final boolean useFallback;
+
+ public DefaultRedirectHandler()
{
- //TODO try to use special jsf 2.0 api's
- if (uniqueRequestId != null)
- {
- url = url + "?" + UUID_ID_KEY + "=" + uniqueRequestId;
+ this.useFallback = tryToLoadClassForName("org.apache.myfaces.context.FacesContextFactoryImpl") != null;
+ }
- url = externalContext.encodeActionURL(url);
+ @Override
+ public void sendRedirect(ExternalContext externalContext, String url, String requestIdKey) throws IOException
+ {
+ if(this.useFallback)
+ {
+ super.sendRedirect(externalContext, url, requestIdKey);
+ return;
+ }
+
+ if (requestIdKey != null)
+ {
+ externalContext.getFlash().putNow(UUID_ID_KEY, requestIdKey);
+ externalContext.getFlash().keep(UUID_ID_KEY);
}
externalContext.redirect(url);
}
+
+ @Override
+ public String restoreRequestIdKey(ExternalContext externalContext)
+ {
+ if(this.useFallback)
+ {
+ return super.restoreRequestIdKey(externalContext);
+ }
+
+ return (String)externalContext.getFlash().remove(UUID_ID_KEY);
+ }
}
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/scope/conversation/RedirectedConversationAwareExternalContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/scope/conversation/RedirectedConversationAwareExternalContext.java?rev=964893&r1=964892&r2=964893&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/scope/conversation/RedirectedConversationAwareExternalContext.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf2/impl/scope/conversation/RedirectedConversationAwareExternalContext.java Fri Jul 16 18:12:06 2010
@@ -19,7 +19,7 @@
package org.apache.myfaces.extensions.cdi.javaee.jsf2.impl.scope.conversation;
import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.*;
-import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectProcessor;
+import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.RedirectHandler;
import javax.faces.context.ExternalContext;
import javax.faces.context.ExternalContextWrapper;
@@ -32,7 +32,7 @@ public class RedirectedConversationAware
{
private final ExternalContext wrapped;
- private RedirectProcessor redirectProcessor;
+ private RedirectHandler redirectHandler;
public RedirectedConversationAwareExternalContext(ExternalContext wrapped)
{
@@ -49,14 +49,14 @@ public class RedirectedConversationAware
throws IOException
{
lazyInit();
- sendRedirect(this.wrapped, url, this.redirectProcessor);
+ sendRedirect(this.wrapped, url, this.redirectHandler);
}
private synchronized void lazyInit()
{
- if(this.redirectProcessor == null)
+ if(this.redirectHandler == null)
{
- this.redirectProcessor = getRedirectProcessor();
+ this.redirectHandler = getRedirectHandler();
}
}
}