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/15 01:01:36 UTC
svn commit: r964247 - in /myfaces/extensions/cdi/trunk:
jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/
jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/j...
Author: gpetracek
Date: Wed Jul 14 23:01:35 2010
New Revision: 964247
URL: http://svn.apache.org/viewvc?rev=964247&view=rev
Log:
EXTCDI-1, EXTCDI-2 and EXTCDI-3 refactored redirects
Added:
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/UuidEntry.java
Modified:
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/AccessScopeAwareNavigationHandler.java
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/BeanStorage.java
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversation.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/JsfWindowContext.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/util/ConversationUtils.java
myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultCompositeMessageHandler.java
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/AccessScopeAwareNavigationHandler.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/AccessScopeAwareNavigationHandler.java?rev=964247&r1=964246&r2=964247&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/AccessScopeAwareNavigationHandler.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/AccessScopeAwareNavigationHandler.java Wed Jul 14 23:01:35 2010
@@ -19,19 +19,17 @@
package org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation;
import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.request.CodiFacesContextFactory.wrapFacesContext;
+import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.storeCurrentViewIdAsOldViewId;
+import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.storeCurrentViewIdAsNewViewId;
import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
-import java.util.Map;
/**
* @author Gerhard Petracek
*/
public class AccessScopeAwareNavigationHandler extends NavigationHandler
{
- public static final String OLD_VIEW_ID_KEY = "oldViewId";
- public static final String NEW_VIEW_ID_KEY = "newViewId";
-
private NavigationHandler navigationHandler;
public AccessScopeAwareNavigationHandler(NavigationHandler navigationHandler)
@@ -43,16 +41,11 @@ public class AccessScopeAwareNavigationH
{
//TODO check myfaces core - issue? facesContext is not wrapped here
facesContext = wrapFacesContext(facesContext);
- String oldViewId = facesContext.getViewRoot().getViewId();
- Map requestMap = facesContext.getExternalContext().getRequestMap();
- requestMap.put(OLD_VIEW_ID_KEY, oldViewId); //don't change the order
+ storeCurrentViewIdAsOldViewId(facesContext); //don't change the order
this.navigationHandler.handleNavigation(facesContext, s, s1);
- String newViewId = facesContext.getViewRoot().getViewId();
-
-
- requestMap.put(NEW_VIEW_ID_KEY, newViewId);
+ storeCurrentViewIdAsNewViewId(facesContext);
}
}
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/BeanStorage.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/BeanStorage.java?rev=964247&r1=964246&r2=964247&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/BeanStorage.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/BeanStorage.java Wed Jul 14 23:01:35 2010
@@ -37,7 +37,7 @@ class BeanStorage implements Serializabl
private transient BeanManager beanManager;
- private final Map<Class, BeanEntry<Serializable>> beanMap = new ConcurrentHashMap<Class, BeanEntry<Serializable>>();
+ private Map<Class, BeanEntry<Serializable>> beanMap = new ConcurrentHashMap<Class, BeanEntry<Serializable>>();
public BeanEntry getBean(Class beanClass)
{
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversation.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/DefaultConversation.java?rev=964247&r1=964246&r2=964247&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversation.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversation.java Wed Jul 14 23:01:35 2010
@@ -23,11 +23,12 @@ import org.apache.myfaces.extensions.cdi
import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.BeanEntry;
import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.EditableConversation;
import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.ConversationKey;
+import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.getOldViewIdFromRequest;
+import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.getNewViewIdFromRequest;
import javax.faces.context.FacesContext;
import java.io.Serializable;
import java.util.Date;
-import java.util.Map;
/**
* @author Gerhard Petracek
@@ -138,20 +139,25 @@ public class DefaultConversation impleme
if (this.lastViewId != null)
{
- Map requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
- String fromViewId = (String) requestMap.get(AccessScopeAwareNavigationHandler.OLD_VIEW_ID_KEY);
-
- if (fromViewId != null && fromViewId.endsWith(this.lastViewId))
- {
- this.lastViewId = (String) requestMap.get(AccessScopeAwareNavigationHandler.NEW_VIEW_ID_KEY);
- }
- return !this.lastViewId.equals(getCurrentViewId());
+ return isInvalidConversationForCurrentView();
}
return this.lastAccess == null ||
(this.lastAccess.getTime() + this.conversationTimeoutInMs) < System.currentTimeMillis();
}
+ private boolean isInvalidConversationForCurrentView()
+ {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ String fromViewId = getOldViewIdFromRequest(facesContext);
+
+ if (fromViewId != null && fromViewId.endsWith(this.lastViewId))
+ {
+ this.lastViewId = getNewViewIdFromRequest(facesContext);
+ }
+ return !this.lastViewId.equals(getCurrentViewId());
+ }
+
private void touchConversation(boolean updateViewId)
{
this.active = true;
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=964247&r1=964246&r2=964247&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 Wed Jul 14 23:01:35 2010
@@ -29,6 +29,7 @@ import org.apache.myfaces.extensions.cdi
import org.apache.myfaces.extensions.cdi.javaee.jsf.api.request.RequestTypeResolver;
import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils;
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.DeactivationAwareWindowContext;
import javax.annotation.PostConstruct;
@@ -102,18 +103,7 @@ public class DefaultWindowContextManager
//restore view-id in case of a get request - we need it esp. for redirects
if (!requestTypeResolver.isPostRequest())
{
- phaseEvent.getFacesContext().getExternalContext().getRequestMap()
- .put(AccessScopeAwareNavigationHandler.NEW_VIEW_ID_KEY,
- phaseEvent.getFacesContext().getViewRoot().getViewId());
-
- String oldViewId = phaseEvent.getFacesContext().getExternalContext().getRequestParameterMap()
- .get(AccessScopeAwareNavigationHandler.OLD_VIEW_ID_KEY);
-
- if (oldViewId != null)
- {
- phaseEvent.getFacesContext().getExternalContext().getRequestMap()
- .put(AccessScopeAwareNavigationHandler.OLD_VIEW_ID_KEY, oldViewId);
- }
+ restoreInformationOfRequest(phaseEvent.getFacesContext());
}
}
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/JsfWindowContext.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/JsfWindowContext.java?rev=964247&r1=964246&r2=964247&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/JsfWindowContext.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/JsfWindowContext.java Wed Jul 14 23:01:35 2010
@@ -46,7 +46,7 @@ public class JsfWindowContext implements
private final WindowContextConfig config;
- private final Map<ConversationKey, Conversation> groupedConversations
+ private Map<ConversationKey, Conversation> groupedConversations
= new ConcurrentHashMap<ConversationKey, Conversation>();
public JsfWindowContext(Long windowContextId, WindowContextConfig config)
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=964247&r1=964246&r2=964247&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 Wed Jul 14 23:01:35 2010
@@ -18,8 +18,10 @@
*/
package org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation;
-import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.WindowContextManager;
import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils;
+import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.storeUuidEntry;
+import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.getOldViewIdFromRequest;
+import static org.apache.myfaces.extensions.cdi.javaee.jsf.impl.util.ConversationUtils.UUID_ID_KEY;
import javax.faces.context.ExternalContext;
import java.io.IOException;
@@ -266,9 +268,10 @@ public class RedirectedConversationAware
if (windowContextId != null)
{
- url = url + "?" + WindowContextManager.WINDOW_CONTEXT_ID_PARAMETER_KEY + "=" + windowContextId
- + "&" + AccessScopeAwareNavigationHandler.OLD_VIEW_ID_KEY + "=" +
- getRequestMap().get(AccessScopeAwareNavigationHandler.OLD_VIEW_ID_KEY);
+ UuidEntry uuidEntry = storeUuidEntry(
+ getSessionMap(), windowContextId, getOldViewIdFromRequest(getRequestMap()));
+
+ url = url + "?" + UUID_ID_KEY + "=" + uuidEntry.getUuid();
url = this.wrapped.encodeActionURL(url);
}
Added: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/UuidEntry.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/UuidEntry.java?rev=964247&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/UuidEntry.java (added)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/UuidEntry.java Wed Jul 14 23:01:35 2010
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation;
+
+import java.util.UUID;
+
+/**
+ * TODO
+ * @author Gerhard Petracek
+ */
+public class UuidEntry
+{
+ private final String uuid;
+ private final long windowContextId;
+ private final String viewId;
+
+ public UuidEntry(long windowContextId, String viewId)
+ {
+ this.uuid = UUID.randomUUID().toString().replace("-", "");
+ this.viewId = viewId;
+ this.windowContextId = windowContextId;
+ }
+
+ public String getUuid()
+ {
+ return uuid;
+ }
+
+ public long getWindowContextId()
+ {
+ return windowContextId;
+ }
+
+ public String getViewId()
+ {
+ return viewId;
+ }
+}
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=964247&r1=964246&r2=964247&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 Wed Jul 14 23:01:35 2010
@@ -26,6 +26,7 @@ import org.apache.myfaces.extensions.cdi
import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.WindowContextManager;
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.UuidEntry;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
@@ -34,17 +35,25 @@ import javax.faces.context.FacesContext;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
import java.lang.annotation.Annotation;
/**
+ * internal! utils
* @author Gerhard Petracek
*/
public class ConversationUtils
{
+ public static final String UUID_ID_KEY = "uuid";
+
private static final ViewAccessScoped VIEW_ACCESS_SCOPED = DefaultAnnotation.of(ViewAccessScoped.class);
private static final Jsf JSF_QUALIFIER = DefaultAnnotation.of(Jsf.class);
+ private static final String OLD_VIEW_ID_KEY = "oldViewId";
+ private static final String NEW_VIEW_ID_KEY = "newViewId";
+
/**
* @return the descriptor of a custom
* {@link org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.WindowContextManager}
@@ -140,18 +149,33 @@ public class ConversationUtils
return beanManager.getBeans(WindowContextManager.class);
}
+ //TODO
public static Long resolveWindowContextId(boolean requestParameterSupported)
{
FacesContext facesContext = FacesContext.getCurrentInstance();
- Map requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
+ Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
+ Map<String, Object> requestMap = facesContext.getExternalContext().getRequestMap();
+
+ String uuidKey = requestParameterMap.get(UUID_ID_KEY);
+
+ //try to restore {@link UuidEntry}
+ if(uuidKey != null)
+ {
+ UuidEntry uuidEntry = getUuidEntryMap(facesContext.getExternalContext().getSessionMap()).remove(uuidKey);
+ if (uuidEntry != null)
+ {
+ restoreInformationFromUuidEntry(requestMap, uuidEntry);
+ }
+ }
+
+ //try to restore get-request parameter
String idViaGetRequest = null;
if (requestParameterSupported)
{
- idViaGetRequest = (String) requestParameterMap
- .get(WindowContextManager.WINDOW_CONTEXT_ID_PARAMETER_KEY);
+ idViaGetRequest = requestParameterMap.get(WindowContextManager.WINDOW_CONTEXT_ID_PARAMETER_KEY);
}
Long id = null;
@@ -167,11 +191,11 @@ public class ConversationUtils
}
}
+ //TODO test if we can move it to the beginning
+ //try to find id in request map
if (id == null)
{
- Map requestMap = facesContext.getExternalContext().getRequestMap();
-
- id = (Long) requestMap.get(WindowContextManager.WINDOW_CONTEXT_ID_PARAMETER_KEY);
+ id = tryToFindWindowIdInRequestMap(requestMap);
}
if (id != null)
@@ -179,6 +203,7 @@ public class ConversationUtils
return id;
}
+ //try to restore id from component
WindowContextIdHolderComponent windowContextIdHolder = getWindowContextIdHolderComponent(facesContext);
if (windowContextIdHolder != null)
@@ -189,6 +214,95 @@ public class ConversationUtils
return null;
}
+ private static void restoreInformationFromUuidEntry(Map<String, Object> requestMap, UuidEntry uuidEntry)
+ {
+ requestMap.put(OLD_VIEW_ID_KEY, uuidEntry.getViewId());
+
+ requestMap.put(WindowContextManager.WINDOW_CONTEXT_ID_PARAMETER_KEY, uuidEntry.getWindowContextId());
+ }
+
+ private static Long tryToFindWindowIdInRequestMap(Map<String, Object> requestMap)
+ {
+ return (Long) requestMap.get(WindowContextManager.WINDOW_CONTEXT_ID_PARAMETER_KEY);
+ }
+
+ public static UuidEntry storeUuidEntry(Map<String, Object> sessionMap, Long windowContextId, String oldViewId)
+ {
+ UuidEntry uuidEntry = new UuidEntry(windowContextId, oldViewId);
+ getUuidEntryMap(sessionMap).put(uuidEntry.getUuid(), uuidEntry);
+ return uuidEntry;
+ }
+
+ private static Map<String, UuidEntry> getUuidEntryMap(Map<String, Object> sessionMap)
+ {
+ String key = ConversationUtils.class.getName() + ":uuid:map";
+ if(!sessionMap.containsKey(key))
+ {
+ sessionMap.put(key, new ConcurrentHashMap<String, UuidEntry>());
+ }
+
+ //noinspection unchecked
+ return (Map<String, UuidEntry>)sessionMap.get(key);
+ }
+
+ //TODO
+ public static void restoreInformationOfRequest(FacesContext facesContext)
+ {
+ Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
+ Map<String, Object> requstMap = facesContext.getExternalContext().getRequestMap();
+ Map<String, Object> sessionMap = facesContext.getExternalContext().getSessionMap();
+
+ requstMap.put(NEW_VIEW_ID_KEY, facesContext.getViewRoot().getViewId());
+
+ String uuidKey = requestParameterMap.get(UUID_ID_KEY);
+
+ if(uuidKey != null)
+ {
+ UuidEntry uuidEntry = getUuidEntryMap(sessionMap).remove(uuidKey);
+
+ if (uuidEntry != null)
+ {
+ requstMap.put(OLD_VIEW_ID_KEY, uuidEntry.getViewId());
+
+ requstMap.put(WindowContextManager.WINDOW_CONTEXT_ID_PARAMETER_KEY, uuidEntry.getWindowContextId());
+ }
+ }
+
+ String oldViewId = requestParameterMap.get(OLD_VIEW_ID_KEY);
+
+ if (oldViewId != null)
+ {
+ requstMap.put(OLD_VIEW_ID_KEY, oldViewId);
+ }
+ }
+
+ public static void storeCurrentViewIdAsOldViewId(FacesContext facesContext)
+ {
+ String oldViewId = facesContext.getViewRoot().getViewId();
+ facesContext.getExternalContext().getRequestMap().put(OLD_VIEW_ID_KEY, oldViewId);
+ }
+
+ public static void storeCurrentViewIdAsNewViewId(FacesContext facesContext)
+ {
+ String newViewId = facesContext.getViewRoot().getViewId();
+ facesContext.getExternalContext().getRequestMap().put(NEW_VIEW_ID_KEY, newViewId);
+ }
+
+ public static String getOldViewIdFromRequest(FacesContext facesContext)
+ {
+ return getOldViewIdFromRequest(facesContext.getExternalContext().getRequestMap());
+ }
+
+ public static String getOldViewIdFromRequest(Map<String, Object> requstMap)
+ {
+ return (String)requstMap.get(OLD_VIEW_ID_KEY);
+ }
+
+ public static String getNewViewIdFromRequest(FacesContext facesContext)
+ {
+ return (String)facesContext.getExternalContext().getRequestMap().get(NEW_VIEW_ID_KEY);
+ }
+
public static WindowContextIdHolderComponent getWindowContextIdHolderComponent(FacesContext facesContext)
{
List<UIComponent> uiComponents = facesContext.getViewRoot().getChildren();
Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultCompositeMessageHandler.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultCompositeMessageHandler.java?rev=964247&r1=964246&r2=964247&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultCompositeMessageHandler.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultCompositeMessageHandler.java Wed Jul 14 23:01:35 2010
@@ -38,7 +38,7 @@ class DefaultCompositeMessageHandler imp
{
private static final long serialVersionUID = 3553885372006874180L;
- private final List<MessageHandler> messageHandlers = new ArrayList<MessageHandler>();
+ private List<MessageHandler> messageHandlers = new ArrayList<MessageHandler>();
DefaultCompositeMessageHandler(Iterable<MessageHandler> messageHandlerIterable)
{