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#a14098291 Sent from the Tapestry - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]