You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by mi...@apache.org on 2005/09/24 11:28:31 UTC

svn commit: r291266 - in /jakarta/tapestry/trunk: ./ contrib/src/java/org/apache/tapestry/contrib/table/components/ contrib/src/java/org/apache/tapestry/contrib/table/components/inserted/ framework/src/java/org/apache/tapestry/form/ framework/src/test/...

Author: mindbridge
Date: Sat Sep 24 02:28:17 2005
New Revision: 291266

URL: http://svn.apache.org/viewcvs?rev=291266&view=rev
Log:
Replacing the 'defer' parmeter in Submit, LinkSubmit, 
and ImageSubmit with a deferred listener parameter 'action'.

Modified:
    jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/table/components/TableFormPages.jwc
    jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.jwc
    jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/AbstractSubmit.java
    jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/ImageSubmit.jwc
    jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/LinkSubmit.jwc
    jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/Submit.jwc
    jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestSubmit.java
    jakarta/tapestry/trunk/status.xml

Modified: jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/table/components/TableFormPages.jwc
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/table/components/TableFormPages.jwc?rev=291266&r1=291265&r2=291266&view=diff
==============================================================================
--- jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/table/components/TableFormPages.jwc (original)
+++ jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/table/components/TableFormPages.jwc Sat Sep 24 02:28:17 2005
@@ -83,7 +83,6 @@
 	    <binding name="listener" expression="listeners.changePage"/>
 	    <binding name="tag" expression="displayPage"/>
 	    <binding name="selected" expression="selectedPage"/>
-        <binding name="defer" expression="false"/>
 	</component>
 
 	<component id="linkFirst" type="LinkSubmit">
@@ -91,7 +90,6 @@
 	    <binding name="tag" expression="1"/>
 	    <binding name="selected" expression="selectedPage"/>
 	    <binding name="disabled" expression="!condBack"/>
-        <binding name="defer" expression="false"/>
 	</component>
 
 	<component id="linkBack" type="LinkSubmit">
@@ -99,7 +97,6 @@
 	    <binding name="tag" expression="currentPage - 1"/>
 	    <binding name="selected" expression="selectedPage"/>
 	    <binding name="disabled" expression="!condBack"/>
-        <binding name="defer" expression="false"/>
 	</component>
 
 	<component id="linkFwd" type="LinkSubmit">
@@ -107,7 +104,6 @@
 	    <binding name="tag" expression="currentPage + 1"/>
 	    <binding name="selected" expression="selectedPage"/>
 	    <binding name="disabled" expression="!condFwd"/>
-        <binding name="defer" expression="false"/>
 	</component>
 	
 	<component id="linkLast" type="LinkSubmit">
@@ -115,7 +111,6 @@
 	    <binding name="tag" expression="pageCount"/>
 	    <binding name="selected" expression="selectedPage"/>
 	    <binding name="disabled" expression="!condFwd"/>
-        <binding name="defer" expression="false"/>
 	</component>
 
 </component-specification>

Modified: jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.jwc
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.jwc?rev=291266&r1=291265&r2=291266&view=diff
==============================================================================
--- jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.jwc (original)
+++ jakarta/tapestry/trunk/contrib/src/java/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.jwc Sat Sep 24 02:28:17 2005
@@ -55,7 +55,6 @@
 		<binding name="listener" expression="listeners.columnSelected"/>
 		<binding name="tag" expression="tableColumn.columnName"/>
 		<binding name="selected" expression="selectedColumnName"/>
-        <binding name="defer" expression="false"/>
 	</component>
 	
 	<component id="imageSort" type="Image">

Modified: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/AbstractSubmit.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/AbstractSubmit.java?rev=291266&r1=291265&r2=291266&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/AbstractSubmit.java (original)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/AbstractSubmit.java Sat Sep 24 02:28:17 2005
@@ -55,8 +55,9 @@
             setSelected(getTag());
 
         final IActionListener listener = getListener();
+        final IActionListener action = getAction();
 
-        if (listener == null)
+        if (listener == null && action == null)
             return;
 
         final ListenerInvoker listenerInvoker = getListenerInvoker();
@@ -75,24 +76,28 @@
             }
         }
 
