You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by ms...@apache.org on 2008/03/30 18:52:40 UTC

svn commit: r642771 - in /tapestry/tapestry4/trunk/tapestry-framework/src: java/org/apache/tapestry/internal/event/ComponentEventProperty.java test/org/apache/tapestry/internal/event/ComponentEventPropertyTest.java

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 {@link #_eventMap} over
+     * to the list of form-submitting events {@link #_formEventMap}.
+     * This is called when the targeted component is an {@link org.apache.tapestry.form.IFormComponent}
+     * by the {@link 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()
     {