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 2012/03/20 18:58:27 UTC

svn commit: r1303056 - /myfaces/core/branches/2.0.x/api/src/main/java/javax/faces/component/UIComponentBase.java

Author: lu4242
Date: Tue Mar 20 17:58:27 2012
New Revision: 1303056

URL: http://svn.apache.org/viewvc?rev=1303056&view=rev
Log:
MYFACES-3508 ClassCastException during RestoreView with MyFaces 2.1.7-SNAPSHOT

Modified:
    myfaces/core/branches/2.0.x/api/src/main/java/javax/faces/component/UIComponentBase.java

Modified: myfaces/core/branches/2.0.x/api/src/main/java/javax/faces/component/UIComponentBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/api/src/main/java/javax/faces/component/UIComponentBase.java?rev=1303056&r1=1303055&r2=1303056&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/api/src/main/java/javax/faces/component/UIComponentBase.java (original)
+++ myfaces/core/branches/2.0.x/api/src/main/java/javax/faces/component/UIComponentBase.java Tue Mar 20 17:58:27 2012
@@ -2016,19 +2016,6 @@ public abstract class UIComponentBase ex
         
         if (values.length == 9)
         {
-            //Full restore
-            restoreFullBehaviorsMap(context, values[2]);
-            restoreFullSystemEventListenerClassMap(context, values[3]);
-        }
-        else
-        {
-            //Delta restore
-            restoreDeltaBehaviorsMap(context, values[2]);
-            restoreDeltaSystemEventListenerClassMap(context, values[3]);
-        }
-        
-        if (values.length == 9)
-        {
             _id = (String) values[4];
             _clientId = (String) values[5];
             _markCreated = (String) values[6];
@@ -2040,6 +2027,22 @@ public abstract class UIComponentBase ex
             _rendererType = (String) values[4];
             _isRendererTypeSet = true;
         }
+
+        // rendererType needs to be restored before SystemEventListener,
+        // otherwise UIComponent.getCurrentComponent(context).getRenderer(context)
+        // will not work correctly
+        if (values.length == 9)
+        {
+            //Full restore
+            restoreFullBehaviorsMap(context, values[2]);
+            restoreFullSystemEventListenerClassMap(context, values[3]);
+        }
+        else
+        {
+            //Delta restore
+            restoreDeltaBehaviorsMap(context, values[2]);
+            restoreDeltaSystemEventListenerClassMap(context, values[3]);
+        }
     }
     
     private Object saveFacesListenersList(FacesContext facesContext)