-        // Have a listener; notify it now, or defer for later?
-
-        Runnable notify = new Runnable()
-        {
-            public void run()
-            {
-                listenerInvoker.invokeListener(listener, AbstractSubmit.this, cycle);
-            }
-        };
-
-        if (getDefer())
+        // Invoke 'listener' now, but defer 'action' for later
+        if (listener != null)
+        	listenerInvoker.invokeListener(listener, AbstractSubmit.this, cycle);
+        
+        if (action != null) {
+	        Runnable notify = new Runnable()
+	        {
+	            public void run()
+	            {
+	                listenerInvoker.invokeListener(action, AbstractSubmit.this, cycle);
+	            }
+	        };
+	
             form.addDeferredRunnable(notify);
-        else
-            notify.run();
+        }
     }
 
     /** parameter */
     public abstract IActionListener getListener();
+
+    /** parameter */
+    public abstract IActionListener getAction();
 
     /** parameter */
     public abstract Object getTag();

Modified: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/ImageSubmit.jwc
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/ImageSubmit.jwc?rev=291266&r1=291265&r2=291266&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/ImageSubmit.jwc (original)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/ImageSubmit.jwc Sat Sep 24 02:28:17 2005
@@ -61,13 +61,12 @@
   	</description>
   </parameter>
   
-  <parameter name="defer" default-value="true">
-    <description>
-      If true (the default), then the listener (if any)
-      is not notified until just before the form's listener,
-      after all components enclosed by the Form have had
-      a chance to update properties.
-    </description>
+  <parameter name="action">
+      <description>
+          A listener that is notified if this component is triggered
+          just before the form's listener, after all components 
+          enclosed by the Form have had a chance to update their properties.
+      </description>
   </parameter>
 
   <parameter name="parameters">

Modified: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/LinkSubmit.jwc
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/LinkSubmit.jwc?rev=291266&r1=291265&r2=291266&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/LinkSubmit.jwc (original)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/LinkSubmit.jwc Sat Sep 24 02:28:17 2005
@@ -35,10 +35,11 @@
           A listener that is notified if this component is triggered.
       </description>
   </parameter>
-  <parameter name="defer" default-value="true">
+  <parameter name="action">
       <description>
-          If true (the default), then any listener notification is deferred
-          until just before the form's listener is invoked.
+          A listener that is notified if this component is triggered
+          just before the form's listener, after all components 
+          enclosed by the Form have had a chance to update their properties.
       </description>
   </parameter>
   <parameter name="parameters">

Modified: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/Submit.jwc
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/Submit.jwc?rev=291266&r1=291265&r2=291266&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/Submit.jwc (original)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/Submit.jwc Sat Sep 24 02:28:17 2005
@@ -55,10 +55,11 @@
           A listener that is notified if this component is triggered.
       </description>
   </parameter>
-  <parameter name="defer" default-value="true">
+  <parameter name="action">
       <description>
-          If true (the default), then any listener notification is deferred
-          until just before the form's listener is invoked.
+          A listener that is notified if this component is triggered
+          just before the form's listener, after all components 
+          enclosed by the Form have had a chance to update their properties.
       </description>
   </parameter>
   <parameter name="parameters">

Modified: jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestSubmit.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestSubmit.java?rev=291266&r1=291265&r2=291266&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestSubmit.java (original)
+++ jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestSubmit.java Sat Sep 24 02:28:17 2005
@@ -350,15 +350,15 @@
         verifyControls();
     }
 
