Lifecycle of a tapestry request and the MarkupRendererFilter

2009-10-15 Thread Ian Petzer
Hi,

 

I have been successfully using the CacheControlMarkupRenderer from the
ioko-tapestry-commons
http://tapestry.formos.com/projects/ioko-tapestry-commons/  library.
This is a java class that implements the MarkupRendererFilter and
Partial MarkupRendererFilter in order to apply caching headers to pages
served by our application.

 

This is all working wonderfully, however we now have a component which
is returning a StreamResponse object out of the onActivate method of the
component. This of course does not invoke the renderMarkup(MarkupWriter
writer, MarkupRenderer renderer) method on the
CacheControlMarkupRenderer as it is not markup.

 

Is there an equivalent filter we could use that would enable us to set
headers on the Response object but would be applied to both
StreamResponse objects as well as the output from normal components with
markup in a tml file.

 

Thanks,

Ian



RE: Lifecycle of a tapestry request and the MarkupRendererFilter

2009-10-15 Thread Ian Petzer
Hi,

We do actually have a load balanced caching system sitting in front our
app server, however we control the caching behaviour by setting headers
on the HTTP responses.

For example in this particular case we need to set:
response.setHeader(CACHE_CONTROL_HEADER,
no-cache);
response.setHeader(PRAGMA_HEADER,
No-Cache);





-Original Message-
From: cordenier christophe [mailto:christophe.corden...@gmail.com] 
Sent: 15 October 2009 14:58
To: Tapestry users
Subject: Re: Lifecycle of a tapestry request and the
MarkupRendererFilter

Hello
From my point of view this kind of caching mechanism should be done in
front
of your application server.

Regards
Christophe.

2009/10/15 Ian Petzer ian.pet...@ioko.com

 Hi,



 I have been successfully using the CacheControlMarkupRenderer from the
 ioko-tapestry-commons
 http://tapestry.formos.com/projects/ioko-tapestry-commons/  library.
 This is a java class that implements the MarkupRendererFilter and
 Partial MarkupRendererFilter in order to apply caching headers to
pages
 served by our application.



 This is all working wonderfully, however we now have a component which
 is returning a StreamResponse object out of the onActivate method of
the
 component. This of course does not invoke the
renderMarkup(MarkupWriter
 writer, MarkupRenderer renderer) method on the
 CacheControlMarkupRenderer as it is not markup.



 Is there an equivalent filter we could use that would enable us to set
 headers on the Response object but would be applied to both
 StreamResponse objects as well as the output from normal components
with
 markup in a tml file.



 Thanks,

 Ian



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



RE: Lifecycle of a tapestry request and the MarkupRendererFilter

2009-10-15 Thread Ian Petzer
Hi,

This is exactly how I am currently setting the headers, however I don't
want to do this on an individual basis for all StreamResponses. 

What I'm looking for a is a filter or similar mechanism that can be used
to post-process all responses irrespective of whether they are
StreamResponse objects or the output from normal components with markup
in a tml file. Essentially a filter like the MarkupRendererFilter that
works on StreamResponses as well

Thanks
Ian



-Original Message-
From: cordenier christophe [mailto:christophe.corden...@gmail.com] 
Sent: 15 October 2009 15:31
To: Tapestry users
Subject: Re: Lifecycle of a tapestry request and the
MarkupRendererFilter

What not using the prepareResponse of the StreamResponse Tapestry
interface
to set headers ?

2009/10/15 Ian Petzer ian.pet...@ioko.com

 Hi,

 We do actually have a load balanced caching system sitting in front
our
 app server, however we control the caching behaviour by setting
headers
 on the HTTP responses.

 For example in this particular case we need to set:

response.setHeader(CACHE_CONTROL_HEADER,
 no-cache);
response.setHeader(PRAGMA_HEADER,
 No-Cache);





 -Original Message-
 From: cordenier christophe [mailto:christophe.corden...@gmail.com]
 Sent: 15 October 2009 14:58
 To: Tapestry users
 Subject: Re: Lifecycle of a tapestry request and the
 MarkupRendererFilter

 Hello
 From my point of view this kind of caching mechanism should be done in
 front
 of your application server.

 Regards
 Christophe.

 2009/10/15 Ian Petzer ian.pet...@ioko.com

  Hi,
 
 
 
  I have been successfully using the CacheControlMarkupRenderer from
the
  ioko-tapestry-commons
  http://tapestry.formos.com/projects/ioko-tapestry-commons/
library.
  This is a java class that implements the MarkupRendererFilter and
  Partial MarkupRendererFilter in order to apply caching headers to
 pages
  served by our application.
 
 
 
  This is all working wonderfully, however we now have a component
which
  is returning a StreamResponse object out of the onActivate method of
 the
  component. This of course does not invoke the
 renderMarkup(MarkupWriter
  writer, MarkupRenderer renderer) method on the
  CacheControlMarkupRenderer as it is not markup.
 
 
 
  Is there an equivalent filter we could use that would enable us to
