Duplicated calls with base class lifecycle methods
--------------------------------------------------

                 Key: TAPESTRY-2146
                 URL: https://issues.apache.org/jira/browse/TAPESTRY-2146
             Project: Tapestry
          Issue Type: Bug
          Components: Core Components
    Affects Versions: 5.0.9
            Reporter: angerclown


When using a base class with a component, any lifecycle method (pageDetached, 
pageLoaded, activate, etc) call is duplicated.  The core issue seems to be that 
both the base class and the page class are enhanced to make calls to lifecycle 
methods and the page class is then calling super.

For example:
package test.base;

public class TestBase {
    public void pageDetached() {
        System.out.println("Base Detached");
    }
}

package test.pages;
public class Test extends TestBase {
    @Override
    public void pageDetached() {
        super.pageDetached();
        System.out.println("Detached");
    }
}

The output will be:
Base Detached
Detached
Base Detached
Detached

Removing the super.pageDetached() call just outputs Detached twice.

Looking at the source for the both classes (after writing to disk and 
decompiling with jad):
Base Class
    public void containingPageDidDetach()
    {
        Object obj = null;
        pageDetached();
    }

Page Class
    public void containingPageDidDetach()
    {
        super.containingPageDidDetach();
        Object obj = null;
        pageDetached();
    }

This is not right since the event is called once for each page.  Either 1) the 
base class should not have these methods enhanced at all or 2) the enchanced 
page method should not call super. Option 1 seems a little more natural since 
that would imply you must make super calls in the non-enhanced page classes, 
i.e. the code you write and expect to call super in anyway.  With option 2, 
there would be more "magic" -- you don't call super in your page detached 
method, but super.pageDetached gets called anyway by the enhanced class when 
the event is received.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to