You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ar...@apache.org on 2012/03/06 04:48:05 UTC

svn commit: r1297337 - /myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponentBase.java

Author: arobinson74
Date: Tue Mar  6 03:48:03 2012
New Revision: 1297337

URL: http://svn.apache.org/viewvc?rev=1297337&view=rev
Log:
TRINIDAD-2230 - Commit the patch provided thanks to Gary VanMatre

Modified:
    myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponentBase.java

Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponentBase.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponentBase.java?rev=1297337&r1=1297336&r2=1297337&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponentBase.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/component/UIXComponentBase.java Tue Mar  6 03:48:03 2012
@@ -1955,7 +1955,10 @@ abstract public class UIXComponentBase e
       bean.setProperty(_SYSTEM_EVENT_LISTENERS_KEY, eventStorage);
     }
 
-    eventStorage.addAttachedObject(eventClass, new ComponentSystemEventListenerWrapper(componentListener, this));
+    if (componentListener instanceof SystemEventListener && componentListener instanceof StateHolder)
+      eventStorage.addAttachedObject(eventClass, (SystemEventListener) componentListener);
+    else
+      eventStorage.addAttachedObject(eventClass, new ComponentSystemEventListenerWrapper(componentListener, this));
   }
 
   @Override
@@ -1981,8 +1984,15 @@ abstract public class UIXComponentBase e
       return;
     }
 
-    // ComponentSystemEventListenerWrapper implements equals() to compare listener and component
-    eventStorage.removeAttachedObject(eventClass, new ComponentSystemEventListenerWrapper(componentListener, this));
+    if (componentListener instanceof SystemEventListener && componentListener instanceof StateHolder)
+    {
+      eventStorage.removeAttachedObject(eventClass, (SystemEventListener) componentListener);    
+    }
+    else
+    {
+      // ComponentSystemEventListenerWrapper implements equals() to compare listener and component
+      eventStorage.removeAttachedObject(eventClass, new ComponentSystemEventListenerWrapper(componentListener, this));
+    }
   }
 
   @Override
@@ -2442,7 +2452,7 @@ abstract public class UIXComponentBase e
   }
 
 
-  private static class ComponentSystemEventListenerWrapper implements SystemEventListener, StateHolder
+  private static class ComponentSystemEventListenerWrapper implements SystemEventListener, StateHolder, ComponentSystemEventListener
   {
     ComponentSystemEventListenerWrapper(ComponentSystemEventListener listener, UIComponent component)
     {
@@ -2483,7 +2493,13 @@ abstract public class UIXComponentBase e
     public void processEvent(SystemEvent event) throws AbortProcessingException
     {
       assert (event instanceof ComponentSystemEvent);
-      _delegate.processEvent((ComponentSystemEvent)event);
+      processEvent((ComponentSystemEvent) event);
+    }
+
+    @Override
+    public void processEvent(ComponentSystemEvent event)
+    {
+      _delegate.processEvent((ComponentSystemEvent) event);
     }
 
     @Override