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/12/17 20:57:05 UTC

svn commit: r1050481 - in /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets: impl/FaceletCompositionContextImpl.java tag/jsf/core/EventHandler.java tag/jsf/core/ViewMetadataHandler.java

Author: lu4242
Date: Fri Dec 17 19:57:04 2010
New Revision: 1050481

URL: http://svn.apache.org/viewvc?rev=1050481&view=rev
Log:
MYFACES-3002 FaceletComponsitionContextImpl drops viewParams

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/ViewMetadataHandler.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java?rev=1050481&r1=1050480&r2=1050481&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java Fri Dec 17 19:57:04 2010
@@ -512,21 +512,21 @@ public class FaceletCompositionContextIm
         Map<String, UIComponent> facets = component.getFacets();
         if (!facets.isEmpty())
         {
-            UIComponent metadataFacet = null;
-            if (component instanceof UIViewRoot)
-            {
-                metadataFacet = facets.get(UIViewRoot.METADATA_FACET_NAME);
-            }
+            //UIComponent metadataFacet = null;
+            //if (component instanceof UIViewRoot)
+            //{
+            //    metadataFacet = facets.get(UIViewRoot.METADATA_FACET_NAME);
+            //}
 
             for (Iterator<UIComponent> itr = facets.values().iterator(); itr.hasNext();)
             {
                 UIComponent fc = itr.next();
 
-                if (fc == metadataFacet)
-                {
+                //if (fc == metadataFacet)
+                //{
                     // skip metadata facet
-                    continue;
-                }
+                    //continue;
+                //}
 
                 id = (String) fc.getAttributes().get(ComponentSupport.MARK_CREATED);
                 if (id != null)

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java?rev=1050481&r1=1050480&r2=1050481&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java Fri Dec 17 19:57:04 2010
@@ -47,6 +47,7 @@ import org.apache.myfaces.buildtools.mav
 import org.apache.myfaces.config.NamedEventManager;
 import org.apache.myfaces.config.RuntimeConfig;
 import org.apache.myfaces.view.facelets.FaceletCompositionContext;
+import org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage;
 import org.apache.myfaces.view.facelets.tag.jsf.ComponentSupport;
 import org.apache.myfaces.view.facelets.util.ReflectionUtil;
 
@@ -87,9 +88,18 @@ public final class EventHandler extends 
         {
             return;
         }
-        if (parent instanceof UIViewRoot && FaceletCompositionContext.getCurrentInstance(ctx).isRefreshingTransientBuild())
+        if (parent instanceof UIViewRoot)
         {
-            return;
+            if (FaceletCompositionContext.getCurrentInstance(ctx).isRefreshingTransientBuild())
+            {
+                return;
+            }
+            else if (!FaceletViewDeclarationLanguage.isBuildingViewMetadata(ctx.getFacesContext()) &&
+                    UIViewRoot.METADATA_FACET_NAME.equals((String) parent.getAttributes().get(FacetHandler.KEY)))
+            {
+                // Already processed when the view metadata was created
+                return;
+            }
         }
         
         Class<? extends ComponentSystemEvent> eventClass = getEventClass(ctx);

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/ViewMetadataHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/ViewMetadataHandler.java?rev=1050481&r1=1050480&r2=1050481&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/ViewMetadataHandler.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/ViewMetadataHandler.java Fri Dec 17 19:57:04 2010
@@ -23,6 +23,7 @@ import java.io.IOException;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIPanel;
 import javax.faces.component.UIViewRoot;
+import javax.faces.view.facelets.ComponentHandler;
 import javax.faces.view.facelets.FaceletContext;
 import javax.faces.view.facelets.TagConfig;
 import javax.faces.view.facelets.TagException;
@@ -80,5 +81,20 @@ public final class ViewMetadataHandler e
                 parent.getAttributes().remove(FacetHandler.KEY);
             }
         }
+        else
+        {
+            // In this case we need to call nextHandler so the mark/delete components could be applied
+            // correctly. The only tag that needs to do something special is f:event, because in this case 
+            // ComponentHandler.isNew(parent) does not work for UIViewRoot.
+            parent.getAttributes().put(FacetHandler.KEY, UIViewRoot.METADATA_FACET_NAME);
+            try
+            {
+                this.nextHandler.apply(ctx, parent);
+            }
+            finally
+            {
+                parent.getAttributes().remove(FacetHandler.KEY);
+            }
+        }
     }
 }