[ https://issues.apache.org/jira/browse/TAP5-1284?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13131831#comment-13131831 ]
Alexander Gavrilov edited comment on TAP5-1284 at 10/20/11 5:49 PM: -------------------------------------------------------------------- Why old? Did Java deprecate inheritance? I don't think so. If we have 500 pages that require access to the same data, why can't i create fields with accessor for this data in the base class and just use them in child pages? I think we should concentrate on fixing framework behavior instead of declare common practices as deprecated. Maybe this issues is to hard to fix? was (Author: lucker): Why old? Did Java deprecate inheritance? I don't think so. If we have 500 pages that requires access to the same data, why can't i create fields with accessor for this data in the base class and just use them in child pages? I think we should concentrate on fixing framework behavior instead of declare common practices as deprecated. Maybe this issues is to hard to fix? > 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 > > 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. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira