You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2007/05/17 04:50:27 UTC
svn commit: r538791 - in /tapestry/tapestry4/trunk/tapestry-framework/src:
java/org/apache/tapestry/services/impl/ComponentEventConnectionWorker.java
test/org/apache/tapestry/services/impl/ComponentEventConnectionWorkerTest.java
Author: jkuhnert
Date: Wed May 16 19:50:24 2007
New Revision: 538791
URL: http://svn.apache.org/viewvc?view=rev&rev=538791
Log:
Fixes bug where component event connection worker would wire up the same event listener twice if it had specified multiple events for the same component.
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ComponentEventConnectionWorker.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/services/impl/ComponentEventConnectionWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ComponentEventConnectionWorker.java?view=diff&rev=538791&r1=538790&r2=538791
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ComponentEventConnectionWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ComponentEventConnectionWorker.java Wed May 16 19:50:24 2007
@@ -355,7 +355,11 @@
listener.isAsync(),
listener.isValidateForm(),
ScriptUtils.functionHash(listener));
- continue;
+
+ // re-looping over the same property -> event listener list would
+ // result in duplicate bindings so break out
+
+ break;
}
// form has been rendered so go ahead
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=538791&r1=538790&r2=538791
==============================================================================
--- 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 May 16 19:50:24 2007
@@ -239,7 +239,7 @@
IComponentSpecification comp2Spec = new ComponentSpecification();
// now test render
- spec.addEventListener("comp1", new String[] {"onclick"}, "testMethod", "form1", true, true, false, false);
+ spec.addEventListener("comp1", new String[] {"onclick", "onchange"}, "testMethod", "form1", true, true, false, false);
invoker.addEventListener("comp1", spec);
invoker.addFormEventListener("form1", spec);
@@ -256,7 +256,7 @@
expect(comp1.getExtendedId()).andReturn("comp1").anyTimes();
expect(comp1.getClientId()).andReturn("comp1").anyTimes();
- expect(cycle.getAttribute(ComponentEventConnectionWorker.FORM_NAME_LIST + "form1")).andReturn(null);
+ expect(cycle.getAttribute(ComponentEventConnectionWorker.FORM_NAME_LIST + "form1")).andReturn(null).times(2);
expect(comp1.getSpecification()).andReturn(comp1Spec);
@@ -295,7 +295,7 @@
List deferred = (List)worker.getDefferedFormConnections().get("form1");
assert deferred != null;
- assertEquals(deferred.size(), 2);
+ assertEquals(deferred.size(), 3);
Object[] parms = (Object[])deferred.get(0);
assertEquals(4, parms.length);
@@ -316,10 +316,18 @@
assertEquals("comp1", parm.get("clientId"));
assertEquals(comp1, parm.get("component"));
-
+
+ // just make sure second element is targeted at comp1 to handle the two events we gave it
+
+ parms = (Object[])deferred.get(1);
+ assertEquals(parms.length, 4);
+
+ parm = (Map)parms[0];
+ assertEquals(parm.get("clientId"), "comp1");
+
// test comp2 connections
- parms = (Object[])deferred.get(1);
+ parms = (Object[])deferred.get(2);
assertEquals(4, parms.length);
// assert async is false
@@ -336,8 +344,8 @@
assert parm.get("formEvents") == null;
assert parm.get("target") == null;
- assertEquals("comp2", parm.get("clientId"));
- assertEquals(comp2, parm.get("component"));
+ assertEquals(parm.get("clientId"), "comp2");
+ assertEquals(parm.get("component"), comp2);
}