You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <ji...@apache.org> on 2014/09/02 01:19:21 UTC
[jira] [Closed] (TAP5-1736) Overriding a base class abstract event
handler method causes the sub-class method to be invoked twice
[ https://issues.apache.org/jira/browse/TAP5-1736?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Howard M. Lewis Ship closed TAP5-1736.
--------------------------------------
Resolution: Fixed
Fix Version/s: 5.4
> Overriding a base class abstract event handler method causes the sub-class method to be invoked twice
> -----------------------------------------------------------------------------------------------------
>
> Key: TAP5-1736
> URL: https://issues.apache.org/jira/browse/TAP5-1736
> Project: Tapestry 5
> Issue Type: Bug
> Components: tapestry-core
> Affects Versions: 5.3
> Reporter: Peter Stavrinides
> Assignee: Howard M. Lewis Ship
> Fix For: 5.4
>
>
> As of Tapestry 5.3.0 overridden base class methods are causing a second submit, behaviour not present in Tapestry 5.1:
> public abstract class BaseClass {
> public abstract Object onSuccessFromStep1();
> }
> public class SubClass extends BaseClass{
> @Override
> public Object onSuccessFromStep1() {
> if (!foundErrors())
> incrementStep();
> return null;
> }
> }
> onSuccessFromStep1() is invoked twice in this example... the simple workaround is to return true, but this will not suffice when handling objects.
> Comment from Howard:
> I suspect Tapestry is not recognizing that
> SubClass.onSuccessFromStep1() is an override of
> BaseClass.onSuccessFromStep1() (perhaps the abstract flag is throwing
> it).
> So, Tapestry builds code for BaseClass, and implements
> dispatchComponentEvent() to invoke onSuccessFromStep1().
> It then builds code for SubClass, sees onSuccessFromStep1(), doesn't
> think it's an override of the base class method (for whatever reason),
> and implements dispatchComponentEvent() to (a) invoke
> super.dispatchComponentEvent(), and (b) invoke onSuccessFromStep1().
> Thus two invocations.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)