I meant for any objects... I can't enumerate all types into a module...

2008/9/2 Robbie Vanbrabant <[EMAIL PROTECTED]>

> Binder#requestStaticInjection (from inside a module)
>
> Cheers
> Robbie
>
>
> On Tue, Sep 2, 2008 at 1:47 PM, Anthony MULLER <[EMAIL PROTECTED]>wrote:
>
>> Hmmm.... is there a way to configure Guice to inject any static fields
>> with @Inject annotations ? :-(
>>
>> Anthony, desesperate developer
>>
>>
>> 2008/8/26 Anthony MULLER <[EMAIL PROTECTED]>
>>
>> Hello !
>>>
>>> Is there a way to say once to Guice: inject any static fields named
>>> LOGGER?
>>>
>>> Regards,
>>> Anthony
>>>
>>>
>>> 2008/8/1 Anthony MULLER <[EMAIL PROTECTED]>
>>>
>>> Yes, I do the same but at method level and... In fact, my need is to log
>>>> all methods call BUT only methods defined in my public interfaces of my
>>>> objects, not other internal methods... So, I have to do some extra efforts
>>>> to guess if a method is defined in a "public" interface or not...
>>>>
>>>> I think I will keep my first solution because the one with
>>>> java.util.logging is not good for me... I use another logger... But, I 
>>>> hoped
>>>> to use the same mechanism: if Guice can inject a such logger, that means it
>>>> knows the type of the injectee... And it is what I need!
>>>>
>>>> Regards
>>>>
>>>> Anthony
>>>>
>>>>
>>>>
>>>> 2008/8/1 jordi <[EMAIL PROTECTED]>
>>>>
>>>>  i used a @Log annotation at type level to intercept all classes i
>>>>> wanted to log, with an optional attribute logger if you want to specify 
>>>>> the
>>>>> name of the logger.
>>>>>
>>>>> Then i used Matchers from Guice to find all that classes and intercept
>>>>> them. The only thing that interceptor does is to manually set the Logger
>>>>> field in your logged class.
>>>>>
>>>>> I'll tune this @Log thing and write a post somewhere...
>>>>>
>>>>> jordi
>>>>>
>>>>>
>>>>> On Thu, Jul 31, 2008 at 4:01 PM, Anthony MULLER <
>>>>> [EMAIL PROTECTED]> wrote:
>>>>>
>>>>>> Any reponses on this issue please?
>>>>>>
>>>>>> I tried to add an handler on the logger automatically injected by
>>>>>> Guice, but it is not really fine...
>>>>>>
>>>>>> I believed java.util.logging was only an API and I could change the
>>>>>> underlying implementation but I was wrong :(
>>>>>>
>>>>>> Are there alternative to my primary solution?
>>>>>>
>>>>>> will Guice 2.0 help me anymore?
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>> Anthony MÜLLER
>>>>>>
>>>>>>
>>>>>> 2008/7/31 Anthony MULLER <[EMAIL PROTECTED]>
>>>>>>
>>>>>>> Hmm hmm, thanks for reply!
>>>>>>>
>>>>>>> I didn't know this tip :)
>>>>>>>
>>>>>>> In fact, I didn't use java.util.logging... So, is it possible:
>>>>>>>
>>>>>>> 1) to specify my own Logger implementation (internal) through
>>>>>>> 'java.util.logging' (i don't know this class alot... I need to learn 
>>>>>>> about
>>>>>>> it)
>>>>>>>
>>>>>>> or
>>>>>>>
>>>>>>> 2) overload Guice mecanism somewhere to tell it to inject my logger
>>>>>>> rather than java.util.logging
>>>>>>>
>>>>>>> Regards,
>>>>>>> Anthony MÜLLER
>>>>>>>
>>>>>>>
>>>>>>> 2008/7/31 Stuart McCulloch <[EMAIL PROTECTED]>
>>>>>>>
>>>>>>> 2008/7/31 Anthony MULLER <[EMAIL PROTECTED]>
>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> I'm trying to use Guice to inject Logger into my objects... The
>>>>>>>>> main problem is that I didn't know which class is being injected. So, 
>>>>>>>>> I
>>>>>>>>> can't build a logger with the convenient class.
>>>>>>>>>
>>>>>>>>
>>>>>>>> FYI, Guice has a default "java.util.logging.Logger" binding for each
>>>>>>>> class being injected
>>>>>>>>
>>>>>>>> so you can do this:
>>>>>>>>
>>>>>>>>    import java.util.logging.Logger;
>>>>>>>>
>>>>>>>>    @Inject
>>>>>>>>    Logger logger;
>>>>>>>>
>>>>>>>> and it will automatically use the correct name - however this is
>>>>>>>> only for java.util.logging.
>>>>>>>>
>>>>>>>> Other 'little' problem is that the traditional way to use Logger is
>>>>>>>>> to have a static field into class... And Guice doesn't like this (I 
>>>>>>>>> mean use
>>>>>>>>> of static)... Even if it is possible to inject them with a special 
>>>>>>>>> Guice
>>>>>>>>> method.
>>>>>>>>>
>>>>>>>>> So, I'd like to know if somebody already think to this (and have a
>>>>>>>>> proposal to solve it).
>>>>>>>>>
>>>>>>>>> What I've done:
>>>>>>>>>
>>>>>>>>> 1) I create a class ILogger which have traditional looger méthods
>>>>>>>>> (like isWarnEnabled(), warn(String msg))
>>>>>>>>> 2) I had an extra parameter to this method to take as argument the
>>>>>>>>> object where log operation occured
>>>>>>>>>
>>>>>>>>> This is how I use it:
>>>>>>>>>
>>>>>>>>> public class MyObject {
>>>>>>>>>
>>>>>>>>>     // Note: field in NOT static
>>>>>>>>>     @Inject
>>>>>>>>>     private final ILogger LOGGER = null;
>>>>>>>>>
>>>>>>>>>     public void myMethod() {
>>>>>>>>>             //...
>>>>>>>>>             // Note the "this" parameter
>>>>>>>>>             if (LOGGER.isWarnEnabled(*this*)) {
>>>>>>>>>                 LOGGER.warn(*this*, "My message to log");
>>>>>>>>>             }
>>>>>>>>>             //...
>>>>>>>>>     }
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> The ILogger implementation looks like:
>>>>>>>>>
>>>>>>>>> @Singleton
>>>>>>>>> public class LoggerImpl implements ILogger {
>>>>>>>>>
>>>>>>>>>     // Cache to store already created logger: one logger per class
>>>>>>>>> strategy
>>>>>>>>>     private final Map<Class<?>, Logger> loggers = new
>>>>>>>>> HashMap<Class<?>, Logger>();
>>>>>>>>>
>>>>>>>>>     /**
>>>>>>>>>      * [EMAIL PROTECTED]
>>>>>>>>>      */
>>>>>>>>>     public void debug(Object src, String msg) {
>>>>>>>>>         getLogger(src).debug(msg);
>>>>>>>>>     }
>>>>>>>>>
>>>>>>>>>     // ... other traditional log methods
>>>>>>>>>
>>>>>>>>>     /**
>>>>>>>>>      * Return a logger instance or get it from cache.
>>>>>>>>>      *
>>>>>>>>>      * @param src
>>>>>>>>>      * @return Logger
>>>>>>>>>      */
>>>>>>>>>     private Logger getLogger(Object src) {
>>>>>>>>>         Class<?> clazz = null;
>>>>>>>>>         if (src instanceof Class<?>) {
>>>>>>>>>             clazz = (Class<?>) src;
>>>>>>>>>         } else {
>>>>>>>>>             clazz = src.getClass();
>>>>>>>>>         }
>>>>>>>>>         Logger logger = loggers.get(clazz);
>>>>>>>>>         if (logger == null) {
>>>>>>>>>             logger = Logger.getInstance(clazz.getName());
>>>>>>>>>             loggers.put(src.getClass(), logger);
>>>>>>>>>         }
>>>>>>>>>         return logger;
>>>>>>>>>     }
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> What do you think about this?
>>>>>>>>>
>>>>>>>>> Is it a good way to deal with logging issue ?
>>>>>>>>>
>>>>>>>>> Thanks!
>>>>>>>>>
>>>>>>>>> Anthony MÜLLER
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Cheers, Stuart
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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