You are absolutely right Howard. That's the case. All the pages are
scanned at startup time to look for the @At annotation and to build
the routes map.
If you want to avoid the "scanning" phase you can, but you will need
to contribute, one by one, all your @At annotated pages to the
Dispatcher.
I don't have any experiences with projects with hundreds of pages nor
clustering, that's why I didn't take that into account. I'm using it
and I took the time to sharing it because I thought it could be useful
for some else, there is a lot of scenarios where having this level of
customization in your URLs could be interesting even if we have to pay
a little performance penalty. Of course there are scenarios where this
shouldn't be used at all, for instance in a clustered environment. I
will add these comments to the wiki so all users are warned.

Cheers.
Alejandro.

On Tue, Mar 29, 2011 at 5:53 PM, Howard Lewis Ship <hls...@gmail.com> wrote:
> I've never put a feature such as this into Tapestry core, because it
> seems to me that you have to, at start up, locate and load all page
> classes to find the @At annotation (something I'd rather not do,
> because a Tapestry application might have hundreds of pages, and I
> don't want to pay that startup cost).  Is that the case?  If not, in a
> cluster, how to you recognize the routing for a page that has not yet
> been loaded?
>
> On Tue, Mar 29, 2011 at 12:38 AM, Alejandro Scandroli
> <alejandroscandr...@gmail.com> wrote:
>> From the same guys that brought you tapestry-exceptionpage,
>> tapestry-model, tapestry-resteasy, tapestry-security,
>> tynamo-federatedaccounts and other beautiful little modules, here
>> comes yet another beautiful little module called tapestry-routing.
>>
>> In a nutshell, tapestry-routing allows you to provide your own custom
>> mapping between Tapestry pages and URLs.
>>
>> Did you ever wanted to change the order of the path params in an URL?
>> now you can!
>>
>> Let's say you have a page: pages.projects.Members which have 2
>> parameters in its activation context: (Long projectId, Long memberId)
>> and you want the URL for that page to look like /projects/1/members/1
>> Just add the @At annotation to you page, like this:
>>
>> package ...pages.projects;
>> @At(" /projects/{0}/members/{1}")
>> public class Members {
>> void onActivate(Long projectId, Long memberId)
>>
>> That's it!
>> tapestry-routing Dispatcher will take care of recognizing incoming
>> requests and dispatching the proper render request
>> tapestry-routing PageRenderLinkTransformer will do the rest of the
>> work, it will transform every Link for a page render request
>> formatting it according to your route rule.
>>
>> We really need some feedback, so please give it a try:
>> http://tynamo.org/tapestry-routing+guide
>>
>> Enjoy,
>> Tynamo Team
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>
>>
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>
> ---------------------------------------------------------------------
> 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

Reply via email to