set
  headers on the Response object but would be applied to both
  StreamResponse objects as well as the output from normal components
 with
  markup in a tml file.
 
 
 
  Thanks,
 
  Ian
 
 

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Deep linking to tapestry pages from jps. Conversion

2008-10-27 Thread Ian Petzer
Hi Howard,

Unfortantely this approach of encoding the information is request params is
not really ideal.

As Russel has said, we are halfway through converting our application. We
have created Tapestry pages to supply some new functionality (various RSS
feeds in this case) however we need to link to this functionality from
existing jsp pages which haven't been converted yet and new tapestry pages.
The new tapestry pages are a doddle as we can simply use a pageLink and pass
through the relative url as a param in the context for the actionLink.

What I'm really looking for is guidance on hwo to create a Link to mimic
what is created by the pageLink component. Even if you could just point me
at the right class which encodes the param values and introduces the special
behaviour for slashes in param values being double encoded.

Thanks for your help,
Ian

On Mon, Oct 27, 2008 at 10:32 AM, Russell Brown [EMAIL PROTECTED]wrote:

 Hi Borut,
 We are migrating a Struts app at the moment so if you have any specific
 questions about stuff then fire away as we _may_ have solved one or two
 problems that you might face already.

 Such a guide would be a good idea: it is ideal to start a nice new app with
 a nice new framework but in the real world most people are working on legacy
 applications and migration is the normal use case. If T5 wants any real
 penetration then thinking about migrating users from Struts to T5 is a must.
 Although it is essentially a marketing problem and most developers
 struggle with marketing.

 Cheers

 Russell

 -Original Message-
 From: Borut BolĨina [mailto:[EMAIL PROTECTED]
 Sent: 24 October 2008 21:04
 To: Tapestry users
 Subject: Re: Deep linking to tapestry pages from jps. Conversion

 Hi,

 it would be great if there was also a JSP transition guide. We have a large
 JSP application at the moment and my intention is to replace it gradually
 with Tapestry 5. Any advice on how to do it *the right way* would be more
 than welcome!

 Regards,
 Borut

 2008/10/24 Howard Lewis Ship [EMAIL PROTECTED]

  For deep linking purposes, could you pass the information as normal
  query parameters?
 
  You could then @Inject the Request object to retrieve those values.
  You can also use the ContextValueEncoder service to decode them to
  appropriate types.
  This work would be done in the page's activate event handler method.
 
  This is a more servlet-style of development, which may be the right
  approach for a transitional application.
 
  On Thu, Oct 23, 2008 at 8:33 AM, Ian Petzer [EMAIL PROTECTED] wrote:
   Hi,
  
   We are busy converting our Struts/Tiles based application to Tapestry.
  Until
   this is complete I have am required to generate links to the new
 Tapestry
   pages correctly from the jsp pages.
  
   Normally this isn't a problem as I used the url pattern of:
   HOST/PAGE/PARAM1/PARAM2/PARAM3
  
   Now, please consider the situation where my params have following
 values:
  
   PARAM1 = Hello
   PARAM2 = relative/url
   PARAM3 = colon:seperated
  
   So if I follow my previous url pattern i would get
  
   HOST/PAGE/Hello/relative/url/colon:seperated
  
   This of course doesn't work as that url is interpreted as having four
   params: [Hello, relative, url, colon:seperated] instead of the three
 that
  I
   define.
  
   When I use a pageLink object on Tapestry pages this isn't a problem as
   param2 is double url encoded, so that relative/url -- relative%252Furl
  
   However the colon in param3 isn't double url encoded.
  
   I would really appreciate it if someone could indicate the rules which
  are
   used when forming these urls or if someone could suggest an approach to
   generate these urls. Possibly a reverse @Inject of the relevant
 Tapestry
   object into my Spring service where I could call a method to convert
 the
   context values.
  
   Thanks,
   Ian
  
 
 
 
  --
  Howard M. Lewis Ship
 
  Creator Apache Tapestry and Apache HiveMind
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 



Deep linking to tapestry pages from jps. Conversion

2008-10-23 Thread Ian Petzer
Hi,

We are busy converting our Struts/Tiles based application to Tapestry. Until
this is complete I have am required to generate links to the new Tapestry
pages correctly from the jsp pages.

Normally this isn't a problem as I used the url pattern of:
HOST/PAGE/PARAM1/PARAM2/PARAM3

Now, please consider the situation where my params have following values:

PARAM1 = Hello
PARAM2 = relative/url
PARAM3 = colon:seperated

So if I follow my previous url pattern i would get

HOST/PAGE/Hello/relative/url/colon:seperated

This of course doesn't work as that url is interpreted as having four
params: [Hello, relative, url, colon:seperated] instead of the three that I
define.

When I use a pageLink object on Tapestry pages this isn't a problem as
param2 is double url encoded, so that relative/url -- relative%252Furl

However the colon in param3 isn't double url encoded.

I would really appreciate it if someone could indicate the rules which are
used when forming these urls or if someone could suggest an approach to
generate these urls. Possibly a reverse @Inject of the relevant Tapestry
object into my Spring service where I could call a method to convert the
context values.

Thanks,
Ian