strange thing are that my multibinder on this actually works, so if I
retrieve the dependency via that I get no errors.

2011/10/21 nino martinez wael <[email protected]>:
> And why this message comes aswell:
>
> Unable to create binding for
> com.netdesign.dao.cisco.v7.uccx.CiscoUCCX7WallBoardDataProvider. It
> was already configured on one or more child injectors or private
> modules
>    bound at 
> com.netdesign.dao.cisco.general.uccx.CiscoUCCXModule.configure(CiscoUCCXModule.java:87)
>    bound at 
> com.netdesign.dao.cisco.general.uccx.CiscoUCCXModule.configure(CiscoUCCXModule.java:86)
>  If it was in a PrivateModule, did you forget to expose the binding?
>
> Yes it is in a PrivateModule but I did expose it in the parent injector..
>
> 2011/10/20 nino martinez wael <[email protected]>:
>> Ok, so back to the original question.
>>
>> Why am I getting the exception that the binding could not be created .
>>
>> "It was already configured on one or more child injectors or private"
>>
>> So thats when the modules are being booted. One of the submodules are
>> getting this when it should be injected from the parent..?
>>
>>
>>
>> 2011/10/20 Sam Berlin <[email protected]>:
>>> In that case, you'd just do what you're doing -- use
>>> Injector.createChildInjector and build up your modules at runtime.  They'd
>>> behave effectively like PrivateModules (child bindings are cordoned off from
>>> siblings or the parent), with the caveat that you can't expose things from
>>> the child to the parent.  You'd get the behavior where your child's module
>>> can base its behavior on things bound in the parent module, because the
>>> child module is being used at runtime instead of injector-creation-time.
>>> sam
>>>
>>> On Thu, Oct 20, 2011 at 2:06 PM, nino martinez wael
>>> <[email protected]> wrote:
>>>>
>>>> I am literally meaning this:
>>>>
>>>> "Are things bound in the parent module accessible in the private
>>>> module -- as in the module itself"
>>>>
>>>> This is currently what I am doing now with the injectors and
>>>> childinjectors.. Since the logic are that childs only can depend on
>>>> parents. Im running a very dynamic configuration environment, where
>>>> modules are discovered at runtime, thats why it has to be this way.
>>>>
>>>> regards Nino
>>>>
>>>> 2011/10/20 Sam Berlin <[email protected]>:
>>>> > Yes, stuff from parent modules are accessible to things bound in the
>>>> > private
>>>> > modules.  Things bound in private modules are not accessible to things
>>>> > bound
>>>> > in parent modules unless the bindings are exposed.
>>>> > As far as the question, "What if I need stuff that are setup in parent
>>>> > module injected in the private module?"  -- This can be a trick
>>>> > question.
>>>> >  If you literally mean, "Are things bound in the parent module
>>>> > accessible in
>>>> > the private module -- as in the module itself" then the answer is no.
>>>> >  If
>>>> > you mean are things from the parent module available to objects setup
>>>> > through the private module's bindings, then the answer is yes.
>>>> > For illustration:
>>>> > ParentModule {
>>>> >    configure() {
>>>> >        bind(Foo.class);
>>>> >        install(new PrivateModule() {
>>>> >           @Inject Foo foo;
>>>> >           configure() {
>>>> >               if (foo.toggle()) {
>>>> >                 bind(Bar.class);
>>>> >               } else {
>>>> >                 bind(Baz.class);
>>>> >  }}});}} // lots of closing braces
>>>> > The above doesn't work.  Nothing can be injected into Modules or
>>>> > PrivateModules, because Modules are how Guice figures out what can be
>>>> > injected in the first place.  You have a chicken/egg problem if you want
>>>> > to
>>>> > inject things into Modules.
>>>> > BUT! ... if you remove the @Inject and the if/else from the
>>>> > PrivateModule,
>>>> > and you just want to see if Bar can have an @Inject Foo in it, the
>>>> > answer is
>>>> > yes.
>>>> > sam
>>>> > On Thu, Oct 20, 2011 at 1:11 PM, nino martinez wael
>>>> > <[email protected]> wrote:
>>>> >>
>>>> >> Aha! so if I create a private module in a module then it will act as a
>>>> >> childinjector and get stuff from the parent module acesible to it?
>>>> >> What if I need stuff that are setup in parent module injected in the
>>>> >> private module?
>>>> >>
>>>> >> 2011/10/20 Sam Berlin <[email protected]>:
>>>> >> > PrivateModules are effectively child injectors.  There's no way to
>>>> >> > explicitly create a "child injector" within a Module, PrivateModule
>>>> >> > is
>>>> >> > the
>>>> >> > only tool you're given.  So it's easiest to illustrate within Modules
>>>> >> > using
>>>> >> > PrivateModules.  Creating child injectors at runtime follows the same
>>>> >> > rules.
>>>> >> > sam
>>>> >> >
>>>> >> > On Thu, Oct 20, 2011 at 12:47 PM, nino martinez wael
>>>> >> > <[email protected]> wrote:
>>>> >> >>
>>>> >> >> Although in your text you dont mention childinjectors... only
>>>> >> >> submodules?
>>>> >> >>
>>>> >> >> 2011/10/20 nino martinez wael <[email protected]>:
>>>> >> >> > I think its exactly what you are writing I am doing thats why i
>>>> >> >> > don't
>>>> >> >> > understand the error. I don't even bind more than one interface of
>>>> >> >> > the
>>>> >> >> > same type on any level..
>>>> >> >> >
>>>> >> >> > 2011/10/20 Sam Berlin <[email protected]>:
>>>> >> >> >> Do you have a concrete example of a few bindings and how you want
>>>> >> >> >> them
>>>> >> >> >> organized? I'm having trouble understanding what you're going
>>>> >> >> >> for.
>>>> >> >> >> Here's some examples of visibility with private modules &
>>>> >> >> >> bindings:
>>>> >> >> >> ParentModule binds Foo & PrivateSubModuleA & PrivateSubModuleB
>>>> >> >> >>    PrivateSubModuleA binds Bar, Baz & PrivateSubSubModuleA,
>>>> >> >> >> exposes Baz
>>>> >> >> >>      PrivateSubSubModuleA binds & exposes Buz
>>>> >> >> >>    PrivateSubModuleB binds Bar, Boz & PrivateSubSubModuleB,
>>>> >> >> >> exposes Boz
>>>> >> >> >>      PrivateSubSubModuleB binds & exposes Buz
>>>> >> >> >> Foo cannot be bound in any module other than ParentModule because
>>>> >> >> >> all
>>>> >> >> >> modules already see Foo.  Foo can be injected by anything, since
>>>> >> >> >> it's
>>>> >> >> >> available everywhere.
>>>> >> >> >> Bar can be bound in both PrivateSubModuleA & PrivateSubModuleB
>>>> >> >> >> because
>>>> >> >> >> they
>>>> >> >> >> are sibling private modules and the binding isn't exposed.
>>>> >> >> >>  Bar cannot
>>>> >> >> >> be
>>>> >> >> >> bound in PrivateSubSubModuleA or PrivateSubSubModuleB, because
>>>> >> >> >> their
>>>> >> >> >> parent
>>>> >> >> >> modules have Bar bound.  Foo cannot inject Bar, because it isn't
>>>> >> >> >> visible to
>>>> >> >> >> things from ParentModule.
>>>> >> >> >> Baz cannot be bound in any module other
>>>> >> >> >> than PrivateSubModuleA because
>>>> >> >> >> all
>>>> >> >> >> modules already see Baz (since it's exposed to ParentModule).
>>>> >> >> >>  Baz can
>>>> >> >> >> be
>>>> >> >> >> injected by anything, since it's available
>>>> >> >> >> everywhere.
>>>> >> >> >> Buz can be bound in the SubSub modules, because they are
>>>> >> >> >> effectively
>>>> >> >> >> the
>>>> >> >> >> same namespace as Bar -- visible to the Sub & SubSub modules
>>>> >> >> >> only.
>>>> >> >> >>  Foo cannot inject Buz, because it isn't visible to things from
>>>> >> >> >> ParentModule.
>>>> >> >> >> Boz cannot be bound in any module other than PrivateSubModuleB
>>>> >> >> >> because
>>>> >> >> >> all
>>>> >> >> >> modules already see Boz (since it's exposed to ParentModule).
>>>> >> >> >>  Boz can
>>>> >> >> >> be
>>>> >> >> >> injected by anything, since it's available everywhere.
>>>> >> >> >>
>>>> >> >> >> sam
>>>> >> >> >>
>>>> >> >> >> On Thu, Oct 20, 2011 at 11:05 AM, nino martinez wael
>>>> >> >> >> <[email protected]> wrote:
>>>> >> >> >>>
>>>> >> >> >>> I have this setup
>>>> >> >> >>>
>>>> >> >> >>> InjectorA-ModuleA-InjectorB-ModuleB-InjectorC-ModuleC-Final
>>>> >> >> >>> injector
>>>> >> >> >>>
>>>> >> >> >>>  \----ModuleD--/
>>>> >> >> >>>
>>>> >> >> >>> On the B level there are multiple Modules which all are private
>>>> >> >> >>> however they possibly expose a interface that possible used in
>>>> >> >> >>> one
>>>> >> >> >>> of
>>>> >> >> >>> the multiple modules on layer C. However I get this message on
>>>> >> >> >>> the
>>>> >> >> >>> c
>>>> >> >> >>> level when it tries to inject the interface from B level:
>>>> >> >> >>>
>>>> >> >> >>>  Unable to create binding for
>>>> >> >> >>>
>>>> >> >> >>> com.netdesign.remedy.provider.RemedyWallboardDataProviderInterface.
>>>> >> >> >>> It
>>>> >> >> >>> was already configured on one or more child injectors or private
>>>> >> >> >>> modules
>>>> >> >> >>>
>>>> >> >> >>> will private module only expose to siblings or does it work on
>>>> >> >> >>> children
>>>> >> >> >>> aswell?
>>>> >> >> >>>
>>>> >> >> >>> regards Nino
>>>> >> >> >>>
>>>> >> >> >>> --
>>>> >> >> >>> 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.
>>>> >> >>
>>>> >> >
>>>> >> > --
>>>> >> > 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.
>>>> >
>>>>
>>>> --
>>>> 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