You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2010/08/08 22:45:02 UTC

svn commit: r983481 - in /myfaces/trinidad/tags/trinidad-1.2.13/trinidad-partial-lifecycle/src/main/java/org/apache/myfaces/trinidadinternal/lifecycle: PartialLifecycleUtils.java UIViewRoot.java

Author: bommel
Date: Sun Aug  8 20:45:02 2010
New Revision: 983481

URL: http://svn.apache.org/viewvc?rev=983481&view=rev
Log:
(TRINIDAD-1220) Partial Lifecycle for Trinidad

Modified:
    myfaces/trinidad/tags/trinidad-1.2.13/trinidad-partial-lifecycle/src/main/java/org/apache/myfaces/trinidadinternal/lifecycle/PartialLifecycleUtils.java
    myfaces/trinidad/tags/trinidad-1.2.13/trinidad-partial-lifecycle/src/main/java/org/apache/myfaces/trinidadinternal/lifecycle/UIViewRoot.java

Modified: myfaces/trinidad/tags/trinidad-1.2.13/trinidad-partial-lifecycle/src/main/java/org/apache/myfaces/trinidadinternal/lifecycle/PartialLifecycleUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/tags/trinidad-1.2.13/trinidad-partial-lifecycle/src/main/java/org/apache/myfaces/trinidadinternal/lifecycle/PartialLifecycleUtils.java?rev=983481&r1=983480&r2=983481&view=diff
==============================================================================
--- myfaces/trinidad/tags/trinidad-1.2.13/trinidad-partial-lifecycle/src/main/java/org/apache/myfaces/trinidadinternal/lifecycle/PartialLifecycleUtils.java (original)
+++ myfaces/trinidad/tags/trinidad-1.2.13/trinidad-partial-lifecycle/src/main/java/org/apache/myfaces/trinidadinternal/lifecycle/PartialLifecycleUtils.java Sun Aug  8 20:45:02 2010
@@ -17,12 +17,9 @@ package org.apache.myfaces.trinidadinter
  * limitations under the License.
  */
 
-import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.XhtmlConstants;
-import org.apache.myfaces.trinidadinternal.share.xml.XMLUtils;
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 
 import javax.faces.context.FacesContext;
-import java.util.Map;
 import java.util.Arrays;
 
 public final class PartialLifecycleUtils

Modified: myfaces/trinidad/tags/trinidad-1.2.13/trinidad-partial-lifecycle/src/main/java/org/apache/myfaces/trinidadinternal/lifecycle/UIViewRoot.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/tags/trinidad-1.2.13/trinidad-partial-lifecycle/src/main/java/org/apache/myfaces/trinidadinternal/lifecycle/UIViewRoot.java?rev=983481&r1=983480&r2=983481&view=diff
==============================================================================
--- myfaces/trinidad/tags/trinidad-1.2.13/trinidad-partial-lifecycle/src/main/java/org/apache/myfaces/trinidadinternal/lifecycle/UIViewRoot.java (original)
+++ myfaces/trinidad/tags/trinidad-1.2.13/trinidad-partial-lifecycle/src/main/java/org/apache/myfaces/trinidadinternal/lifecycle/UIViewRoot.java Sun Aug  8 20:45:02 2010
@@ -22,11 +22,13 @@ import org.apache.myfaces.trinidad.conte
 import org.apache.myfaces.trinidad.context.FormData;
 import org.apache.myfaces.trinidad.context.RequestContext;
 import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.PartialPageUtils;
-import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.XhtmlConstants;
+import org.apache.myfaces.trinidad.render.XhtmlConstants;
+import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.TrinidadRenderingConstants;
 import org.apache.myfaces.trinidadinternal.renderkit.core.CoreResponseStateManager;
 import org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderingContext;
 
 import javax.el.MethodExpression;
+import javax.faces.FacesException;
 import javax.faces.FactoryFinder;
 import javax.faces.component.UIComponent;
 import javax.faces.component.ContextCallback;
@@ -41,9 +43,9 @@ import javax.faces.lifecycle.LifecycleFa
 import javax.faces.webapp.FacesServlet;
 import java.util.ArrayList;
 import java.util.ConcurrentModificationException;
+import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
-import java.util.Map;
 import java.util.Set;
 import java.io.IOException;
 
