Also, the modules that configures the module might grow in complexity..then what ? make another module that configures the module that configures the module ?
Den lørdag den 8. marts 2014 22.19.35 UTC+1 skrev Mikkel Petersen: > > Yes, but project was started before eventbus existed. Stil, I would like > to make the conversion. > I too thought about the "inject modules first" solution. I think its a bit > silly though, and smells like a workaround from something that should be a > lot easier to do. > > Den lørdag den 8. marts 2014 17.11.57 UTC+1 skrev Nate Bauernfeind: >> >> It does depend on how you're doing your listener pattern, but Guava's >> EventBus might be a nice alternative, like I explained in an earlier email. >> >> I think Sam was just pointing out that it seems like you're using Guice >> in an unintended way. Which can decrease the satisfaction of your >> particular experience. >> >> Which, of course is a shame, because Guice has been an amazing experience >> for me, and I won't do any project without it. >> >> It should technically be possible to have a two stage dependency >> injection setup. I've personally toyed with the idea as a way to decouple >> configuration from the application (before I started using dropwizard I >> used multiple json files that would auto inject @Named strings). It should >> work in your case as well if you name your collections and inject them into >> your modules. >> >> So the idea is that the first injector is created to instantiate all >> modules, so you would need very few super modules that binds each of your >> original modules. You will likely want to use multibinder to register each >> module so that you can pull them directly off of this initial injector to >> construct the second phase injector. >> >> It should work and may help with the problem you've found yourself in. >> >> If you feel like you can share a handful of module source files with me, >> out of thread, I'd be happy to see if there are even better and more >> concrete suggestions I can give you. >> >> Nate >> On Mar 8, 2014 9:02 AM, "Mikkel Petersen" <mlp...@gmail.com> wrote: >> >>> >>> Well multiibindings solves, in a way, the listener problem. Because it >>> works on sets. But it doesnt solve if I wanted to access other objects from >>> other modules. >>> If you could care to explain to me why this is "wrong" without saying >>> "its just wrong" I'm all ears. >>> You might as well say that using a injection framework is wrong because >>> injection is a sign that the logic in your application is wrong. >>> I'm not convinced at all that my clam is not legitimate but we can >>> disagree on that, no problem. I'll simply note that at this point, Guice >>> can't handle this problem. >>> Den lørdag den 8. marts 2014 15.56.16 UTC+1 skrev Sam Berlin: >>>> >>>> I suggested going specifically to StackOverflow, which is a website >>>> devoted to programming questions/answers. >>>> >>>> Additionally, I suggested a solution of Multibindings, which AFAICT is >>>> specifically for the problem you outlined. >>>> >>>> If you have further problems, I'm not sure I can help much more, though >>>> others on this list may be able to. >>>> >>>> sam >>>> >>>> >>>> On Sat, Mar 8, 2014 at 9:54 AM, Mikkel Petersen <mlp...@gmail.com>wrote: >>>> >>>>> >>>>> Btw, Multibindings doesnt solve this..but I'm glad that you told me I >>>>> do things wrong, without telling me why, and without providing an >>>>> alternative solution. Did you even look at the sample ? >>>>> Den lørdag den 8. marts 2014 15.51.21 UTC+1 skrev Mikkel Petersen: >>>>> >>>>>> Are you suggestion I should google around and ask ? thanks, would >>>>>> have never thought about that.. >>>>>> >>>>>> Den lørdag den 8. marts 2014 03.45.59 UTC+1 skrev Sam Berlin: >>>>>>> >>>>>>> I hate to break it to you, but it increasingly looks like you're >>>>>>> making this much harder for yourself, using the framework in a way it's >>>>>>> not >>>>>>> intended. >>>>>>> >>>>>>> For this particular problem (adding things to a shared pool), >>>>>>> there's an extension called Multibinder: http://code.google.com/p/ >>>>>>> google-guice/wiki/Multibindings . >>>>>>> >>>>>>> For other issues, you may want to consider asking for specific >>>>>>> guidance and help in StackOverflow (or searching for existing >>>>>>> questions/answers). I suspect you'll find that things will become a >>>>>>> lot >>>>>>> simpler. >>>>>>> >>>>>>> sam >>>>>>> On Mar 7, 2014 7:33 PM, "Mikkel Petersen" <mlp...@gmail.com> wrote: >>>>>>> >>>>>>>> It's hard for me to describe the entire problem..I was really just >>>>>>>> looking for a solution to this, now it has turned into something else. >>>>>>>> But >>>>>>>> fine, I'll try to explain my point further. >>>>>>>> >>>>>>>> Lets say its not fully possible to populate an object just from >>>>>>>> Module, that other modules should have access to this object as well >>>>>>>> in >>>>>>>> order for it to be fully ready for use. >>>>>>>> >>>>>>>> For example, we have an object NameList >>>>>>>> >>>>>>>> Module A { >>>>>>>> configure() { >>>>>>>> nameList = new NameList() >>>>>>>> bind(NameList.class).toInstance(nameList) >>>>>>>> name = new Name("peter") >>>>>>>> requestInjection(name) >>>>>>>> nameList.add(name) >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>> Module B { >>>>>>>> Name name = new Name("James") >>>>>>>> requestInjection(name) >>>>>>>> nameList.addName(name) >>>>>>>> >>>>>>>> } >>>>>>>> >>>>>>>> Module B binds a new name, injects it, and adds it to the NameLIst. >>>>>>>> But the namelist was created and bound in module A !! How will it get >>>>>>>> a >>>>>>>> reference to NameList ? >>>>>>>> We could do something like this >>>>>>>> >>>>>>>> GuiceStatics { >>>>>>>> public static NameList nameList >>>>>>>> } >>>>>>>> And access it from here. Or make a singleton factory or whatever. >>>>>>>> But why ? this is what Guice helps us to avoid ! >>>>>>>> >>>>>>>> Point is, the entire module section of any application can grow >>>>>>>> into something huge itself. And because of that, it needs dependency >>>>>>>> injection itself. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Den lørdag den 8. marts 2014 01.22.37 UTC+1 skrev Sam Berlin: >>>>>>>>> >>>>>>>>> I don't understand why your modules need things injected. The >>>>>>>>> point of modules is to set up rules saying "this is bound to that" >>>>>>>>> and >>>>>>>>> "when someone wants this, give them that". It does not require >>>>>>>>> knowing the >>>>>>>>> interrelationships of each object. I highly suspect there's >>>>>>>>> something >>>>>>>>> fundamentally wrong with your setup, but it's hard to say for certain >>>>>>>>> without knowing what you're doing. >>>>>>>>> >>>>>>>>> sam >>>>>>>>> >>>>>>>>> >>>>>>>>> On Fri, Mar 7, 2014 at 7:18 PM, Mikkel Petersen >>>>>>>>> <mlp...@gmail.com>wrote: >>>>>>>>> >>>>>>>>>> I have already optimized each and every module..I have spent >>>>>>>>>> years doing that, really. But they still run into the exact same >>>>>>>>>> problem >>>>>>>>>> that Guice was supposed to solve: how do we get object A to object B. >>>>>>>>>> With hundreds of modules, that problem will occur over and >>>>>>>>>> over..For example, I have a list of Listeners in Module A. Module A >>>>>>>>>> binds >>>>>>>>>> them, plus add some listener code to the list. Module XYZ23B now >>>>>>>>>> wants to >>>>>>>>>> add a listener to this list as well. How ? Only solution right now >>>>>>>>>> is to >>>>>>>>>> have a class that references this list public and statically. Now, >>>>>>>>>> you >>>>>>>>>> could say, my logic is wrong. All logic concerned this listener list >>>>>>>>>> should >>>>>>>>>> be in one module..but perhaps the two do not have much in common >>>>>>>>>> logic wise >>>>>>>>>> than this object. >>>>>>>>>> >>>>>>>>>> Den lørdag den 8. marts 2014 01.08.14 UTC+1 skrev Nate >>>>>>>>>> Bauernfeind: >>>>>>>>>>> >>>>>>>>>>> I can't say that I've ever dealt with an experience of having >>>>>>>>>>> 100+ unique modules (now if you want to talk about 100+ child >>>>>>>>>>> injectors >>>>>>>>>>> created from different instances of the same module (i.e. as a >>>>>>>>>>> template)... >>>>>>>>>>> now that I've done). I think my largest experience has sliced >>>>>>>>>>> things up >>>>>>>>>>> into maybe 15 modules; which is still quite a handful to manage. >>>>>>>>>>> >>>>>>>>>>> The biggest thing that I did that helped managed dependency >>>>>>>>>>> relationships across modules was to prefer PrivateModules over >>>>>>>>>>> completely >>>>>>>>>>> public AbstractModules. It made me really think about what each >>>>>>>>>>> module was >>>>>>>>>>> being used for and what it exposed for use with the rest of the >>>>>>>>>>> application. For example, I don't mind creating a different >>>>>>>>>>> ExecutorService >>>>>>>>>>> that might be used in an entire sub-graph that is not shared across >>>>>>>>>>> all of >>>>>>>>>>> my modules. In fact, limiting how portions of your application can >>>>>>>>>>> interact, or interfere, with each other can dramatically improve >>>>>>>>>>> your >>>>>>>>>>> experience when debugging or fine-tuning certain things. >>>>>>>>>>> >>>>>>>>>>> Perhaps, migrating and merging some of your modules to each have >>>>>>>>>>> a specific purpose might bring things back to being manageable and >>>>>>>>>>> meaningful for you. >>>>>>>>>>> >>>>>>>>>>> Additionally, I've had some experience here and there using >>>>>>>>>>> Guava's EventBus to further decouple sub-systems by instead >>>>>>>>>>> communicating >>>>>>>>>>> with messages. For example instead of injecting the TwitterService >>>>>>>>>>> and have >>>>>>>>>>> every listener register itself as a listener, I instead can use the >>>>>>>>>>> EventBus to subscribe to all messages of a type "TwitterEvent" and >>>>>>>>>>> then the >>>>>>>>>>> messages get to the right places behind the scenes on my behalf >>>>>>>>>>> (you only >>>>>>>>>>> need to add an @Subscribe assuming you let guice register your >>>>>>>>>>> objects). >>>>>>>>>>> This works well for data that flows as opposed to data that you >>>>>>>>>>> need to >>>>>>>>>>> pass back an answer (though I've tried this too by passing a >>>>>>>>>>> settable >>>>>>>>>>> Future as a means of a lightweight callback -- but I wasn't >>>>>>>>>>> extremely >>>>>>>>>>> satisfied, nor unsatisfied, with the result). The applications that >>>>>>>>>>> I have >>>>>>>>>>> that use an event bus can typically remove a guice module from the >>>>>>>>>>> list >>>>>>>>>>> that gets passed into the injector and everything will still start >>>>>>>>>>> up and >>>>>>>>>>> run appropriately -- just no one will get any TwitterEvents if that >>>>>>>>>>> module >>>>>>>>>>> was removed. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Fri, Mar 7, 2014 at 5:16 PM, Mikkel Petersen < >>>>>>>>>>> mlp...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Thank you all for your responses ! >>>>>>>>>>>> >>>>>>>>>>>> Problem is, my application has grown to the point that even the >>>>>>>>>>>> modules themselves have becoming an application. >>>>>>>>>>>> >>>>>>>>>>>> So there are many objects created in different modules, needed >>>>>>>>>>>> by others... >>>>>>>>>>>> >>>>>>>>>>>> What I really need is to be able to inject dependencies into >>>>>>>>>>>> module. >>>>>>>>>>>> >>>>>>>>>>>> The ideal solution would be >>>>>>>>>>>> TestModule extends Module { >>>>>>>>>>>> Inject SomeObjectCreatedInAFarWayModule someObject; >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> But that is not possible, so because of that I took a look at >>>>>>>>>>>> providers, which allow dependencies to be injected into modules. >>>>>>>>>>>> My application has at least 100 modules by now, and growing. >>>>>>>>>>>> So far I have used static public objects, but as everyone >>>>>>>>>>>> knows, that is bad practice. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Den lørdag den 8. marts 2014 00.07.22 UTC+1 skrev Nate >>>>>>>>>>>> Bauernfeind: >>>>>>>>>>>>> >>>>>>>>>>>>> @Provides are typically when you need to inject an instance of >>>>>>>>>>>>> some library out of your control that doesn't have any guice >>>>>>>>>>>>> bindings. I >>>>>>>>>>>>> try to avoid using providers for any other use case. In your >>>>>>>>>>>>> specific >>>>>>>>>>>>> example, I would do what Sam suggested and just simply inject the >>>>>>>>>>>>> Settings >>>>>>>>>>>>> object. >>>>>>>>>>>>> >>>>>>>>>>>>> I use dropwizard a lot and typically finding myself creating >>>>>>>>>>>>> hierarchical configuration objects, and passing the >>>>>>>>>>>>> sub-configuration >>>>>>>>>>>>> object to a specific module. For example, >>>>>>>>>>>>> >>>>>>>>>>>>> class ApplicationConfiguration { >>>>>>>>>>>>> public DatabaseConfiguration data; >>>>>>>>>>>>> public TwitterConfiguration twitter; >>>>>>>>>>>>> ... >>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>>> And then they map one-to-one to a top-level PrivateModule >>>>>>>>>>>>> which accepts the sub-configuration object as part of its >>>>>>>>>>>>> constructor. Then >>>>>>>>>>>>> I can easily either inject the configuration class privately for >>>>>>>>>>>>> that >>>>>>>>>>>>> sub-portion of my application, or do whatever I need to with it >>>>>>>>>>>>> (like >>>>>>>>>>>>> configure an http client in a @Provides method). >>>>>>>>>>>>> >>>>>>>>>>>>> Happy Guicing! >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Fri, Mar 7, 2014 at 5:00 PM, Mikkel Petersen < >>>>>>>>>>>>> mlp...@gmail.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks for your response. >>>>>>>>>>>>>> >>>>>>>>>>>>>> It's seems overly complicated and I must admit, I don't >>>>>>>>>>>>>> understand it fully..though it properly works..I fail to see the >>>>>>>>>>>>>> usage of >>>>>>>>>>>>>> @Provides methods if the object provided doesn't have the object >>>>>>>>>>>>>> graph >>>>>>>>>>>>>> injected. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Den fredag den 7. marts 2014 23.54.17 UTC+1 skrev Nate >>>>>>>>>>>>>> Bauernfeind: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> It's a bit more work, but you could consider using assisted >>>>>>>>>>>>>>> injection for this kind of use-case. My typical pattern looks >>>>>>>>>>>>>>> like this: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> public class Example { >>>>>>>>>>>>>>> @Inject >>>>>>>>>>>>>>> public Example(@Assisted("host") String host >>>>>>>>>>>>>>> HttpClient httpClient, >>>>>>>>>>>>>>> ...) { >>>>>>>>>>>>>>> ... >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> /** This class is a Guice Assisted-Inject Factory. */ >>>>>>>>>>>>>>> public static interface Factory { >>>>>>>>>>>>>>> Example newExample(@Assisted("host") String host); >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> ... >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> public class ExampleModule { >>>>>>>>>>>>>>> void configure() { >>>>>>>>>>>>>>> bindFactory(Example.class, Example.Factory.class); >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> protected <T, F> void bindFactory(Class<T> klass, Class<F> >>>>>>>>>>>>>>> factoryKlass) { >>>>>>>>>>>>>>> bindFactory(klass, klass, factoryKlass); >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> And then you can still use a provider method (if you >>>>>>>>>>>>>>> prefer!) and then you inject the factory and the settings. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> @Provides >>>>>>>>>>>>>>> public Example someExample(Example.Factory factory, Settings >>>>>>>>>>>>>>> settings) { >>>>>>>>>>>>>>> return factory.newExample(settings.getHost()); >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hope that helps! I use this pattern a lot, but not often >>>>>>>>>>>>>>> mixed with a Provider -- usually I have a class that manages >>>>>>>>>>>>>>> the multiple >>>>>>>>>>>>>>> instances key'ed by some name (like client or user). >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Fri, Mar 7, 2014 at 4:44 PM, Mikkel Petersen < >>>>>>>>>>>>>>> mlp...@gmail.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Because I want to receive other bindings: >>>>>>>>>>>>>>>> public Service someService(@Inject Settings settings) { >>>>>>>>>>>>>>>> SomeService s = new SomeService(settings.getHost()) >>>>>>>>>>>>>>>> inj.injectMembers(s) >>>>>>>>>>>>>>>> return s >>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Den fredag den 7. marts 2014 23.32.42 UTC+1 skrev Nate >>>>>>>>>>>>>>>> Bauernfeind: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> What about your use case prevents you from using a normal >>>>>>>>>>>>>>>>> .to binding? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> bind(SomeService.class).to(SomeService.class) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Nate >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Fri, Mar 7, 2014 at 4:13 PM, Mikkel Petersen < >>>>>>>>>>>>>>>>> mlp...@gmail.com> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hello all >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I have a slight problem with guice injection when using a >>>>>>>>>>>>>>>>>> method annotated with @Provides >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> example : >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> @Provides >>>>>>>>>>>>>>>>>> public Service someService() { >>>>>>>>>>>>>>>>>> return new SomeService() >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I would like to get the current context injected in >>>>>>>>>>>>>>>>>> SomeService..I don't understand why Guice doesn't do that >>>>>>>>>>>>>>>>>> automatically, >>>>>>>>>>>>>>>>>> any particular reason for that ? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I know I could do something like this (it works): >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> @Provides >>>>>>>>>>>>>>>>>> public Service someService(@Inject Injector inj) { >>>>>>>>>>>>>>>>>> SomeService s = new SomeService() >>>>>>>>>>>>>>>>>> inj.injectMembers(s) >>>>>>>>>>>>>>>>>> return s >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> But there must be a simpler way. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Thanks >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Ps, another question, how to add syntax highlighting ? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>> You received this message because you are subscribed to >>>>>>>>>>>>>>>>>> the Google Groups "google-guice" group. >>>>>>>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails >>>>>>>>>>>>>>>>>> from it, send an email to google-guice...@googlegroups.c >>>>>>>>>>>>>>>>>> om. >>>>>>>>>>>>>>>>>> To post to this group, send email to >>>>>>>>>>>>>>>>>> google...@googlegroups.com. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Visit this group at http://groups.google.com/group >>>>>>>>>>>>>>>>>> /google-guice. >>>>>>>>>>>>>>>>>> For more options, visit https://groups.google.com/d/op >>>>>>>>>>>>>>>>>> tout. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>>>>>>> Google Groups "google-guice" group. >>>>>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails >>>>>>>>>>>>>>>> from it, send an email to google-guice...@googlegroups.com. >>>>>>>>>>>>>>>> To post to this group, send email to >>>>>>>>>>>>>>>> google...@googlegroups.com. >>>>>>>>>>>>>>>> Visit this group at http://groups.google.com/group >>>>>>>>>>>>>>>> /google-guice. >>>>>>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>>>>> Google Groups "google-guice" group. >>>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>>>>> it, send an email to google-guice...@googlegroups.com. >>>>>>>>>>>>>> To post to this group, send email to >>>>>>>>>>>>>> google...@googlegroups.com. >>>>>>>>>>>>>> Visit this group at http://groups.google.com/group >>>>>>>>>>>>>> /google-guice. >>>>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>>> Google Groups "google-guice" group. >>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>>> it, send an email to google-guice...@googlegroups.com. >>>>>>>>>>>> To post to this group, send email to google...@googlegroups.com >>>>>>>>>>>> . >>>>>>>>>>>> Visit this group at http://groups.google.com/group/google-guice >>>>>>>>>>>> . >>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>> Google Groups "google-guice" group. >>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>>> send an email to google-guice...@googlegroups.com. >>>>>>>>>> To post to this group, send email to google...@googlegroups.com. >>>>>>>>>> Visit this group at http://groups.google.com/group/google-guice. >>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "google-guice" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to google-guice...@googlegroups.com. >>>>>>>> To post to this group, send email to google...@googlegroups.com. >>>>>>>> Visit this group at http://groups.google.com/group/google-guice. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "google-guice" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to google-guice...@googlegroups.com. >>>>> To post to this group, send email to google...@googlegroups.com. >>>>> Visit this group at http://groups.google.com/group/google-guice. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "google-guice" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to google-guice...@googlegroups.com. >>> To post to this group, send email to google...@googlegroups.com. >>> Visit this group at http://groups.google.com/group/google-guice. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- You received this message because you are subscribed to the Google Groups "google-guice" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com. To post to this group, send email to google-guice@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. For more options, visit https://groups.google.com/d/optout.