The same multi binder is given, yes. If I recall correctly, the multi binder itself has no scope, but the bindings within do. I'd need to look it up. That said, if you bind several multi binders to the same key… you're not creating a new one (it's a mis-naming of the newMultibinder() method). You get a new multi binder if a multi binder doesn't already exist for that key. I any other case, you contribute bindings to the already-existing multi binder.

Christian.

On 13 Jun 2013, at 12:10, [email protected] wrote:

I have to admit I'm not 100% about what is the *scope* of a Multibinder...

My idea if that by using "final" on my main module's configure() method, I
can make sure it is not overriden :
-------------------
public class MainModule extends AbstractModule
{
@Override
*final* protected void configure()
{
overridableConfigure();
manageMultibindedBindings();
}

protected void overridableConfigure()
{
// - standards bindings + third-party modules bindings
// - can be overriden
}

*final *protected void manageMultibindedBindings()
{
// add more bindings using the Multibinder's elements.
}
}
-------------------
Then, I'm sure all the elements are binded in the Multibinder when
manageMultibindedBindings() is called, right?

But if another module is binded *at the same level* than MainModule, would
the same Multibinder will shared? What exactly is the scope of a
Multibinder? (I guess should so some tests by myself to validate that!)

Thanks for the help!



On Thursday, June 13, 2013 2:09:03 PM UTC-4, Christian Gruber wrote:

One problem of obtaining this information is that module/binding
resolution order is a brittle thing to rely on, and you have no
guarantee that all or any particular bindings would be resolved by the
time you hit your configure() method.

Now it sounds like you don't need all the bindings, and we could in
theory expose a way to get at the current set of bindings in a multi
binder, but I am concerned to know how you would use this in practice…
how would it be useful if you couldn't know you had the necessary
bindings in place before reading from them? What would you do if later
modules added more bindings?

c.

On 13 Jun 2013, at 10:52, [email protected] <javascript:> wrote:

I want to allow third-party modules to be able to bind some custom
ISomeInterface elements (well,* classes* of ISomeInterface in fact :
"Class<? extends ISomeInterface >"). I use Multibinder for that and it
works great.

But I would like to be able, at the very end of my main module's
configure() method, to process the elements that have been binded in
the
Multibinder to add further bindings for those. More specifically, I'd
like
to be able to automatically bind an AssistedFactory for each of the
elements that have been multibinded.

Is there a way to retrieve the currently binded elements of a
Multibinder,
without the injector been created yet (while still being in
"configure()")?

Something like :

-------------------
Multibinder<Class<? extends ISomeInterface>> myMultibinder =
Multibinder.newSetBinder(binder(), new TypeLiteral<Class<? extends
ISomeInterface >>(){});
Set<Class<? extends ISomeInterface>> currentBindings =
myMultibinder.getBindings();
-------------------

Then I would use the "currentBindings" to bind assisted factories.

Any idea?


--
You received this message because you are subscribed to the Google
Groups "google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected] <javascript:>.
To post to this group, send email to [email protected]<javascript:>.

Visit this group at http://groups.google.com/group/google-guice.
For more options, visit https://groups.google.com/groups/opt_out.


Christian Gruber :: Google, Inc. :: Java Core Libraries :: Dependency
Injection
email: [email protected] <javascript:> :::: mobile: +1 (646) 807-9839


--
You received this message because you are subscribed to the Google Groups "google-guice" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
For more options, visit https://groups.google.com/groups/opt_out.


Christian Gruber :: Google, Inc. :: Java Core Libraries :: Dependency Injection
email: [email protected] :::: mobile: +1 (646) 807-9839

--
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to