-    public void testTriggerWithDeferredListener()
+    public void testTriggerWithAction()
     {
-        IActionListener listener = newListener();
+        IActionListener action = newListener();
         MockForm form = new MockForm();
         IRequestCycle cycle = newCycle();
 
         Creator creator = new Creator();
         Submit submit = (Submit) creator.newInstance(Submit.class, new Object[]
-        { "listener", listener, "defer", Boolean.TRUE, "listenerInvoker",
+        { "action", action, "listenerInvoker",
                 new ListenerInvokerTerminator() });
 
         replayControls();
@@ -367,7 +367,7 @@
 
         verifyControls();
 
-        listener.actionTriggered(submit, cycle);
+        action.actionTriggered(submit, cycle);
 
         replayControls();
 
@@ -376,9 +376,9 @@
         verifyControls();
     }
 
-    public void testTriggerWithDeferredListenerAndSingleParameter()
+    public void testTriggerWithActionAndSingleParameter()
     {
-        IActionListener listener = newListener();
+        IActionListener action = newListener();
         MockForm form = new MockForm();
         MockControl cycleControl = newControl(IRequestCycle.class);
         IRequestCycle cycle = (IRequestCycle) cycleControl.getMock();
@@ -386,7 +386,7 @@
         Object parameter = new Object();
         Creator creator = new Creator();
         Submit submit = (Submit) creator.newInstance(Submit.class, new Object[]
-        { "listener", listener, "defer", Boolean.TRUE, "parameters", parameter, "listenerInvoker",
+        { "action", action, "parameters", parameter, "listenerInvoker",
                 new ListenerInvokerTerminator() });
 
         cycle.setListenerParameters(new Object[]
@@ -399,7 +399,7 @@
 
         verifyControls();
 
-        listener.actionTriggered(submit, cycle);
+        action.actionTriggered(submit, cycle);
 
         replayControls();
 
@@ -408,9 +408,9 @@
         verifyControls();
     }
 
-    public void testTriggerWithDeferredListenerAndMultipleParameters()
+    public void testTriggerWithDActionAndMultipleParameters()
     {
-        IActionListener listener = newListener();
+        IActionListener action = newListener();
         MockForm form = new MockForm();
         MockControl cycleControl = newControl(IRequestCycle.class);
         IRequestCycle cycle = (IRequestCycle) cycleControl.getMock();
@@ -421,7 +421,7 @@
 
         Creator creator = new Creator();
         Submit submit = (Submit) creator.newInstance(Submit.class, new Object[]
-        { "listener", listener, "defer", Boolean.TRUE, "parameters", parameters, "listenerInvoker",
+        { "action", action, "parameters", parameters, "listenerInvoker",
                 new ListenerInvokerTerminator() });
 
         cycle.setListenerParameters(new Object[]
@@ -434,7 +434,37 @@
 
         verifyControls();
 
+        action.actionTriggered(submit, cycle);
+
+        replayControls();
+
+        form.runDeferred();
+
+        verifyControls();
+    }
+    
+    public void testTriggerWithListenerAndAction()
+    {
+        IActionListener listener = newListener();
+        IActionListener action = newListener();
+        
+        MockForm form = new MockForm();
+        IRequestCycle cycle = newCycle();
+
+        Creator creator = new Creator();
+        Submit submit = (Submit) creator.newInstance(Submit.class, new Object[]
+        { "listener", listener, "action", action, "listenerInvoker",
+                new ListenerInvokerTerminator() });
+
         listener.actionTriggered(submit, cycle);
+        
+        replayControls();
+
+        submit.handleClick(cycle, form);
+
+        verifyControls();
+
+        action.actionTriggered(submit, cycle);
 
         replayControls();
 
@@ -442,4 +472,5 @@
 
         verifyControls();
     }
+    
 }

Modified: jakarta/tapestry/trunk/status.xml
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/status.xml?rev=291266&r1=291265&r2=291266&view=diff
==============================================================================
--- jakarta/tapestry/trunk/status.xml (original)
+++ jakarta/tapestry/trunk/status.xml Sat Sep 24 02:28:17 2005
@@ -72,6 +72,7 @@
       <action type="fix" dev="DS" fixes-bug="TAPESTRY-488, TAPESTRY-494, TAPESTRY-513">Document DateField, NumericField, ValidatingTextField components</action>
       <action type="add" dev="HLS" fixes-bug="TAPESTRY-661">Add @Meta annotation, for defining meta data</action>
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-665">The @ComponentClass annotation is not inherited by sub-classes</action>
+      <action type="fix" dev="MB" fixes-bug="TAPESTRY-666">The 'defer' parameter of Submit, LinkSubmit, and ImageSubmit with default of 'true' tends to cause user issues</action>
     </release>
     <release version="4.0-beta-7" date="Sep 17 2005">
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-341">Need better line-precise reporting for listener methods</action>



---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org