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 2007/02/15 01:27:40 UTC

svn commit: r507752 - in /tapestry/tapestry4/trunk/tapestry-framework/src: java/org/apache/tapestry/internal/event/impl/ java/org/apache/tapestry/spec/ test/org/apache/tapestry/form/ test/org/apache/tapestry/internal/event/impl/ test/org/apache/tapestr...

Author: jkuhnert
Date: Wed Feb 14 16:27:40 2007
New Revision: 507752

URL: http://svn.apache.org/viewvc?view=rev&rev=507752
Log:
Fixes TAPESTRY-1241. 

The IEventListener impl of ComponentSpecification was using the getComponent/ElementEvents(id) method which would
create a ComponentEventProperty if it was currently null...Changed this logic to only happen when events are being 
connected via the enhancement chain..

Modified:
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/impl/ComponentEventInvoker.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/multipart/TestUploadFormParametersWrapper.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/impl/ComponentEventInvoker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/impl/ComponentEventInvoker.java?view=diff&rev=507752&r1=507751&r2=507752
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/impl/ComponentEventInvoker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/internal/event/impl/ComponentEventInvoker.java Wed Feb 14 16:27:40 2007
@@ -26,6 +26,7 @@
 import org.apache.tapestry.IForm;
 import org.apache.tapestry.IRequestCycle;
 import org.apache.tapestry.event.BrowserEvent;
+import org.apache.tapestry.event.ResetEventListener;
 import org.apache.tapestry.form.FormSupport;
 import org.apache.tapestry.form.FormSupportImpl;
 import org.apache.tapestry.internal.event.ComponentEventProperty;
@@ -40,7 +41,7 @@
  *
  * @author jkuhnert
  */
-public class ComponentEventInvoker implements IComponentEventInvoker
+public class ComponentEventInvoker implements IComponentEventInvoker, ResetEventListener
 {
     private Map _components = new HashMap();
     
@@ -147,6 +148,8 @@
                 target = findComponent(component.getPage().getComponents().values(), listener);
                 props = target.getSpecification().getComponentEvents(component.getId());
             }
+            if (props == null)
+                continue;
             
             List clisteners = props.getEventListeners(event.getName());
             for (int e=0; e < clisteners.size(); e++) {
@@ -277,6 +280,7 @@
     public void resetEventDidOccur()
     {
         _components.clear();
+        _formComponents.clear();
     }
     
     /** Injected. */

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java?view=diff&rev=507752&r1=507751&r2=507752
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/ComponentSpecification.java Wed Feb 14 16:27:40 2007
@@ -712,6 +712,10 @@
             String methodName, String formId, boolean validateForm, boolean async, boolean focus)
     {
         ComponentEventProperty property = getComponentEvents(componentId);
+        if (property == null) {
+            property = new ComponentEventProperty(componentId);
+            _componentEvents.put(componentId, property);
+        }
         
         property.addListener(events, methodName, formId, validateForm, async, focus);
     }
@@ -723,6 +727,10 @@
             String methodName, String formId, boolean validateForm, boolean async, boolean focus)
     {
         ComponentEventProperty property = getElementEvents(elementId);
+        if (property == null) {
+            property = new ComponentEventProperty(elementId);
+            _elementEvents.put(elementId, property);
+        }
         
         property.addListener(events, methodName, formId, validateForm, async, focus);
     }
