You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2013/09/03 21:42:49 UTC

svn commit: r1519808 - in /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/flow: cdi/DefaultCDIFacesFlowProvider.java impl/DefaultFacesFlowProvider.java

Author: lu4242
Date: Tue Sep  3 19:42:49 2013
New Revision: 1519808

URL: http://svn.apache.org/r1519808
Log:
MYFACES-3741 Implement CDI Flow Scope (fix case when return flow is being calculated)

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/flow/cdi/DefaultCDIFacesFlowProvider.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/flow/impl/DefaultFacesFlowProvider.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/flow/cdi/DefaultCDIFacesFlowProvider.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/flow/cdi/DefaultCDIFacesFlowProvider.java?rev=1519808&r1=1519807&r2=1519808&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/flow/cdi/DefaultCDIFacesFlowProvider.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/flow/cdi/DefaultCDIFacesFlowProvider.java Tue Sep  3 19:42:49 2013
@@ -40,6 +40,8 @@ public class DefaultCDIFacesFlowProvider
     
     private final static String CURRENT_FLOW_SCOPE_MAP = "oam.flow.SCOPE_MAP";
     
+    static final char SEPARATOR_CHAR = '.';
+    
     @Override
     public Iterator<Flow> getAnnotatedFlows(FacesContext facesContext)
     {
@@ -70,6 +72,9 @@ public class DefaultCDIFacesFlowProvider
             FlowScopeBeanHolder beanHolder = CDIUtils.lookup(beanManager, FlowScopeBeanHolder.class);
             beanHolder.createCurrentFlowScope(context);
         }
+        String mapKey = CURRENT_FLOW_SCOPE_MAP+SEPARATOR_CHAR+
+                flow.getDefiningDocumentId()+SEPARATOR_CHAR+flow.getId();
+        context.getAttributes().remove(mapKey);
     }
     
     @Override
@@ -81,6 +86,9 @@ public class DefaultCDIFacesFlowProvider
             FlowScopeBeanHolder beanHolder = CDIUtils.lookup(beanManager, FlowScopeBeanHolder.class);
             beanHolder.destroyCurrentFlowScope(context);
         }
+        String mapKey = CURRENT_FLOW_SCOPE_MAP+SEPARATOR_CHAR+
+                flow.getDefiningDocumentId()+SEPARATOR_CHAR+flow.getId();
+        context.getAttributes().remove(mapKey);
     }
     
     public Map<Object, Object> getCurrentFlowScope(FacesContext facesContext)
@@ -88,14 +96,16 @@ public class DefaultCDIFacesFlowProvider
         Flow flow = facesContext.getApplication().getFlowHandler().getCurrentFlow(facesContext);
         if (flow != null)
         {
+            String mapKey = CURRENT_FLOW_SCOPE_MAP+SEPARATOR_CHAR+
+                flow.getDefiningDocumentId()+SEPARATOR_CHAR+flow.getId();
             Map<Object, Object> map = (Map<Object, Object>) facesContext.getAttributes().get(
-                CURRENT_FLOW_SCOPE_MAP);
+                mapKey);
             if (map == null)
             {
                 map = new FlowScopeMap(getBeanManager(), flow.getClientWindowFlowId(
                     facesContext.getExternalContext().getClientWindow()));
                 
-                facesContext.getAttributes().put(CURRENT_FLOW_SCOPE_MAP, map);
+                facesContext.getAttributes().put(mapKey, map);
             }
             return map;
         }

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/flow/impl/DefaultFacesFlowProvider.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/flow/impl/DefaultFacesFlowProvider.java?rev=1519808&r1=1519807&r2=1519808&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/flow/impl/DefaultFacesFlowProvider.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/flow/impl/DefaultFacesFlowProvider.java Tue Sep  3 19:42:49 2013
@@ -54,7 +54,9 @@ public class DefaultFacesFlowProvider ex
     public void doAfterEnterFlow(FacesContext facesContext, Flow flow)
     {
         // Reset current flow scope map
-        facesContext.getAttributes().remove(CURRENT_FLOW_SCOPE_MAP);
+        String mapKey = CURRENT_FLOW_SCOPE_MAP+SEPARATOR_CHAR+
+            flow.getDefiningDocumentId()+SEPARATOR_CHAR+flow.getId();        
+        facesContext.getAttributes().remove(mapKey);
     }
 
     @Override
@@ -64,8 +66,10 @@ public class DefaultFacesFlowProvider ex
             facesContext.getExternalContext().getClientWindow());
         String fullToken = FLOW_SESSION_MAP_SUBKEY_PREFIX + SEPARATOR_CHAR + flowMapKey;
 
+        String mapKey = CURRENT_FLOW_SCOPE_MAP+SEPARATOR_CHAR+
+            flow.getDefiningDocumentId()+SEPARATOR_CHAR+flow.getId();
         Map<Object, Object> map = (Map<Object, Object>) facesContext.getAttributes().get(
-            CURRENT_FLOW_SCOPE_MAP);
+            mapKey);
         if (map != null)
         {
             map.clear();
@@ -83,18 +87,20 @@ public class DefaultFacesFlowProvider ex
         facesContext.getExternalContext().getSessionMap().remove(fullToken);
         
         // Reset current flow scope map
-        facesContext.getAttributes().remove(CURRENT_FLOW_SCOPE_MAP);
+        facesContext.getAttributes().remove(mapKey);
     }
 
     @Override
     public Map<Object, Object> getCurrentFlowScope(FacesContext facesContext)
     {
-        Map<Object, Object> map = (Map<Object, Object>) facesContext.getAttributes().get(
-            CURRENT_FLOW_SCOPE_MAP);
-        if (map == null)
+        Flow flow = facesContext.getApplication().getFlowHandler().getCurrentFlow(facesContext);
+        Map<Object, Object> map = null;
+        if (flow != null)
         {
-            Flow flow = facesContext.getApplication().getFlowHandler().getCurrentFlow(facesContext);
-            if (flow != null)
+            String mapKey = CURRENT_FLOW_SCOPE_MAP+SEPARATOR_CHAR+
+                flow.getDefiningDocumentId()+SEPARATOR_CHAR+flow.getId();
+            map = (Map<Object, Object>) facesContext.getAttributes().get(mapKey);
+            if (map == null)
             {
                 String flowMapKey = flow.getClientWindowFlowId(
                     facesContext.getExternalContext().getClientWindow());
@@ -103,7 +109,7 @@ public class DefaultFacesFlowProvider ex
                 //String fullToken = FLOW_SESSION_MAP_SUBKEY_PREFIX + SEPARATOR_CHAR + flowMapKey;
                 //map = createOrRestoreMap(facesContext, fullToken);
                 
-                facesContext.getAttributes().put(CURRENT_FLOW_SCOPE_MAP, map);
+                facesContext.getAttributes().put(mapKey, map);
             }
         }
         return map;