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]