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

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

Attachment: ModularityTest.java
Description: Binary data

Reply via email to