@@ -232,29 +234,50 @@ public class UIViewRoot extends javax.fa
   }
 
   private void storePartialTargets(FacesContext context) {
-      // after a normal decode check for partialTargets
-      final RequestContext requestContext = RequestContext.getCurrentInstance();
-      if (!(context.getResponseComplete() || context.getRenderResponse())
-          && requestContext.isPartialRequest(context))
-      {
-        String sourceId = context.getExternalContext().getRequestParameterMap().get("source");
-        UIComponent source = findComponent(sourceId);
-        if (source != null)
-        {
-          List<String> list = new ArrayList<String>();
-          Set<UIComponent> components = requestContext.getPartialTargets(source);
-          for (UIComponent component : components)
-          {
-            list.add(component.getClientId(context));
-          }
-          if (list.size() > 0)
-          {
-            PartialLifecycleUtils.setPartialTargets(context, list.toArray(new String[list.size()]));
-          } else {
-            PartialLifecycleUtils.setPartialTargets(context, sourceId);
+    // after a normal decode check for partialTargets
+    final RequestContext requestContext = RequestContext.getCurrentInstance();
+    if (!(context.getResponseComplete() || context.getRenderResponse())
+        && requestContext.isPartialRequest(context)) {
+      String sourceId = context.getExternalContext().getRequestParameterMap().get("source");
+      UIComponent source = findComponent(sourceId);
+      if (source != null) {
+        List<String> list = new ArrayList<String>();
+        Set<UIComponent> components = requestContext.getPartialTargets(source);
+        for (UIComponent component : components) {
+          list.add(component.getClientId(context));
+        }
+        if (list.size() > 0) {
+          // check if source is a child of the partialTargets or a partialTarget
+          if (!list.contains(sourceId)) {
+            UIComponent component = source;
+            while ((component = component.getParent()) != null) {
+              if (list.contains(component.getClientId(context))) {
+                break;
+              } else if (component instanceof UIViewRoot) {
+                // source is not inside partialTargets
+                list.add(0, sourceId);
+                break;
+              }
+            }
           }
+          PartialLifecycleUtils.setPartialTargets(context, list.toArray(new String[list.size()]));
+        } else {
+          PartialLifecycleUtils.setPartialTargets(context, sourceId);
         }
       }
+    }
+  }
+
+  @Override
+  // skip invokeOnComponent on UIViewRoot to avoid warning message in myfaces about missing id
+  public boolean invokeOnComponent(FacesContext context, String clientId, ContextCallback callback)
+      throws FacesException {
+    boolean found = false;
+    for (Iterator<UIComponent> it = getFacetsAndChildren(); !found && it.hasNext();)
+    {
+      found = it.next().invokeOnComponent(context, clientId, callback);
+    }
+    return found;
   }
 
   void clearEvents(FacesContext context)
@@ -356,7 +379,7 @@ public class UIViewRoot extends javax.fa
 
   @Override
   public void encodeAll(FacesContext facesContext) throws IOException {
-    String[] partialTargets = PartialLifecycleUtils.getPartialTargets(facesContext);
+    /*String[] partialTargets = PartialLifecycleUtils.getPartialTargets(facesContext);
     if (partialTargets != null)
     {
 
@@ -383,9 +406,9 @@ public class UIViewRoot extends javax.fa
 
         form.encodeBegin(facesContext);
         FormData formData = renderingContext.getFormData();
-        formData.addNeededValue(XhtmlConstants.PARTIAL_PARAM);
-        formData.addNeededValue(XhtmlConstants.STATE_PARAM);
-        formData.addNeededValue(XhtmlConstants.VALUE_PARAM);
+        formData.addNeededValue(TrinidadRenderingConstants.PARTIAL_PARAM);
+        formData.addNeededValue(TrinidadRenderingConstants.STATE_PARAM);
+        formData.addNeededValue(TrinidadRenderingConstants.VALUE_PARAM);
 
         // FIXME
         if (renderingContext instanceof CoreRenderingContext)
@@ -405,10 +428,10 @@ public class UIViewRoot extends javax.fa
       if (form != null)
       {
         form.encodeEnd(facesContext);
-      }
-    } else {
+      }  */
+   /* } else {  */
       super.encodeAll(facesContext);
-    }
+    //}
   }
 
   public Object saveState(FacesContext facesContext)