[
https://issues.apache.org/jira/browse/TAP5-1284?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Howard M. Lewis Ship updated TAP5-1284:
---------------------------------------
Fix Version/s: 5.2.2
(was: 5.2.1)
> When using @PageActivationContext and override a no-args activate event
> handler of parent page, the handler called too soon
> ---------------------------------------------------------------------------------------------------------------------------
>
> Key: TAP5-1284
> URL: https://issues.apache.org/jira/browse/TAP5-1284
> Project: Tapestry 5
> Issue Type: Bug
> Components: tapestry-core
> Affects Versions: 5.2.0
> Reporter: Alexander Gavrilov
> Assignee: Howard M. Lewis Ship
> Priority: Critical
> Fix For: 5.2.2
>
>
> It appears that the overrided onActivate() method is called before the
> @PageActivationContext logic, which means the following can fail:
> public class BasePage {
> private MyEntity entity;
>
> protected void setEntity(MyEntity entity) {
> this.entity = entity;
> }
>
> protected void onActivate() {
> if (entity == null) throw new RuntimeException("Entity not found.");
> }
> }
> public class ConcreteClass {
> @PageActivationContext
> private MyEntity entity;
> protected void onActivate() {
> setEntity(entity);
> super.onActivate();
> }
> }
> Workaround is do not use methods overriding.
> The problem is the consecuence of Howard's approach: "if the child class
> *overrides* a method of the parent, then the overridden method will be
> invoked only by the parent class". When Tapestry performs transformation it
> skips OnEventWorker advice, which invoke event handler method of subclass and
> add it only for parent class. And required for @PageActivationContext chain
> of invocation breaks. My approach is that if some class override some event
> handler method of some class then Tapestry should stop advaicing parent class
> method invocation and should rely on subclass method definition and is the
> subclass implementor responibility to invoke parent class method.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.