beehive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rich Feit <richf...@gmail.com>
Subject Re: inheriting pages in page flows
Date Fri, 24 Jun 2005 16:20:41 GMT
Great... thanks for digesting this and giving feedback.
Rich

John Rohrlich wrote:

>As you said originally, "it seems like a good start". 
>
>-----Original Message-----
>From: Rich Feit [mailto:richfeit@gmail.com] 
>Sent: Friday, June 24, 2005 9:48 AM
>To: Beehive Developers
>Subject: Re: inheriting pages in page flows
>
>Right, this is the difference between what you originally suggested 
>(which is more desirable) and what I described as "possible".  Your 
>summary is correct for the case you described, but the feature is
>broader:
>
>    - If inheritLocalPaths=true, then any path obtained from a 
>@Jpf.Forward/@Jpf.SimpleAction will be relative to the page flow that 
>contains the @Jpf.Forward/@Jpf.SimpleAction.
>
>In your case #2, you get a 404 response to the browser.
>
>Rich
>
>John Rohrlich wrote:
>
>  
>
>>I understand that the forwards are not inherited. The case I'm
>>describing is a bit different from yours. I'll use yours as a starting
>>point.
>>
>>Let's change 
>>   @Jpf.Action(
>>       forwards={
>>           @Jpf.Forward(name="complex2", path="derived_complex2.jsp")
>>       }
>>   )
>>
>>to
>>
>>   @Jpf.Action(
>>       forwards={
>>           @Jpf.Forward(name="complex2", path="base_complex2.jsp")
>>       }
>>   )
>>
>>The important point here is that the action is overridden but the path
>>remains the same (still base_complex2.jsp). The behavior I want is
>>1 - if base_complex2.jsp is in the directory of the derived page flow
>>    
>>
>it
>  
>
>>is used
>>2 - if base_complex2.jsp is not in the directory of the derived page
>>flow it is located in the directory of the base page flow
>>
>>If I understand your previous email the behavior I'm looking for isn't
>>possible. So, here is a question that might clear up my confusion. What
>>happens in each of these cases if you set inheritLocalPaths=true? I
>>believe the answer is that case 2 throws a PageNotFoundException.
>>
>>Here is what I believe is the summary of what you are providing with
>>your solution:
>>- If inheritLocalPaths=false all pages must reside in the same package
>>as the extending page flow
>>- If inheritLocalPaths=true a page can reside in the package of the
>>    
>>
>base
>  
>
>>Controller if the action is not overridden.
>>
>>This is certainly a big improvement over what we now have.
>>
>>john
>>
>>-----Original Message-----
>>From: Rich Feit [mailto:richfeit@gmail.com] 
>>Sent: Thursday, June 23, 2005 5:44 PM
>>To: Beehive Developers
>>Subject: Re: inheriting pages in page flows
>>
>>I think the confusion is about what paths are inherited.  Forwards (and
>>    
>>
>
>  
>
>>SimpleActions) are the only things that specify paths.  If you override
>>    
>>
>
>  
>
>>an inherited action, you wouldn't be inheriting its forwards at all, so
>>    
>>
>
>  
>
>>you'd only have the ones you defined on the inherited action.  Here's
>>    
>>
>an
>  
>
>>example:
>>
>>/base/BaseController.jpf:
>>---
>>@Jpf.Controller(
>>   simpleActions={
>>       @Jpf.SimpleAction(name="simple1", path="base_simple1.jsp"),
>>       @Jpf.SimpleAction(name="simple2", path="base_simple2.jsp")
>>   }
>>)
>>public class BaseController
>>{
>>   @Jpf.Action(
>>       forwards={
>>           @Jpf.Forward(name="complex1", path="base_complex1.jsp")
>>       }
>>   )
>>   public Forward complex1()
>>   {
>>       ...
>>   }
>>
>>   @Jpf.Action(
>>       forwards={
>>           @Jpf.Forward(name="complex2", path="base_complex2.jsp")
>>       }
>>   )
>>   public Forward complex2()
>>   {
>>       ...
>>   }
>>}
>>
>>/derived/DerivedController.jpf:
>>---
>>@Jpf.Controller(
>>   simpleActions={
>>       @Jpf.SimpleAction(name="simple2", path="derived_simple2.jsp")
>>   },
>>   inheritLocalPaths=true
>>)
>>public class BaseController
>>{
>>   @Jpf.Action(
>>       forwards={
>>           @Jpf.Forward(name="complex2", path="derived_complex2.jsp")
>>       }
>>   )
>>   public Forward complex2()
>>   {
>>       ...
>>   }
>>}
>>
>>
>>Here's a table of actions/destinations (all actions being raised in the
>>    
>>
>
>  
>
>>context of /derived):
>>
>>   simple1       /base/base_simple1.jsp
>>   complex1      /base/base_complex1.jsp
>>   simple2       /derived/derived_simple2.jsp
>>   complex2      /derived/derived_complex2.jsp
>>
>>Does this answer your question?
>>
>>Rich  
>>
>>John Rohrlich wrote:
>>
>> 
>>
>>    
>>
>>>By at that level I mean in the directory of the page flow with the
>>>overriding action.
>>>
>>>also see inline comment
>>>
>>>- john
>>>
>>>-----Original Message-----
>>>From: Rich Feit [mailto:richfeit@gmail.com] 
>>>Sent: Thursday, June 23, 2005 2:59 PM
>>>To: Beehive Developers
>>>Subject: Re: inheriting pages in page flows
>>>
>>>I'm not sure what you mean by "at that level" -- are you asking
>>>      
>>>
>whether
>  
>
>>>   
>>>
>>>      
>>>
>> 
>>
>>    
>>
>>>overriding an action implies that you have to create a JSP that's 
>>>associated with the derived page flow?  If so, the answer is no -- 
>>>that's the whole point behind the idea of inheriting JSPs.  But I'm 
>>>probably misunderstanding what you're asking.  :)
>>>
>>>[JR] If the answer is no then I'm not sure how this is different from
>>>what I originally suggested. If you don't need to add a JSP if you
>>>override then how do you know if the local path is present? You are
>>>suggesting that the annotation be at the class level which leaves open
>>>the possibility that some JSPs will be local and some will be in the
>>>directory of the base class page flow.
>>>
>>>Suppose you have two actions that you override. In case one you
>>>      
>>>
>forward
>  
>
>>>to foo.jsp which is found local to the base page flow. In case two you
>>>forward to bar.jsp and you add a bar.jsp in the directory of the
>>>extending page flow
>>>
>>>baseFlow/
>>>		foo.jsp
>>>		bar.jsp
>>>extendingFlow/
>>>		bar.jsp
>>>
>>>>>From what you've said so far I'm not certain what happens. I belive
>>>   
>>>
>>>      
>>>
>>that
>> 
>>
>>    
>>
>>>if I set inheritLocalPaths=false then the action forwarding to foo.jsp
>>>will fail from the extending page flow. If I set
>>>      
>>>
>inheritLocalPaths=true
>  
>
>>>then I would expect foo.jsp to be found. But what about the action
>>>forwarding to bar.jsp? I assume that I get the one in the extending
>>>   
>>>
>>>      
>>>
>>flow
>> 
>>
>>    
>>
>>>directory in both cases (true or false). 
>>>
>>>If you don't follow this maybe you could set up your own example to
>>>better explain your design.
>>>
>>>thanks - john
>>>
>>>
>>>John Rohrlich wrote:
>>>
>>>
>>>
>>>   
>>>
>>>      
>>>
>>>>So are you saying that overriding an action means also adding a jsp
>>>>        
>>>>
>at
>  
>
>>>>that level?
>>>>
>>>>- john
>>>>
>>>>-----Original Message-----
>>>>From: Rich Feit [mailto:richfeit@gmail.com] 
>>>>Sent: Thursday, June 23, 2005 2:44 PM
>>>>To: Beehive Developers
>>>>Subject: Re: inheriting pages in page flows
>>>>
>>>>Hi John,
>>>>
>>>>I agree that this would be ideal, but I don't think it's possible 
>>>>(should have made it clear in the original email).  There's no way at
>>>>        
>>>>
>
>  
>
>>>>build time to know for certain whether a local path is "present", and
>>>>        
>>>>
>
>  
>
>>>>there's also no way at runtime to know if it's "present" beyond
>>>>        
>>>>
>trying
>  
>
>>>>     
>>>>
>>>>        
>>>>
>> 
>>
>>    
>>
>>>>to hit it and looking for a 404 result.  This is true for JSPs as
>>>>        
>>>>
>well
>  
>
>>>>     
>>>>
>>>>        
>>>>
>> 
>>
>>    
>>
>>>>as for other arbitrary Servlet paths.
>>>>
>>>>Rich
>>>>
>>>>John Rohrlich wrote:
>>>>
>>>>
>>>>
>>>>  
>>>>
>>>>     
>>>>
>>>>        
>>>>
>>>>>A good start Rich, but I'd like to see some additional behavior.
>>>>>
>>>>>Allow action overrides to use pages local to the overridden actions
>>>>> 
>>>>>
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>>page
>>>>
>>>>
>>>>  
>>>>
>>>>     
>>>>
>>>>        
>>>>
>>>>>flow directory if the page is not found local to the overriding
>>>>>       
>>>>>
>>>>>          
>>>>>
>>class.
>> 
>>
>>    
>>
>>>>>This should work for n levels of inheritance. If class B extends
>>>>>       
>>>>>
>>>>>          
>>>>>
>>class
>> 
>>
>>    
>>
>>>>>C, and class A extends class B, and both extending classes override
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>the
>>>
>>>
>>>   
>>>
>>>      
>>>
>>>>>same action then you would first look for a jsp in A's directory. If
>>>>> 
>>>>>
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>>you
>>>>
>>>>
>>>>  
>>>>
>>>>     
>>>>
>>>>        
>>>>
>>>>>didn't find the jsp you would look in B's directory and then finally
>>>>> 
>>>>>
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>>C's
>>>>
>>>>
>>>>  
>>>>
>>>>     
>>>>
>>>>        
>>>>
>>>>>directory.
>>>>>
>>>>>- john
>>>>>
>>>>>
>>>>>
>>>>>-----Original Message-----
>>>>>From: Rich Feit [mailto:richfeit@gmail.com] 
>>>>>Sent: Thursday, June 23, 2005 11:13 AM
>>>>>To: Beehive Developers
>>>>>Subject: inheriting pages in page flows
>>>>>
>>>>>Hi all,
>>>>>
>>>>>I'd like some design feedback here.  
>>>>>http://issues.apache.org/jira/browse/BEEHIVE-400 deals with a
>>>>> 
>>>>>
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>>much-asked
>>>>
>>>>
>>>>  
>>>>
>>>>     
>>>>
>>>>        
>>>>
>>>>>question: if you have a page flow that inherits from another page
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>flow,
>>>
>>>
>>>   
>>>
>>>      
>>>
>>>>> 
>>>>>
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>>  
>>>>
>>>>     
>>>>
>>>>        
>>>>
>>>>>how can you also inherit pages from the base page flow?  Currently, 
>>>>>there's no good way to do it, which is an obvious hole.  My thought
>>>>>       
>>>>>
>>>>>          
>>>>>
>>is
>> 
>>
>>    
>>
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>   
>>>
>>>      
>>>
>>>>>to do something really simple (from the user's point of view :) ),
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>like
>>>
>>>
>>>   
>>>
>>>      
>>>
>>>>> 
>>>>>
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>>  
>>>>
>>>>     
>>>>
>>>>        
>>>>
>>>>>have a class-level annotation attribute:
>>>>>
>>>>>inheritLocalPaths=true
>>>>>
>>>>>This would cause local paths in *inherited* actions to be used in
>>>>>          
>>>>>
>the
>  
>
>>>>>       
>>>>>
>>>>>          
>>>>>
>> 
>>
>>    
>>
>>>>>context of the current page flow.  I think this might be sufficient,
>>>>> 
>>>>>
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>>and
>>>>
>>>>
>>>>  
>>>>
>>>>     
>>>>
>>>>        
>>>>
>>>>>even if it turns out it's not, it seems like a good start.  Any 
>>>>>thoughts/comments on this?
>>>>>
>>>>>Thanks,
>>>>>Rich
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> 
>>>>>
>>>>>    
>>>>>
>>>>>       
>>>>>
>>>>>          
>>>>>
>>>>  
>>>>
>>>>     
>>>>
>>>>        
>>>>
>>>
>>>   
>>>
>>>      
>>>
>>
>> 
>>
>>    
>>
>
>
>
>  
>

Mime
View raw message