On Tue, 2007-07-03 at 08:27 +0200, Kristian Marinkovic wrote: > > just remove the InjectService annotation from your service > method and try it again :) Cool, really easy :)
Thanx a lot, cheers, Martin > > > > Martin Grotzke > <[EMAIL PROTECTED]> > > 02.07.2007 16:50 > Bitte antworten an > "Tapestry users" > <users@tapestry.apache.org> > > > > > An > Tapestry users > <users@tapestry.apache.org> > Kopie > > Thema > Re: Antwort: RE: > T5 Decoupling a > Template >From > its Component > Class > > > > > > > > > On Mon, 2007-07-02 at 16:06 +0200, Kristian Marinkovic wrote: > > > > service implementations contributed to the alias service will > > override the other service implementations. this is also true for > > implementations originally provided by tapestry > > > > the additional id is to distinguish multiple implementations of the > > same interface. in your case you should only need it twice: > > 1) to define your service > > 2) to contribute to the alias service.... then you can forget it :) > > If I understand you correctly, you say that > > public static PageResponseRenderer decoratePageResponseRenderer( > @InjectService("PageMarkupRenderer") > final PageMarkupRenderer markupRenderer, > @InjectService("MarkupWriterFactory") > final MarkupWriterFactory markupWriterFactory, > final Object delegate ) > > should provide our custom MarkupWriterFactory? > This is not the fact - with @InjectService("MarkupWriterFactory") > T5 provides its MarkupWriterFactoryImpl and not our custom > MarkupWriterFactory. > Did I understand you wrong, or is this a "bug" in T5? > > Cheers, > Martin > > > > > > > g, > > kris > > > > > > > > Martin Grotzke > > <[EMAIL PROTECTED]> > > > > 02.07.2007 14:10 > > Bitte antworten an > > "Tapestry users" > > <users@tapestry.apache.org> > > > > > > > > > > An > > Tapestry users > > <users@tapestry.apache.org> > > Kopie > > > > Thema > > RE: T5 Decoupling > > a Template From > > its Component > > Class > > > > > > > > > > > > > > > > > > On Mon, 2007-07-02 at 11:03 +0200, Kristian Marinkovic wrote: > > > > > > hi martin, > > > > > > if you use the ServiceBinder to contribute a class that implements > > an > > > already > > > "contributed" interface you have to assign an id for your class by > > > invoking withId, > > > because the Interface is no longer sufficient to identifiy the > > service > > > > > > binder.bind(PageTemplateLocator.class, > > > MyPageTemplateLocatorImpl.class).withId("myLocator"); > > > > > > furthermore you have to contribute to the aliasOverrides Service > > > to actually replace the old implementation: > > > > > > public static void contributeAliasOverrides( > > > @InjectService("myLocator") PageTemplateLocator > > locator, > > > Configuration<AliasContribution> configuration) { > > > > > > configuration.add( > > > AliasContribution.create( > > > PageTemplateLocator.class, locator)); > > > > Great, this works - thanx a lot! > > > > Just for clarification: the specified id has to be used anywhere > else, > > right? E.g. for us the service in question is the > MarkupWriterFactory, > > and previously we also had this in our AppModule: > > > > public static PageResponseRenderer decoratePageResponseRenderer( > > @InjectService("PageMarkupRenderer") > > final PageMarkupRenderer markupRenderer, > > @InjectService("MarkupWriterFactory") > > final MarkupWriterFactory markupWriterFactory, > > final Object delegate ) > > > > which we have to change to @InjectService("myMarkupWriterFactory") > > then. > > Is this the intended way? Is it guaranteed, that T5 does not > reference > > the MarkupWriterFactory implementation by the id > > "MarkupWriterFactory"? > > > > Thanx && cheers, > > Martin > > > > > > > > > > > > > g, > > > kris > > > > > > > > > > > > Martin Grotzke > > > <[EMAIL PROTECTED]> > > > > > > 02.07.2007 10:00 > > > Bitte antworten an > > > "Tapestry users" > > > <users@tapestry.apache.org> > > > > > > > > > > > > > > > An > > > Tapestry users > > > <users@tapestry.apache.org> > > > Kopie > > > > > > Thema > > > RE: T5 Decoupling > > > a Template From > > > its Component > > > Class > > > > > > > > > > > > > > > > > > > > > > > > > > > > Digging through the code I notice there is a PageTemplateLocator > > > > interface which seems like the appropriate service to override. > > What > > > I > > > > have tried is to add the following method to my AppModule > > class.... > > > > > > > > > > > > public static void bind(ServiceBinder binder) { > > > > ServiceBindingOptions options = > > > > binder.bind( > > > > > > > PageTemplateLocator.class, > > > > > > > MyPageTemplateLocatorImpl.class > > > > ); > > > > } > > > > > > > > > > > > ...but I get the following exception at startup..... > > > > > > > > > > > > java.lang.RuntimeException: Service id 'PageTemplateLocator' has > > > already > > > > been defined by > > > > > > Did you solve this issue? I get the same exception with another > > > Service > > > that's defined in TapestryModule that I want to override in my > > > AppModule > > > with my custom implementation... > > > > > > Thx && cheers, > > > Martin > > > > > > > > > On Wed, 2007-05-30 at 19:17 -0700, David Kendall wrote: > > > > > From: Howard Lewis Ship [mailto:[EMAIL PROTECTED] > > > > > Sent: Wednesday, May 30, 2007 5:15 PM > > > > > There are internal services that can be overridden to handle > > > those > > > > > kinds of situations. > > > > > The goal is to create something that works amazingly well for > > all > > > > > the more typical cases, then start going after these others. > > > Often > > > > > it will involve moving a private interface out into the public > > > space > > > > .. > > > > > > > > > > > > > > > > > > > > Thanks Howard - I appreciate your prompt response. However - I > am > > > not > > > > clear if you are saying it cannot be done currently - or if you > > mean > > > > that it can be done - but that I would be treading on somewhat > > > unstable > > > > ground given that the internal interfaces are subject to change. > > > > > > > > Digging through the code I notice there is a PageTemplateLocator > > > > interface which seems like the appropriate service to override. > > What > > > I > > > > have tried is to add the following method to my AppModule > > class.... > > > > > > > > > > > > public static void bind(ServiceBinder binder) { > > > > ServiceBindingOptions options = > > > > binder.bind( > > > > > > > PageTemplateLocator.class, > > > > > > > MyPageTemplateLocatorImpl.class > > > > ); > > > > } > > > > > > > > > > > > ...but I get the following exception at startup..... > > > > > > > > > > > > java.lang.RuntimeException: Service id 'PageTemplateLocator' has > > > already > > > > been defined by > > > > > > > > > > org.apache.tapestry.internal.services.InternalModule.build(AssetFactory, > > > > ComponentClassResolver) (at InternalModule.java:231) and may not > > be > > > > redefined by > > > > org.example.myapp.services.AppModule$MyPageTemplateLocatorImpl() > > (at > > > > AppModule.java:159). You should rename one of the service > builder > > > > methods. > > > > > > > > > > > > > > > > > > > > Am I wasting my time trying this? I can tolerate a certain > amount > > of > > > > instability when pulling in subsequent revisions of Tap5 - > however > > - > > > I > > > > would like to get a proof of concept up and running if at all > > > possible. > > > > > > > > Any thoughts on this? > > > > > > > > Thanks again. > > > > > > > > David Kendall > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > -- > > > Martin Grotzke > > > http://www.javakaffee.de/blog/ > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > -- > > Martin Grotzke > > http://www.javakaffee.de/blog/ > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > -- > Martin Grotzke > http://www.javakaffee.de/blog/ > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] -- Martin Grotzke http://www.javakaffee.de/blog/
signature.asc
Description: This is a digitally signed message part