[ 
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

        

Reply via email to