Author: mschulte
Date: Sun Mar 30 09:52:33 2008
New Revision: 642771

URL: http://svn.apache.org/viewvc?rev=642771&view=rev
Log:
fixes TAPESTRY-2003: EventListener's "autoSubmit" parameter does not work.

Modified:
    
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java
    
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/ComponentEventPropertyTest.java

Modified: 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java?rev=642771&r1=642770&r2=642771&view=diff
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java
 (original)
+++ 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/ComponentEventProperty.java
 Sun Mar 30 09:52:33 2008
@@ -137,6 +137,12 @@
             listeners.add(listener);
     }
 
+    /**
+     * Moves all of the non-form-submitting events with autoSubmit=true in 
[EMAIL PROTECTED] #_eventMap} over
+     * to the list of form-submitting events [EMAIL PROTECTED] #_formEventMap}.
+     * This is called when the targeted component is an [EMAIL PROTECTED] 
org.apache.tapestry.form.IFormComponent}
+     * by the [EMAIL PROTECTED] 
org.apache.tapestry.pageload.EventConnectionVisitor}.
+     * */
     public void connectAutoSubmitEvents(String formIdPath)
     {
         Iterator it = getEvents().iterator();
@@ -151,6 +157,8 @@
             while (lit.hasNext())
             {    
                 EventBoundListener listener = (EventBoundListener) lit.next();
+               if ( !listener.isAutoSubmit() )
+                    continue;
                 
                 listener.setFormId(formIdPath);
                 lit.remove();

Modified: 
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/ComponentEventPropertyTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/ComponentEventPropertyTest.java?rev=642771&r1=642770&r2=642771&view=diff
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/ComponentEventPropertyTest.java
 (original)
+++ 
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/ComponentEventPropertyTest.java
 Sun Mar 30 09:52:33 2008
@@ -94,6 +94,30 @@
         assertEquals("doFoo", listener.getMethodName());
         assert listener.isAutoSubmit();
     }
+
+    /**
+     * tests regression of TAPESTRY-2003
+     * */
+    public void test_Add_Form_Event_Listener_no_autoSubmit()
+    {
+        String[] events = {"onFoo"};
+        ComponentEventProperty prop = new ComponentEventProperty("compid");
+
+        prop.addListener(events, "doFoo", "", false, true, false, false);
+        prop.connectAutoSubmitEvents("fooForm");
+
+        assertEquals("compid", prop.getComponentId());
+        assertEquals(1, prop.getEvents().size());
+        assertEquals(0, prop.getFormEvents().size());
+
+        List listeners = prop.getEventListeners("onFoo");
+        assertEquals(1, listeners.size());
+
+        EventBoundListener listener = (EventBoundListener)listeners.get(0);
+        
+        assertEquals("doFoo", listener.getMethodName());
+        assert ! listener.isAutoSubmit();
+    }
     
     public void test_Add_Multiple_Event_Listener()
     {


Reply via email to