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 2011/06/16 21:13:31 UTC

svn commit: r1136612 - /myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/resolver/FacesCompositeELResolver.java

Author: lu4242
Date: Thu Jun 16 19:13:30 2011
New Revision: 1136612

URL: http://svn.apache.org/viewvc?rev=1136612&view=rev
Log:
MYFACES-3166 org.apache.myfaces.el.VariableResolverImpl throws java.lang.IllegalStateException when it unsets the scope as null

Modified:
    myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/resolver/FacesCompositeELResolver.java

Modified: myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/resolver/FacesCompositeELResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/resolver/FacesCompositeELResolver.java?rev=1136612&r1=1136611&r2=1136612&view=diff
==============================================================================
--- myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/resolver/FacesCompositeELResolver.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/resolver/FacesCompositeELResolver.java Thu Jun 16 19:13:30 2011
@@ -74,14 +74,23 @@ public final class FacesCompositeELResol
             return null;
         }
         final Map<String, Object> requestMap = facesContext.getExternalContext().getRequestMap();
+        Scope prevScope = null;
         try
         {
+            prevScope = getScope(requestMap);
             setScope(requestMap);
             return super.getCommonPropertyType(context, base);
         }
         finally
         {
-            unsetScope(requestMap);
+            if(prevScope != null)
+            {
+                setScope(requestMap, prevScope);
+            }
+            else
+            {
+                unsetScope(requestMap);
+            }
         }
 
     }
@@ -95,15 +104,24 @@ public final class FacesCompositeELResol
             return null;
         }
         final Map<String, Object> requestMap = facesContext.getExternalContext().getRequestMap();
+        Scope prevScope = null;
         try
         {
+            prevScope = getScope(requestMap);
             setScope(requestMap);
             return super.getFeatureDescriptors(context, base);
 
         }
         finally
         {
-            unsetScope(requestMap);
+            if(prevScope != null)
+            {
+                setScope(requestMap, prevScope);
+            }
+            else
+            {
+                unsetScope(requestMap);
+            }
         }
     }
 
@@ -116,14 +134,23 @@ public final class FacesCompositeELResol
             return null;
         }
         final Map<String, Object> requestMap = facesContext.getExternalContext().getRequestMap();
+        Scope prevScope = null;
         try
         {
+            prevScope = getScope(requestMap);
             setScope(requestMap);
             return super.getType(context, base, property);
         }
         finally
         {
-            unsetScope(requestMap);
+            if(prevScope != null)
+            {
+                setScope(requestMap, prevScope);
+            }
+            else
+            {
+                unsetScope(requestMap);
+            }
         }
     }
 
@@ -136,14 +163,23 @@ public final class FacesCompositeELResol
             return null;
         }
         final Map<String, Object> requestMap = facesContext.getExternalContext().getRequestMap();
+        Scope prevScope = null;
         try
         {
+            prevScope = getScope(requestMap);
             setScope(requestMap);
             return super.getValue(context, base, property);
         }
         finally
         {
-            unsetScope(requestMap);
+            if(prevScope != null)
+            {
+                setScope(requestMap, prevScope);
+            }
+            else
+            {
+                unsetScope(requestMap);
+            }
         }
     }
 
@@ -156,14 +192,23 @@ public final class FacesCompositeELResol
             return false;
         }
         final Map<String, Object> requestMap = facesContext.getExternalContext().getRequestMap();
+        Scope prevScope = null;
         try
         {
+            prevScope = getScope(requestMap);
             setScope(requestMap);
             return super.isReadOnly(context, base, property);
         }
         finally
         {
-            unsetScope(requestMap);
+            if(prevScope != null)
+            {
+                setScope(requestMap, prevScope);
+            }
+            else
+            {
+                unsetScope(requestMap);
+            }
         }
     }
 
@@ -176,15 +221,24 @@ public final class FacesCompositeELResol
             return;
         }
         final Map<String, Object> requestMap = facesContext.getExternalContext().getRequestMap();
+        Scope prevScope = null;
         try
         {
+            prevScope = getScope(requestMap);
             setScope(requestMap);
             super.setValue(context, base, property, val);
 
         }
         finally
         {
-            unsetScope(requestMap);
+            if(prevScope != null)
+            {
+                setScope(requestMap, prevScope);
+            }
+            else
+            {
+                unsetScope(requestMap);
+            }
         }
     }
 
@@ -192,6 +246,16 @@ public final class FacesCompositeELResol
     {
         requestMap.put(SCOPE, _scope);
     }
+    
+    private Scope getScope(final Map<String, Object> requestMap)
+    {
+        return (Scope) requestMap.get(Scope.class.getName());
+    }
+
+    private void setScope(final Map<String, Object> requestMap, Scope prevScope)
+    {
+        requestMap.put(Scope.class.getName(), prevScope);
+    }
 
     private static void unsetScope(final Map<String, Object> requestMap)
     {