You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bs...@apache.org on 2010/03/05 01:41:47 UTC

svn commit: r919247 - /myfaces/trinidad/branches/trinidad-2.0.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java

Author: bsullivan
Date: Fri Mar  5 00:41:47 2010
New Revision: 919247

URL: http://svn.apache.org/viewvc?rev=919247&view=rev
Log:
Don't iterate in tree visiting when visiting children during state restoration

Modified:
    myfaces/trinidad/branches/trinidad-2.0.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java

Modified: myfaces/trinidad/branches/trinidad-2.0.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/trinidad-2.0.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java?rev=919247&r1=919246&r2=919247&view=diff
==============================================================================
--- myfaces/trinidad/branches/trinidad-2.0.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java (original)
+++ myfaces/trinidad/branches/trinidad-2.0.x/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java Fri Mar  5 00:41:47 2010
@@ -28,7 +28,6 @@
 import javax.faces.component.NamingContainer;
 import javax.faces.component.StateHelper;
 import javax.faces.component.UIComponent;
-import javax.faces.component.UINamingContainer;
 import javax.faces.context.FacesContext;
 import javax.faces.event.PhaseId;
 import javax.faces.render.Renderer;
@@ -352,9 +351,23 @@
     VisitContext visitContext,
     VisitCallback callback)
   {
+    // visit all of the chikldren of the component
+    return _visitAllChildren(visitContext, callback);
+  }
+ 
+  /**
+   * Default implementation of visiting children that visits all children without iterating
+   * @param visitContext the <code>VisitContext</code> for this visit
+   * @param callback the <code>VisitCallback</code> instance
+   * @return <code>true</code> if the visit is complete.
+   */
+  private boolean _visitAllChildren(
+    VisitContext visitContext,
+    VisitCallback callback)
+  {
     // visit the children of the component
     Iterator<UIComponent> kids = getFacetsAndChildren();
-
+  
     while(kids.hasNext())
     {
       // If any kid visit returns true, we are done.
@@ -366,7 +379,7 @@
     
     return false;
   }
-  
+   
   /**
    * Returns <code>true</code> if the components are being visited
    * for the purpose of encoding.
@@ -475,7 +488,15 @@
             
             try
             {
-              doneVisiting =  uixComponent.visitChildren(visitContext, callback);
+              // determine whether this visit should be iterating.  If it shouldn't, don't
+              // even call the protected hook.  We currently don't iterate during the
+              // restore view phase when we are visiting all of the components.
+              boolean noIterate = (visitContext.getIdsToVisit() == VisitContext.ALL_IDS) &&
+                                  (context.getCurrentPhaseId() == PhaseId.RESTORE_VIEW);
+                
+              doneVisiting =  (noIterate)
+                                ? uixComponent._visitAllChildren(visitContext, callback)
+                                : uixComponent.visitChildren(visitContext, callback);
             }
             finally
             {