[ https://issues.apache.org/jira/browse/TAP5-1284?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Igor Drobiazko updated TAP5-1284: --------------------------------- Fix Version/s: (was: 5.2.5) > 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. For more information on JIRA, see: http://www.atlassian.com/software/jira