Luckily ( at the moment ) there is only one Provider<Foo> I need to expose, Dave. If things change (as they often do ;) ), I might do the separate jar thing. Thanks for the idea.
-Adrian On Thu, Apr 23, 2009 at 5:44 PM, David Stenglein <[email protected]>wrote: > > I don't know how many different Providers you are creating, but > wrapping, or using @Provides could get tedious. > > How about having two separate implementations of com.foo.Provider, one > that implements com.google.inject.Provider and one that doesn't and > just ship different jars? > > -Dave > > On Thu, Apr 23, 2009 at 11:20 AM, Adrian Cole <[email protected]> wrote: > > Thanks, Logan.. I had the same wrapping idea as I walked back to > computer. > > > > This will work! > > Cheers, > > -Adrian > > > > On Thu, Apr 23, 2009 at 5:18 PM, Logan Johnson <[email protected]> > > wrote: > >> > >> It depends on the purpose of exposing Provider. If you are exposing > your > >> own Provider implementations, just make them implement guice's interface > >> (for internal use) and an identical interface of your own (for exposure > to > >> the component's clients). > >> public interface com.foo.Provider<T> { > >> T get(); > >> } > >> class MyProvider<T> implements com.foo.Provider<T>, > >> com.google.inject.Provider<T> { > >> T get(); > >> } > >> If you are exposing arbitrary Providers created by Guice, wrap them in > >> your own interface. > >> > >> final class MyProvider<T> implements com.foo.Provider<T> { > >> MyProvider(com.google.inject.Provider<T> guiceProvider) { ... } > >> T get() { > >> return guiceProvider.get(); > >> } > >> } > >> You can do a similar wrapping if you're accepting Providers from the > >> client. > >> > >> On Thu, Apr 23, 2009 at 11:00 AM, Adrian Cole <[email protected]> > wrote: > >>> > >>> Perhaps... Although if my api interface extends a guice one, I may as > >>> well have used the guice one, right? The user would still need guice > >>> libraries loaded or the IDE would turn somewhat red. Other alternates > might > >>> include putting the guice Provider interface into my api jar. However, > I'd > >>> like to avoid exposing guice in my external apis. > >>> Thanks for the response... I do appreciate it. Do you have any other > >>> ideas? > >>> -Adrian > >>> > >>> On Thu, Apr 23, 2009 at 4:45 PM, Adam Ruggles <[email protected]> > >>> wrote: > >>>> > >>>> Couldn't you make your provider interface extend the Guice one? > >>>> > >>>> On Thu, Apr 23, 2009 at 7:07 AM, AdrianCole <[email protected]> > wrote: > >>>>> > >>>>> Hello, > >>>>> > >>>>> I'd like to minimize the compile-time dependency of guice on an > >>>>> application who wants to use my guiced component. > >>>>> > >>>>> I'd like to provide a method: > >>>>> > >>>>> Provider<Foo> void getFooProvider() > >>>>> > >>>>> Difference is that I'd like to use the interface com.foo.Provider as > >>>>> opposed to the guice one. > >>>>> > >>>>> Is there a way to make this happen? > >>>>> > >>>>> Thanks, > >>>>> -Adrian > >>>>> > >>>>> > >>>> > >>>> > >>>> > >>> > >>> > >>> > >> > >> > >> > > > > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
