tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Howard M. Lewis Ship (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (TAP5-1736) Overriding a base class abstract event handler method causes the sub-class method to be invoked twice
Date Mon, 01 Sep 2014 23:18:20 GMT

     [ https://issues.apache.org/jira/browse/TAP5-1736?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Howard M. Lewis Ship updated TAP5-1736:
---------------------------------------
    Summary: Overriding a base class abstract event handler method causes the sub-class method
to be invoked twice  (was: Overridden base class methods causing a second submit)

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

Mime
View raw message