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");