@@ -732,13 +740,7 @@
      */
     public ComponentEventProperty getComponentEvents(String id)
     {
-        ComponentEventProperty prop = (ComponentEventProperty)_componentEvents.get(id);
-        if (prop == null) {
-            prop = new ComponentEventProperty(id);
-            _componentEvents.put(id, prop);
-        }
-        
-        return prop;
+        return (ComponentEventProperty)_componentEvents.get(id);
     }
     
     /**
@@ -746,13 +748,7 @@
      */
     public ComponentEventProperty getElementEvents(String id)
     {
-        ComponentEventProperty prop = (ComponentEventProperty)_elementEvents.get(id);
-        if (prop == null) {
-            prop = new ComponentEventProperty(id);
-            _elementEvents.put(id, prop);
-        }
-        
-        return prop;
+        return (ComponentEventProperty)_elementEvents.get(id);
     }
     
     /**
@@ -789,30 +785,6 @@
         }
         
         return (EventBoundListener[])ret.toArray(new EventBoundListener[ret.size()]);
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    public boolean hasEvents()
-    {
-        return _componentEvents.size() > 0;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    public boolean hasEvents(String id)
-    {
-        return _componentEvents.get(id) != null;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    public boolean hasElementEvents(String id)
-    {
-        return _elementEvents.get(id) != null;
     }
     
     /**

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java?view=diff&rev=507752&r1=507751&r2=507752
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/spec/IEventListener.java Wed Feb 14 16:27:40 2007
@@ -68,30 +68,6 @@
     boolean hasElementEvents();
     
     /**
-     * Checks if this listener has any element events bound to the specified 
-     * element id.
-     * 
-     * @return True, if the html element has events.
-     */
-    boolean hasElementEvents(String id);
-    
-    /**
-     * Checks if any component events are bound to this component.
-     * 
-     * @return True if any component events are mapped from this component.
-     */
-    boolean hasEvents();
-    
-    /**
-     * Determines if this listener has any component events bound at all.
-     * 
-     * @param id The component id to check for events.
-     * 
-     * @return True if any component event listeners are bound to this listener.
-     */
-    boolean hasEvents(String id);
-    
-    /**
      * Gets component bound event properties.
      * 
      * @param componentId The component to get event listeners for.

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java?view=diff&rev=507752&r1=507751&r2=507752
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java Wed Feb 14 16:27:40 2007
@@ -50,7 +50,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential = true)
 public class FormSupportTest extends BaseComponentTestCase
 {
     @DataProvider(name="allSupports")
@@ -443,7 +443,7 @@
     }
 
     @Test(dataProvider = "allSupports")
-    public void test_Field_Prerender_Twice()
+    public void test_Field_Prerender_Twice(FormSupportFactory factory)
     {
         IFormComponent field = newField();
         IMarkupWriter writer = newWriter();

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java?view=diff&rev=507752&r1=507751&r2=507752
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/internal/event/impl/ComponentEventInvokerTest.java Wed Feb 14 16:27:40 2007
@@ -18,7 +18,6 @@
 import static org.easymock.EasyMock.isA;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.tapestry.BaseComponentTestCase;
@@ -54,20 +53,15 @@
         spec.addEventListener("comp1", new String[] {"onClick"}, "testFoo", 
                 null, false, false, false);
         
-        assertTrue(spec.hasEvents("comp1"));
+        assert spec.getComponentEvents("comp1") != null;
+        assert spec.getComponentEvents("comp1").getEvents().size() == 1;
         
         ComponentEventProperty prop = spec.getComponentEvents("comp1");
         assertNotNull(prop);
         assertEquals(prop.getEventListeners("onClick").size(), 1);
         
-        // ensure valid props always returned
         prop = spec.getComponentEvents("comp2");
-        assertNotNull(prop);
-        assertEquals(prop.getEvents().size(), 0);
-        
-        List listeners = prop.getEventListeners("nonExistant");
-        assertNotNull(listeners);
-        assertEquals(listeners.size(), 0);
+        assert prop == null;
     }
     
     public void test_Invoke_Component_Listener()

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/multipart/TestUploadFormParametersWrapper.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/multipart/TestUploadFormParametersWrapper.java?view=diff&rev=507752&r1=507751&r2=507752
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/multipart/TestUploadFormParametersWrapper.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/multipart/TestUploadFormParametersWrapper.java Wed Feb 14 16:27:40 2007
@@ -45,8 +45,7 @@
 
         Map map = new HashMap();
 
-        map.put("key", new String[]
-        { "value" });
+        map.put("key", new String[] { "value" });
 
         HttpServletRequest r = new UploadFormParametersWrapper(request, map);
 

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java?view=diff&rev=507752&r1=507751&r2=507752
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java Wed Feb 14 16:27:40 2007
@@ -185,7 +185,7 @@
         expect(widget.getId()).andReturn("wid1").anyTimes();
         expect(widget.getClientId()).andReturn("wid1").anyTimes();
         
-        assertTrue(widgetSpec.hasEvents("wid1"));
+        assert widgetSpec.getComponentEvents("wid1") != null;
         
         trainGetLinkCheckIgnoreParameter(engine, cycle, false, new Object(), link);
         trainGetURL(link, "/some/url2");