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/15 05:58:30 UTC
svn commit: r899526 -
/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/EventHandler.java
Author: lu4242
Date: Fri Jan 15 04:58:30 2010
New Revision: 899526
URL: http://svn.apache.org/viewvc?rev=899526&view=rev
Log:
MYFACES-2473 Make listeners added by tag handlers transient
Modified:
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/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=899526&r1=899525&r2=899526&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 Jan 15 04:58:30 2010
@@ -19,6 +19,7 @@
package org.apache.myfaces.view.facelets.tag.jsf.core;
import java.io.IOException;
+import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
@@ -27,11 +28,11 @@
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.ComponentHandler;
import javax.faces.view.facelets.FaceletContext;
import javax.faces.view.facelets.FaceletException;
import javax.faces.view.facelets.TagAttribute;
@@ -88,13 +89,18 @@
public void apply (FaceletContext ctx, UIComponent parent) throws ELException, FacesException, FaceletException, IOException
{
+ //Apply only if we are creating a new component
+ if (!ComponentHandler.isNew(parent))
+ {
+ return;
+ }
Class<? extends ComponentSystemEvent> eventClass = getEventClass (ctx);
MethodExpression methodExp = listener.getMethodExpression(ctx, void.class, new Class<?>[] {
ComponentSystemEvent.class });
// Simply register the event on the component.
- parent.subscribeToEvent (eventClass, new Listener (ctx.getFacesContext().getELContext(), methodExp));
+ parent.subscribeToEvent (eventClass, new Listener (methodExp));
}
/**
@@ -172,40 +178,26 @@
return (Class<? extends ComponentSystemEvent>) eventClass;
}
- private class Listener implements ComponentSystemEventListener, StateHolder {
- private ELContext elContext;
+ private class Listener implements ComponentSystemEventListener, Serializable {
+
+ private static final long serialVersionUID = 7318240026355007052L;
+
private MethodExpression methodExp;
- private Listener (ELContext elContext, MethodExpression methodExp)
+ public Listener()
+ {
+ super();
+ }
+
+ private Listener (MethodExpression methodExp)
{
- this.elContext = elContext;
this.methodExp = methodExp;
}
public void processEvent (ComponentSystemEvent event)
{
+ ELContext elContext = FacesContext.getCurrentInstance().getELContext();
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
- }
-
}
}