On Friday, August 14, 2009, Gili <[email protected]> wrote:
>
> I filed a RFE for injection context: 
> http://code.google.com/p/google-guice/issues/detail?id=412
>
> Gili
>
> On Jul 25, 1:17 pm, Adrian Cole <[email protected]> wrote:
>> Indeed you are correct.  I believe this is the only way to accomplish
>> the goal with the current version of guice without hacking core
>> classes.  I don't think this was possible at all in Guice 1.0.
>>
>> For this to be accomplished natively, one way could be to add a
>> context to providers.  In this context, one could reach the injectee
>> like below:
>>
>> @Provider Logger providerLogger(InjectionContext context){
>>    return Logger.getLogger(context.getInjectee().getClass().getName());
>>
>> }
>>
>> I'm interested in other opinions on how to accomplish this.
>>
>> Regards,
>> -Adrian
>> jclouds
>>
>> On Sat, Jul 25, 2009 at 4:51 PM, Gili Tzabari<[email protected]> wrote:
>>
>> > Hi Adrian,
>>
>> >        If I understand your code directly, you always inject
>> > Logger.getRootLogger() into the constructor, then use reflection to
>> > alter the field after-the-fact to the current type. Is this correct?
>>
>> >        I'm looking for a way to set the Constructor argument to the right
>> > value in the first place, instead of fixing it after the fact. It seems
>> > to me that Guice 2.0 is missing a facility for this sort of thing. Are
>> > there any plans for adding one in Guice 2.1 or 3.0?
>>
>> > Thanks,
>> > Gili
>>
>> > Adrian Cole wrote:
>> >> Hi, Gili.
>>
>> >> I've just coded this for you..  I hope you digg it ;)
>>
>> >>http://digg.com/d3yXEh
>>
>> >> Cheers,
>> >> -Adrian
>> >> jclouds
>>
>> >> On Fri, Jul 24, 2009 at 2:22 PM, Gili Tzabari<[email protected]> 
>> >> wrote:
>> >>> Guys,
>>
>> >>>        I don't understand your answers. It sounds to me like you're 
>> >>> talking
>> >>> about field injection, not constructor injection.
>>
>> >>>        I don't want to inject a log into an already-constructed object. 
>> >>> I want
>> >>> to inject a log directly into the class constructor:
>>
>> >>> class Foo
>> >>> {
>> >>>   private final Logger log;
>>
>> >>>   @Inject
>> >>>   public Foo(Logger log)
>> >>>   {
>> >>>     this.log = log;
>> >>>   }
>> >>> }
>>
>> >>>        Also, I am not necessarily doing this for jdk loggers so please 
>> >>> provide
>> >>> more detail on how to write a custom injection listener to do this.
>>
>> >>> Thanks,
>> >>> Gili
>>
>> >>> Adrian Cole wrote:
>> >>>> If just injecting a log class, you're right: that's trivial.   The
>> >>>> less trivial part is setting the log scope relevant to the object
>> >>>> being constructed.
>>
>> >>>> -Adrian
>>
>> >>>> On Fri, Jul 24, 2009 at 10:51 AM, Dhanji R. Prasanna<[email protected]> 
>> >>>> wrote:
>> >>>>> You can also write a trivial injection listener that looks for whatever
>> >>>>> logging class you like and set it after construction.
>> >>>>> Dhanji.
>>
>> >>>>> On Fri, Jul 24, 2009 at 5:49 PM, Adrian Cole <[email protected]> 
>> >>>>> wrote:
>> >>>>>> In jclouds, we use a similar approach, but don't bind ourselves to
>> >>>>>> java or log4j:
>> >>>>>>    http://code.google.com/p/jclouds/wiki/LogDesign
>>
>> >>>>>> Here's the configuration class that may help you do what you are 
>> >>>>>> looking
>> >>>>>> for:
>>
>> >>>>>>http://code.google.com/p/jclouds/source/browse/trunk/core/src/main/ja...
>>
>> >>>>>> I hope this helps,
>> >>>>>> -Adrian
>> >>>>>> jclouds
>>
>> >>>>>> On Fri, Jul 24, 2009 at 6:15 AM, Dhanji R. Prasanna<[email protected]>
>> >>>>>> wrote:
>> >>>>>>> You can already do this with jdk loggers.
>> >>>>>>> Dhanji.
>>
>> >>>>>>> On Fri, Jul 24, 2009 at 2:12 PM, Gili <[email protected]> wrote:
>> >>>>>>>> Hi,
>>
>> >>>>>>>> Is it possible to implement Log4JMembersInjector -- as found here:
>> >>>>>>>>http://code.google.com/p/google-guice/wiki/CustomInjections-- but for
>> >>>>>>>> constructor injection instead? That is, I'd like Guice to be smart
>> >>>>>>>> enough to inject the correct Logger instance into the constructor
>> >>>>>>>> automatically. I took a look at InjectionListener but it seems to 
>> >>>>>>>> hook
>> >>>>>>>> instances that have already been injected. Another approach that 
>> >>>>>>>> comes
>> >>>>>>>> to mind is:
>>
>> >>>>>>>> @Provides
>> >>>>>>>> public Logger getLogger(Class<?> outerClass);
>>
>> >>>>>>>> If I could somehow get Guice to pass in the correct Class... Any
>> >>>>>>>> ideas?
>>
>> >>>>>>>> Gili
>>
>>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to