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/14 05:45:29 UTC

svn commit: r899057 - in /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag: composite/InsertChildrenHandler.java composite/InsertFacetHandler.java jsf/core/EventHandler.java

Author: lu4242
Date: Thu Jan 14 04:45:27 2010
New Revision: 899057

URL: http://svn.apache.org/viewvc?rev=899057&view=rev
Log:
MYFACES-2473 Make listeners added by tag handlers transient (thanks to Michael Kurz for provide this patch)

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InsertChildrenHandler.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InsertFacetHandler.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InsertChildrenHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InsertChildrenHandler.java?rev=899057&r1=899056&r2=899057&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InsertChildrenHandler.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InsertChildrenHandler.java Thu Jan 14 04:45:27 2010
@@ -22,7 +22,9 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.faces.component.StateHolder;
 import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
 import javax.faces.event.ComponentSystemEvent;
 import javax.faces.event.ComponentSystemEventListener;
 import javax.faces.event.PostAddToViewEvent;
@@ -65,7 +67,7 @@
     }
     
     public static final class RelocateAllChildrenListener 
-        implements ComponentSystemEventListener
+        implements ComponentSystemEventListener, StateHolder
     {
         private final UIComponent _targetComponent;
         
@@ -104,7 +106,27 @@
                 }
             }*/
         }
-        
+
+        public Object saveState(FacesContext context)
+        {
+            return null;
+        }
+
+        public void restoreState(FacesContext context, Object state)
+        {
+            // no-op as listener is transient
+        }
+
+        public boolean isTransient()
+        {
+            return true;
+        }
+
+        public void setTransient(boolean newTransientValue)
+        {
+            // no-op as listener is transient
+        }
+
         /*
         private void regenerateUniqueIds(FacesContext facesContext, UniqueIdVendor uniqueIdVendor,  UIComponent comp)
         {
@@ -136,7 +158,7 @@
         }
         */
     }
-    
+
     /*
     private static UniqueIdVendor findParentUniqueIdVendor(UIComponent component)
     {

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InsertFacetHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InsertFacetHandler.java?rev=899057&r1=899056&r2=899057&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InsertFacetHandler.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InsertFacetHandler.java Thu Jan 14 04:45:27 2010
@@ -20,7 +20,9 @@
 
 import java.io.IOException;
 
+import javax.faces.component.StateHolder;
 import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
 import javax.faces.event.ComponentSystemEvent;
 import javax.faces.event.ComponentSystemEventListener;
 import javax.faces.event.PostAddToViewEvent;
@@ -95,7 +97,7 @@
     }
 
     public static final class RelocateFacetListener 
-        implements ComponentSystemEventListener
+        implements ComponentSystemEventListener, StateHolder
     {
         private final UIComponent _targetComponent;
         
@@ -118,5 +120,25 @@
                 _targetComponent.getFacets().put(_facetName, facetComponent);
             }
         }
+
+        public Object saveState(FacesContext context)
+        {
+            return null;
+        }
+
+        public void restoreState(FacesContext context, Object state)
+        {
+            // no-op as listener is transient
+        }
+
+        public boolean isTransient()
+        {
+            return true;
+        }
+
+        public void setTransient(boolean newTransientValue)
+        {
+            // no-op as listener is transient
+        }
     }
 }

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=899057&r1=899056&r2=899057&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 Thu Jan 14 04:45:27 2010
@@ -27,7 +27,9 @@
 import javax.el.MethodExpression;
 import javax.el.ValueExpression;
 import javax.faces.FacesException;
+import javax.faces.component.StateHolder;
 import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
 import javax.faces.event.ComponentSystemEvent;
 import javax.faces.event.ComponentSystemEventListener;
 import javax.faces.view.facelets.FaceletContext;
@@ -170,7 +172,7 @@
         return (Class<? extends ComponentSystemEvent>) eventClass;
     }
     
-    private class Listener implements ComponentSystemEventListener {
+    private class Listener implements ComponentSystemEventListener, StateHolder {
         private ELContext elContext;
         private MethodExpression methodExp;
         
@@ -184,5 +186,26 @@
         {
             this.methodExp.invoke(elContext, new Object[] { event });
         }
+
+        public Object saveState(FacesContext context)
+        {
+            return null;
+        }
+
+        public void restoreState(FacesContext context, Object state)
+        {
+            // no-op as listener is transient
+        }
+
+        public boolean isTransient()
+        {
+            return true;
+        }
+
+        public void setTransient(boolean newTransientValue)
+        {
+            // no-op as listener is transient
+        }
+
     }
 }