I don't know, that's what it seems like (url on one single line): http://www.google.be/codesearch/p?hl=fr#a9vGG9ncPig/src/share/classes/java/util/ServiceProvider.java
2009/5/10 Dan Godfrey <[email protected]> > > Are they changing it for Java7? I haven't read about using annotations > with the ServiceLoader. > http://java.sun.com/javase/6/docs/api/java/util/ServiceLoader.html > > > On May 8, 12:07 pm, Olivier <[email protected]> wrote: > > > > About the ServiceProvider. Is it the annotation that "will" exist in > > Java 7, with the base existing as java.util.ServiceLoader in Java 6? > > This system is basicly what I want to have (and was about to > > implement), but I didn't know about it until I researched after your > > reply. (So, many thanks!) > > > > On 8 mai, 11:47, Dan Godfrey <[email protected]> wrote: > > > > > You'd still need to use the Multibinder to register more than one > > > implementation of the same interface though or jump throw some hoops > > > using eager singletons (see below). > > > > > We're doing something similar, but using the Service Provider > > > interface rather than a properties file. This allows us to just drop a > > > jar onto the classpath and any "plugins" defined in that jar are > > > automatically added to the system at start-up. It means that the > > > "core" system doesn't need any dependencies upon the plugins either. > > > > > * As we're not using Guice 2 yet, we actually bind the plugins as > > > eager singletons using a different annotation for each, and have an > > > @inject method on the plugin that it uses to register itself with a > > > plugin registry. > > > > > On May 7, 6:57 pm, Eduardo Nunes <[email protected]> wrote: > > > > > > I'm using a different approach. I created a main module that reads a > > > > modules.properties file with full path to each module that should be > > > > installed. Each module implements an interface that provides a method > > > > to create the guice module, something like this: > > > > > > interface Module { > > > > > > google.Module createGuiceModule(); > > > > > > /* some other domain relevant methods */ > > > > > > } > > > > > > In the configure method of the MainModule, I call install method for > > > > each module that should be installed. > > > > > > It looks a little bit complex because my Module interface has more > > > > things. I'm using warp-persist, so my Module interface has two other > > > > methods related to it: > > > > - Class<Serializable> getEntities(); > > > > - Class<Object> getAccessors(); > > > > > > My framework will be opensource soon, the source code is not stable > yet. > > > > > > Well, I hope that I helped you a little bit, > > > > > > 2009/5/7 Olivier Grégoire <[email protected]>: > > > > > > > Yes, you seem to be right. I'll have to think (and test) a bit more > > > > > MultiBinding, especially in the case I would like the extension to > be > > > > > hotplugged and unplugged. > > > > > > > Thank you anyway! > > > > > > > Olivier > > > > > > > Daniel a écrit : > > > > >> Use the MultiBinding functionality. > > > > > > >> > http://publicobject.com/2008/05/guice-multibindings-extension-checked... > > > > > > >> On May 6, 4:21 pm, Olivier Grégoire <[email protected]> wrote: > > > > >>> Dears, > > > > > > >>> Behind my title, I have to admit that I obviously know about the > > > > >>> Injector.createChildInjector(Module...) method. However I was > wondering > > > > >>> essentially about modules that interact between them: > > > > > > >>> I hope my explanation will be clear enough: > > > > > > >>> Main module: > > > > >>> + interface Plugin (no implementation) > > > > >>> + Plugin manager > > > > >>> + injector mainInjector created through Guice.createInjector() > > > > > > >>> Extension 1 module: > > > > >>> + defines an implementation of Plugin > > > > >>> + injector ext1Injector created through > mainInjector.createChildInjector() > > > > > > >>> Extension 2 module (does not require any components of Extension > 1): > > > > >>> + defines an implementation of Plugin > > > > >>> + injector ext2Injector created through > mainInjector.createChildInjector() > > > > > > >>> Extension 3 module (requires components of Extension 1) > > > > >>> + defines an implementation of Plugin (aouch : it already exists) > > > > >>> + injector ext3Injector created through > ext1Injector.createChildInjector() > > > > > > >>> The problem of extension 3 is that, since I create an injector > with the > > > > >>> extension 1 injector, I cannot provide a new implementation for > my Plugin > > > > >>> interface. > > > > > > >>> The file in attachment shows a basic implementation of the error > I receive. > > > > > > >>> The problem can easily be worked around by creating another entry > point in > > > > >>> Extension 1 accessible to extension 3, but I don't find it > efficient at all > > > > >>> since the plugin-manager is handled at the main module level, and > the main > > > > >>> module shouldn't know the various entry points of extension 1. > > > > > > >>> I've immediately thought about Modules.override() but it only > overrides > > > > >>> Modules with Modules, not Injectors with Modules. > > > > > > >>> I can clearly see a problem here. However I don't know how to > solve it with > > > > >>> the current implementation of Guice. I also don't know how to > handle a > > > > >>> single module that needs two modules as prerequisites. > > > > > > >>> So, does anyone know how I can manage extensions that need > components found > > > > >>> in other extensions with Guice? > > > > > > >>> This is my first modular application, so if all this is based > upon > > > > >>> misunderstood basics about modular applications, please let me > know why. > > > > > > >>> Thank you and best regards, > > > > > > >>> Olivier > > > > > > >>> ModularityTest.java > > > > >>> 2KViewDownload > > > > > > -- > > > > Eduardo S. Nuneshttp://e-nunes.com.br > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
