Autowiring is a feature of HiveMind. HiveMind will autowire your constructor params and properties if it can.
-----Original Message----- From: Tat leung [mailto:[EMAIL PROTECTED] Sent: Friday, May 12, 2006 8:55 PM To: Tapestry users Subject: Re: Tapernate-Example HiveMindAutowireWorker Problem I am just wondering. Should the autowiring be part of HiveMind? It seems very useful feature for case where Tapestry is no there (not that anyone should). James Carman wrote: > It's already integrated into Tapestry 4.1 (due out soon). So, everyone can > enjoy auto-wiring! > > > -----Original Message----- > From: Mark Lehmacher [mailto:[EMAIL PROTECTED] > Sent: Friday, May 12, 2006 7:46 AM > To: Tapestry users > Subject: RE: Tapernate-Example HiveMindAutowireWorker Problem > > My answer might be a little late in coming but I thought I'd let you know > that the fix changed my problem as well! > > Thanks! The autowire-worker sure is *very* useful because it reduces xml > clutter, which in my book is a good thing. > > It would probably make sense to move it into a seperate project, like HLS > did for the flash-property strategy for example. That way everyone who wants > to use it can just download the drop-in jar. > > >> --- Ursprüngliche Nachricht --- >> Von: "James Carman" <[EMAIL PROTECTED]> >> An: "'Tapestry users'" <users@tapestry.apache.org> >> Betreff: RE: Tapernate-Example HiveMindAutowireWorker Problem >> Datum: Tue, 9 May 2006 20:13:50 -0400 >> >> Oh, sorry. I committed a change to my tapernate-example application which >> implements this change. For those of you who were encountering this >> problem, can you download it and try out the changes? Thanks! >> >> >> -----Original Message----- >> From: James Carman [mailto:[EMAIL PROTECTED] >> Sent: Monday, May 08, 2006 9:31 PM >> To: 'Tapestry users' >> Subject: RE: Tapernate-Example HiveMindAutowireWorker Problem >> >> Well, I could specify *all* of the workers that I want my auto-wire worker >> to follow by using a comma-separated list. That might do the trick! >> >> -----Original Message----- >> From: Mark Lehmacher [mailto:[EMAIL PROTECTED] >> Sent: Monday, May 08, 2006 6:04 PM >> To: Tapestry users >> Subject: RE: Tapernate-Example HiveMindAutowireWorker Problem >> Importance: High >> >> The way I see it, it definitely IS the ordering: >> >> When you contribute the autowirer with >> before="tapestry.enhance.abstract-property" and >> after="tapestry.enhance.dispatch-inject" parameters you don't guarantee >> that >> the parameter-worker already performed it's work, because it is not part >> of >> those services which make up dispatch-inject. >> >> The ordering of the enhancement workers is unspecified and relies on the >> underlying Hivemind Order object, which in turn is backed by a HashMap. So >> I >> guess if you add one or several enhancement workers to your chain you will >> get the same problem sooner or later (as soon as the HashMap fucks up the >> ordering for you and the parameter-worker runs before your >> autowire-worker). >> >> However, I'd really love to see a working autowiring function like that. >> If >> it goes into the tapestry core it could be combined into the >> abstract-property-worker, which would solve the ordering problem but raise >> other questions instead (like seperation of concerns). >> >> >> >>> --- Ursprüngliche Nachricht --- >>> Von: "James Carman" <[EMAIL PROTECTED]> >>> An: "'Tapestry users'" <users@tapestry.apache.org> >>> Betreff: RE: Tapernate-Example HiveMindAutowireWorker Problem >>> Datum: Mon, 8 May 2006 10:57:05 -0400 >>> >>> I thought the ordering was getting screwed up too. But, I added >>> LoggingInterceptor to the ParameterPropertyWorker and my auto-wire >>> >> worker >> >>> and the parameter one seems to be running first. If the parameter >>> >> worker >> >>> runs first, this problem should not occur, since the property would have >>> already been claimed and my worker would just bypass it. I >>> >> intentionally >> >>> put my worker after all that stuff, so I wouldn't step on anyone's toes. >>> I >>> wonder if there's some special case that's getting the ordering screwed >>> up? >>> >>> -----Original Message----- >>> From: Mark Lehmacher [mailto:[EMAIL PROTECTED] >>> Sent: Monday, May 08, 2006 6:31 AM >>> To: Tapestry users >>> Subject: RE: Tapernate-Example HiveMindAutowireWorker Problem >>> Importance: High >>> >>> Yup, that's what I am saying. >>> >>> Looks like it's wiring component parameters as well: >>> >>> 5705 HiveMindAutowireWorker:performEnhancement [DEBUG] Creating >>> >> auto-wired >> >>> accessor for property delegate on component >>> classpath:/org/apache/tapestry/html/Shell.jwc, line 22, column 96 >>> 5856 HiveMindAutowireWorker:performEnhancement [DEBUG] Creating >>> >> auto-wired >> >>> accessor for property delegate on component >>> classpath:/org/apache/tapestry/html/Shell.jwc, line 22, column 96 >>> >>> With the result of getting this error: >>> >>> Error at classpath:/org/apache/tapestry/html/Shell.jwc, line 78, column >>> 20: >>> Error adding property delegate to class org.apache.tapestry.html.Shell: >>> Property delegate has already been claimed by a different enhancement >>> worker. >>> >>> >>> So my uneducated guess is that somewhere in the depths of tapestry there >>> might be a service which implements IValidationDelegate and it's gets >>> wired >>> to the component parameter. Looks like the order gets somehow fucked-up, >>> because at the point at which the autowire stuff comes in all parameter >>> properties should have already been claimed. So it probably has to do >>> with >>> the configuration contribution taking place in the seperate module >>> descriptor within my drop-in jar. >>> >>> >>> >>>> --- Ursprüngliche Nachricht --- >>>> Von: "James Carman" <[EMAIL PROTECTED]> >>>> An: "'Tapestry users'" <users@tapestry.apache.org> >>>> Betreff: RE: Tapernate-Example HiveMindAutowireWorker Problem >>>> Datum: Sun, 7 May 2006 18:25:17 -0400 >>>> >>>> Hmmmm. That's weird. But, thanks for the tip. I've submitted the >>>> >> code >> >>>> as >>>> a patch to Tapestry. So, I need to figure out how to get it working. >>>> >>> So, >>> >>>> what you're saying is that if the auto-wiring stuff is inside a jar >>>> >> file >> >>>> and >>>> not part of your application's hivemodule.xml file, then it bombs? >>>> >>>> -----Original Message----- >>>> From: Mark Lehmacher [mailto:[EMAIL PROTECTED] >>>> Sent: Sunday, May 07, 2006 5:21 PM >>>> To: Tapestry users >>>> Subject: Re: Tapernate-Example HiveMindAutowireWorker Problem >>>> Importance: High >>>> >>>> I had that very same problem when I tried to package the Tapernate >>>> auto-wiring stuff in a drop-in jar. It said that one of the parameters >>>> >>> of >>> >>>> the Shell component has already been claimed by a different >>>> >> enhancement >> >>>> worker. >>>> >>>> When I just put the service definition and configuration contribution >>>> >>> into >>> >>>> my application's "root" module descriptor everything works fine. >>>> >>>> >>>> >>>>> --- Ursprüngliche Nachricht --- >>>>> Von: Tat leung <[EMAIL PROTECTED]> >>>>> An: Tapestry users <users@tapestry.apache.org> >>>>> Betreff: Tapernate-Example HiveMindAutowireWorker Problem >>>>> Datum: Sun, 07 May 2006 12:52:15 -0700 >>>>> >>>>> Hi All, >>>>> >>>>> I am using Tapernate and HiveMindAutowireWorker and >>>>> HiveMindAutowireWorkerFactory from the Tapernate example in my >>>>> applicaiton. The XML in my hivemind.xml file and the auto-wire >>>>> >>> classes >>> >>>>> are taken from the Tapernate example: >>>>> >>>>> <service-point id="AutowireWorkerFactory" >>>>> >>>>> >>> interface="org.apache.hivemind.ServiceImplementationFactory" >>> >>>>> parameters-occurs="none"> >>>>> <invoke-factory> >>>>> <construct >>>>> class="org.apache.tapestry.enhance.HiveMindAutowireWorkerFactory" /> >>>>> </invoke-factory> >>>>> </service-point> >>>>> >>>>> <service-point id="AutowireWorker" >>>>> interface="org.apache.tapestry.enhance.EnhancementWorker"> >>>>> <invoke-factory service-id="AutowireWorkerFactory" /> >>>>> </service-point> >>>>> >>>>> <contribution >>>>> >>>> configuration-id="tapestry.enhance.EnhancementWorkers"> >>>> >>>>> <command before="tapestry.enhance.abstract-property" >>>>> after="tapestry.enhance.dispatch-inject" >>>>> id="inject-autowire" object="service:AutowireWorker" /> >>>>> </contribution> >>>>> >>>>> This is working as expected when there is no exception. But when >>>>> >> the >> >>>>> application throws any exception, it is causing the following >>>>> >>> exception >>> >>>>> in the log file. Has anyone encounter this problem? >>>>> >>>>> Thanks! >>>>> Tat >>>>> >>>>> org.apache.hivemind.ApplicationRuntimeException: Property delegate >>>>> >> has >> >>>>> already been claimed by a different enhancement worker. >>>>> at >>>>> >>>>> > org.apache.tapestry.enhance.EnhancementOperationImpl.claimProperty(Enhanceme > >>>> ntOperationImpl.java:241) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.enhance.ParameterPropertyWorker.addParameter(ParameterPr > >>>> opertyWorker.java:117) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.enhance.ParameterPropertyWorker.performEnhancement(Param > >>>> eterPropertyWorker.java:81) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.enhance.ParameterPropertyWorker.performEnhancement(Param > >>>> eterPropertyWorker.java:53) >>>> >>>>> at >>>>> >>>>> > $EnhancementWorker_10b103b1964.performEnhancement($EnhancementWorker_10b103b > >>>> 1964.java) >>>> >>>>> at >>>>> >>>>> > $EnhancementWorker_10b103b197c.performEnhancement($EnhancementWorker_10b103b > >>>> 197c.java) >>>> >>>>> at >>>>> >>>>> > $EnhancementWorker_10b103b195a.performEnhancement($EnhancementWorker_10b103b > >>>> 195a.java) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getCompone > >>>> ntConstructor(ComponentConstructorFactoryImpl.java:97) >>>> >>>>> at >>>>> >>>>> > $ComponentConstructorFactory_10b103b1947.getComponentConstructor($ComponentC > >>>> onstructorFactory_10b103b1947.java) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader.java > >>>> :531) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.pageload.PageLoader.createImplicitComponent(PageLoader.j > >>>> ava:481) >>>> >>>>> at >>>>> >>>>> > $IPageLoader_10b103b1937.createImplicitComponent($IPageLoader_10b103b1937.ja > >>>> va) >>>> >>>>> at >>>>> >>>>> > $IPageLoader_10b103b1938.createImplicitComponent($IPageLoader_10b103b1938.ja > >>>> va) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.createImplici > >>>> tComponent(ComponentTemplateLoaderLogic.java:218) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.process(Compo > >>>> nentTemplateLoaderLogic.java:172) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.process(Compo > >>>> nentTemplateLoaderLogic.java:111) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.loadTemplate( > >>>> ComponentTemplateLoaderLogic.java:88) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.services.impl.ComponentTemplateLoaderImpl.loadTemplate(C > >>>> omponentTemplateLoaderImpl.java:60) >>>> >>>>> at >>>>> >>>>> > $ComponentTemplateLoader_10b103b194b.loadTemplate($ComponentTemplateLoader_1 > >>>> 0b103b194b.java) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.pageload.PageLoader.loadTemplateForComponent(PageLoader. > >>>> java:648) >>>> >>>>> at >>>>> >>>>> >> org.apache.tapestry.BaseComponent.readTemplate(BaseComponent.java:77) >> >>>>> at >>>>> org.apache.tapestry.BaseComponent.finishLoad(BaseComponent.java:107) >>>>> at $Exception_7.finishLoad($Exception_7.java) >>>>> at >>>>> >>>>> > org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:4 > >>>> 39) >>>> >>>>> at >>>>> >>>>> >> org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:613) >> >>>>> at >>>>> >>> $IPageLoader_10b103b1937.loadPage($IPageLoader_10b103b1937.java) >>> >>>>> at >>>>> >>> $IPageLoader_10b103b1938.loadPage($IPageLoader_10b103b1938.java) >>> >>>>> at >>>>> org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:120) >>>>> at >>>>> >> $IPageSource_10b103b1897.getPage($IPageSource_10b103b1897.java) >> >>>>> at >>>>> >>>>> >>> org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:268) >>> >>>>> at >>>>> >>>>> >> org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:251) >> >>>>> at >>>>> >>>>> > org.apache.tapestry.error.ExceptionPresenterImpl.presentException(ExceptionP > >>>> resenterImpl.java:40) >>>> >>>>> at >>>>> >>>>> > $ExceptionPresenter_10b103b18a3.presentException($ExceptionPresenter_10b103b > >>>> 18a3.java) >>>> >>>>> at >>>>> >>>>> > org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngi > >>>> ne.java:121) >>>> >>>>> at >>>>> >>>>> >> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:280) >> >>>>> at >>>>> >>>>> > org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngin > >>>> eTerminator.java:60) >>>> >>>>> at >>>>> >>>>> > $WebRequestServicer_10b103b1907.service($WebRequestServicer_10b103b1907.java > >>>> ) >>>> >>>>> at >>>>> >>>>> > $WebRequestServicer_10b103b1903.service($WebRequestServicer_10b103b1903.java > >>>> ) >>>> >>>>> >>>>> >> --------------------------------------------------------------------- >> >>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>> >>>>> >>>> -- >>>> "Feel free" - 10 GB Mailbox, 100 FreeSMS/Monat ... >>>> Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>> >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>> >>>> >>> -- >>> GMX Produkte empfehlen und ganz einfach Geld verdienen! >>> Satte Provisionen für GMX Partner: http://www.gmx.net/de/go/partner >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >> -- >> Echte DSL-Flatrate dauerhaft für 0,- Euro*! >> "Feel free" mit GMX DSL! http://www.gmx.net/de/go/dsl >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]