Anybody, any advice?

jeffrey ai wrote:
> 
> Hi Folks,
> 
> We have a need to provide personalized page for different user groups, so
> I tweaked some T5 services to make it possible to use personalized
> template based on a request parameter. 
> 
> I would like put the general idea here in case you guys are interested.
> Also since I have change some T5 internal services, I am wondering whether
> I have missed something. Your advice are quite welcome.
> 
> Basically, I decorated 2 T5 internal services -- ComponentTemplateSource
> and PagePool.
> * ComponentTemplateSource is responsible to look up templates, so I have
> changed it to request-aware and load template based on the user group.
> * PagePool is responsible to pool pages, so I have changed it to
> request-aware too and pool pages based on user group.
> 
> Although I used T5 decorator facility to intercept calls to both services,
> it's not real decorating behavior as defined in GoF pattern. My decorators
> will handle all calls, they won't even pass calls to decoratees -- the
> original services. I am a little concerned whether my tweak would have
> some side effects.
> 
> ---------- Code Snippet of my AppModule.java
>       public ComponentTemplateSource decorateComponentTemplateSource(
>                       Class<ComponentTemplateSource> serviceInterface, Object 
> delegate,
> String serviceId, Logger logger,
>                       TemplateParser parser, PageTemplateLocator locator, 
> RequestGlobals
> requestGlobals )
>       {
>               final MyComponentTemplateSourceImpl service = new
> MyComponentTemplateSourceImpl(
>                               parser, locator, requestGlobals );
> 
>               _updateListenerHub.addUpdateListener( service );
> 
>               return service;
>       }
> 
>       public PagePool decoratePagePool( Class<PagePool> serviceInterface,
> Object delegate, String serviceId,
>                       Logger logger, PageLoader pageLoader, ThreadLocale 
> threadLocale,
> ComponentClassResolver resolver,
>                       RequestGlobals requestGlobals, ThreadString 
> threadString,
>                       ComponentMessagesSource componentMessagesSource,
> ComponentTemplateSource componentTemplateSource )
>       {
>               final MyPagePoolImpl service = new MyPagePoolImpl( logger, 
> pageLoader,
> threadLocale,
>                               resolver, requestGlobals, threadString );
> 
>               // This covers invalidations due to changes to classes
> 
>               pageLoader.addInvalidationListener( service );
> 
>               // This covers invalidation due to changes to message catalogs
> (properties files)
> 
>               componentMessagesSource.addInvalidationListener( service );
> 
>               // ... and this covers invalidations due to changes to templates
> 
>               componentTemplateSource.addInvalidationListener( service );
> 
>               return service;
>       }
> ----------
> 
> Thanks for any advice.
> Jeffrey Ai
> 
> 

-- 
View this message in context: 
http://www.nabble.com/T5%3A-Personalizing-page-and-component-template-tf4925841.html#a14140075
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to