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

svn commit: r613301 - in /tapestry/tapestry4/trunk: tapestry-annotations/src/test/org/apache/tapestry/annotations/ tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/localization/ tapestry-framework/src/java/org/apache/tapestry/internal...

Author: jkuhnert
Date: Fri Jan 18 14:40:21 2008
New Revision: 613301

URL: http://svn.apache.org/viewvc?rev=613301&view=rev
Log:
Fixes TAPESTRY-1233.  Bug in ComponentEventProperty was causing async parameter value to get lost.

Modified:
    tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/AnnotatedPage.java
    tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java
    tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/localization/Localization.java
    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-annotations/src/test/org/apache/tapestry/annotations/AnnotatedPage.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/AnnotatedPage.java?rev=613301&r1=613300&r2=613301&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/AnnotatedPage.java (original)
+++ tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/AnnotatedPage.java Fri Jan 18 14:40:21 2008
@@ -169,6 +169,9 @@
     @EventListener(events = { "onClick" }, targets = { "email" }, submitForm = "notExisting")
     public void brokenFormListener() { }
     
+    @EventListener(targets = "foo", events = "onchange", async = false)
+    public void submitForm() {}
+
     @InitialValue("literal:5")
     public abstract int getDefaultPageSize();
     

Modified: tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java?rev=613301&r1=613300&r2=613301&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-annotations/src/test/org/apache/tapestry/annotations/TestEventListenerAnnotationWorker.java Fri Jan 18 14:40:21 2008
@@ -39,7 +39,7 @@
         EnhancementOperation op = newOp();
         IComponentSpecification spec = new ComponentSpecification();
         Resource resource = newResource(AnnotatedPage.class);
-                
+        
         EventListenerAnnotationWorker worker = new EventListenerAnnotationWorker();
 
         replay();
@@ -137,5 +137,34 @@
         
         verify();
     }
-    
+
+
+    public void test_Disable_Aysnc_Event_Connection()
+    {
+        EnhancementOperation op = newOp();
+        IComponentSpecification spec = new ComponentSpecification();
+        Resource resource = newResource(AnnotatedPage.class);
+
+        EventListenerAnnotationWorker worker = new EventListenerAnnotationWorker();
+
+        replay();
+
+        Method m = findMethod(AnnotatedPage.class, "submitForm");
+
+        assertTrue(worker.canEnhance(m));
+        worker.peformEnhancement(op, spec, m, resource);
+
+        verify();
+
+        ComponentEventProperty property = spec.getComponentEvents("foo");
+        assertNotNull(property);
+
+        List listeners = property.getEventListeners("onchange");
+        assertNotNull(listeners);
+        assertEquals(1, listeners.size());
+
+        EventBoundListener listener = (EventBoundListener) listeners.get(0);
+        assert !listener.shouldFocusForm();
+        assert !listener.isAsync();
+    }
 }

Modified: tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/localization/Localization.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/localization/Localization.java?rev=613301&r1=613300&r2=613301&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/localization/Localization.java (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/localization/Localization.java Fri Jan 18 14:40:21 2008
@@ -15,6 +15,7 @@
 package org.apache.tapestry.workbench.localization;
 
 import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.annotations.EventListener;
 import org.apache.tapestry.form.IPropertySelectionModel;
 import org.apache.tapestry.html.BasePage;
 
@@ -31,6 +32,12 @@
     private IPropertySelectionModel localeModel;
 
     public void formSubmit(IRequestCycle cycle)
+    {
+        cycle.activate("localization/Change");
+    }
+
+    @EventListener(targets = "inputLocale", events = "onchange", async = false)
+    public void onChange(IRequestCycle cycle)
     {
         cycle.activate("localization/Change");
     }

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=613301&r1=613300&r2=613301&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 Fri Jan 18 14:40:21 2008
@@ -68,7 +68,7 @@
     public void addListener(String[] events, String methodName,
             String formId, boolean validateForm, boolean async, boolean focus)
     {
-        addListener(events, methodName, formId, validateForm, async, focus, false);
+        addListener(events, methodName, formId, validateForm, async, focus, true);
     }
 
     /**
@@ -88,9 +88,18 @@
     {
         for (int i=0; i < events.length; i++) {
             if (formId != null && formId.length() > 0)
-                addFormEventListener(events[i], methodName, formId, validateForm, async, focus);
-            else
-                addEventListener(events[i], methodName, autoSubmit);
+            {
+                addFormEventListener(events[i], methodName, formId, validateForm, async, focus, autoSubmit);
+            } else
+            {
+                EventBoundListener listener = new EventBoundListener(methodName, formId, validateForm,
+                                                                     _componentId, async, focus, autoSubmit);
+                List listeners = getEventListeners(events[i]);
+                if (!listeners.contains(listener))
+                {
+                    listeners.add(listener);
+                }
+            }
         }
     }
     
@@ -102,9 +111,10 @@
      * @param validateForm
      */
     public void addFormEventListener(String event, String methodName,
-            String formId, boolean validateForm, boolean async, boolean focus)
+            String formId, boolean validateForm, boolean async, boolean focus, boolean autoSubmit)
     {
-        EventBoundListener listener = new EventBoundListener(methodName, formId, validateForm, _componentId, async, focus);
+        EventBoundListener listener = new EventBoundListener(methodName, formId, validateForm, _componentId,
+                                                             async, focus, autoSubmit);
         
         List listeners = getFormEventListeners(event);
         if (!listeners.contains(listener))

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=613301&r1=613300&r2=613301&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 Fri Jan 18 14:40:21 2008
@@ -52,7 +52,21 @@
         assertEquals("doFoo", listener.getMethodName());
         assert listener.isAutoSubmit();
     }
-    
+
+    public void test_Disabled_Async_Property()
+    {
+        String[] events = { "onchange" };
+        ComponentEventProperty p = new ComponentEventProperty("compid");
+
+        p.addListener(events, "submitForm", null, false, false, false, true);
+
+        List listeners = p.getEventListeners("onchange");
+        assertEquals(1, listeners.size());
+
+        EventBoundListener l = (EventBoundListener) listeners.get(0);
+        assert !l.isAsync();
+    }
+
     public void test_Add_Form_Event_Listener()
     {
         String[] events = {"onFoo"};