We use private modules in conjunction with multibinder and names annotated
to create a driver like framework, using a syd interface. When i have more
time ill put up a blog or something somewhere.
On Apr 6, 2011 2:51 PM, "Fred Faber" <[email protected]> wrote:
> Top-level view: you seem to want to configure classes within A with the
Foo
> that is exported from B. If A is a private module, simply install B
without
> making B a PrivateModule. That will make the bindings in B be visible to
> everything in A, but it won't export anything from B into a potential
> collision with bindings in C.
>
> Similarly, at least from the simplified example, I don't know that you'd
> need to export Foo from C.
>
> Fred
>
> On Wed, Apr 6, 2011 at 1:09 AM, Andy <[email protected]> wrote:
>
>> I understand what your saying about PrivateModules not being ideal,
>> but I need to use them.
>>
>> From my test code, I am unable to add bindings for the same class is
>> PrivateModule legs.
>>
>> class A extends PrivateModule
>> {@Override
>> protected void configure() {install(new B());
>> }
>>
>> class B extends PrivateModule
>> {@Override
>> protected void configure() {
>> bind(Foo.class).to(FooImpl.class);
>> expose(Foo.class);
>> }}
>>
>> class C extends PrivateModule
>> {
>> @Override
>> protected void configure() {
>> bind(Foo.class).to(FooImpl.class);
>> expose(Foo.class);
>> }}
>>
>>
>> Creating an Injector with Modules A and C breaks,
>> i.e.
>> Guice.createInjector(new A(),new C());
>>
>> Before I asked this question, this was basically my setup. What I
>> dont understand is, that I'm not exposing the Foo.class binding from
>> the A module, so why it is interfering with the binding in the C
>> module.
>>
>> When you said "Exposing a binding makes it visible to the containing
>> module and its sibling modules.",
>>
>> I thought perhaps that I could modify module A to wrap B in a
>> PrivateModule,
>> public class A extends PrivateModule{
>> @Override
>> protected void configure() {
>> install(new PrivateModule() {
>> @Override
>> protected void configure() {
>> install(new B());
>> }});}}
>>
>> No dice though, this fails too. Any recommendations?
>>
>> --
>> 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.
>>
>>
>
> --
> 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.
>

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