On Wed, Jun 13, 2012 at 7:12 AM, Muhammad Gelbana <m.gelb...@gmail.com> wrote: > I faced the same problem and I'm using the constructor's injection instead. > But why wouldn't the deprecated @InjectResource nor the @Inject annotation > work ? I'm using tapestry5.3.1
Without seeing the code, there's no way to answer. http://catb.org/esr/faqs/smart-questions.html > > On Wed, Dec 29, 2010 at 1:33 AM, Howard Lewis Ship <hls...@gmail.com> wrote: > >> You're seeing the evolution of the framework. >> >> Originally, there was only constructor injection for services. This is >> because we did not, originally, use a special class loader for service >> implementations and we were trying to avoid reflection. >> >> Components always used a special class loader, which allowed for proper >> injection (including intercepting attempted updates to the fields, to make >> the read-only). >> >> Later (5.1 I believe) we started allowing injection into fields of service >> implementation, using reflection. >> >> However, there's an ambiguity. Normally, once Tapestry selects a >> constructor, it provides an injection value for each parameter, based on >> type (and other annotation). >> >> Normally, a component parameter of type Logger is recognized, by type, as a >> service resource (i.e., not another service, but a unique value constructed >> just for this service). Adding the @Inject annotation tells Tapestry to >> ignore it as a service resource and resolve it as an ordinary injection >> (i.e., a service, or an object obtained from the MasterObjectProvider). >> >> For fields, each field needs an @Inject annotation (Tapestry ignores most >> fields and only performs injection on the ones that need it). But >> that ambiguity ... @Inject should also work the same for a field as it does >> for a parameter (meaning, resolve as a service, not a resource). The >> solution was yet another annotation, @InjectResource, which is only for >> fields, and indicates that Tapestry should perform a resource injection on >> the field, as it would for a constructor parameter. >> >> Confusing? Yes, just a touch. It's one of the reasons I prefer constructor >> injection. >> >> On Tue, Dec 28, 2010 at 3:15 PM, Thiago H. de Paula Figueiredo < >> thiag...@gmail.com> wrote: >> >> > On Tue, 28 Dec 2010 21:11:58 -0200, Josh Canfield < >> joshcanfi...@gmail.com> >> > wrote: >> > >> > Weird. Has that always been true? >> >> >> > >> > No. I can't remember when, though. >> > >> > >> > I'm also confused >> >> why @Inject would work with Logger in a Component, but not in a service. >> >> >> > >> > Injection of some object types are handled by class transformations, not >> > IoC. >> > >> > >> > -- >> > Thiago H. de Paula Figueiredo >> > Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, >> > and instructor >> > Owner, Ars Machina Tecnologia da Informação Ltda. >> > http://www.arsmachina.com.br >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> > For additional commands, e-mail: users-h...@tapestry.apache.org >> > >> > >> >> >> -- >> Howard M. Lewis Ship >> >> Creator of Apache Tapestry >> >> The source for Tapestry training, mentoring and support. Contact me to >> learn >> how I can get you up and productive in Tapestry fast! >> >> (971) 678-5210 >> http://howardlewisship.com >> > > > > -- > *Regards,* > *Muhammad Gelbana > Java Developer* -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.com --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org