You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by an...@apache.org on 2011/02/14 16:31:34 UTC

svn commit: r1070523 - /myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java

Author: andys
Date: Mon Feb 14 15:31:33 2011
New Revision: 1070523

URL: http://svn.apache.org/viewvc?rev=1070523&view=rev
Log:
TRINIDAD-2030 Honor SKIP_ITERATION FacesContext property

UIXComponent.visitChildren() now checks for the "javax.faces.visit.SKIP_ITERATION" property instead of for PhaseId.RESTORE_VIEW when deciding whether or not to iterate.

Modified:
    myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java

Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java?rev=1070523&r1=1070522&r2=1070523&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponent.java Mon Feb 14 15:31:33 2011
@@ -22,6 +22,7 @@ import java.io.IOException;
 
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.Map;
 
 import javax.el.MethodExpression;
 
@@ -654,12 +655,8 @@ abstract public class UIXComponent exten
     try
     {
       // 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)
+      // even call the protected hook.
+      doneVisiting =  (_isSkipIterationVisit(visitContext))
                         ? uixParentComponent._visitAllChildren(visitContext, callback)
                         : uixParentComponent.visitChildren(visitContext, callback);
     }
@@ -825,6 +822,18 @@ abstract public class UIXComponent exten
   }
 
   /**
+   * Tests whether we should skip iteration during this visit
+   */
+  private static boolean _isSkipIterationVisit(VisitContext visitContext)
+  {
+    FacesContext context = visitContext.getFacesContext();
+    Map<Object, Object> attrs = context.getAttributes();
+    Object skipIteration = attrs.get("javax.faces.visit.SKIP_ITERATION");
+
+    return Boolean.TRUE.equals(skipIteration);
+  }
+
+  /**
    * <p>
    * Called when visiting the component during optimized partial page encoding so that the
    * component can modify what is actually encoded.  For example tab controls often