Ever wanted to:
  1) Set default binding in a library or framework that users can change?
  2) Inject something into a library or framework that isn't required, but
would be better if a user could set it?
  3) Inject an optional value into a constructor?

OptionalBinder lets you do that.  Christian just pushed out some of our
recent internal changes, including the introduction of OptionalBinder to
the multibindings extension.

Some example usage:

 1) Setting a default binding that a user can override:
   Library: *OptionalBinder.newOptionalBinder(binder(), Foo.class)*
*                   .setDefault().to(DefaultFoo.class);*
   At this point, code can inject '*Foo*' (or *Optional<Foo>)*, and will
get a *DefaultFoo.*

   User: *OptionalBinder.newOptionalBinder(binder(), Foo.class)*
*                  .setBinding().to(CustomFoo.class);*
   Once a user calls setBinding(), injections of *Foo* (or
*Optional<Foo>)* will
start providing *CustomFoo* instead.

 2) Setting a binding that isn't required (e.g, no default value), but a
user can supply.
    Library: *OptionalBinder.newOptionalBinder(binder(), Foo.class);*
   At this point, code *can't* inject *Foo* -- it will fail saying the
binding isn't supplied.  Code *can* (and should) inject *Optional<Foo>*,
though, and the optional will be absent.

   User: *OptionalBinder.newOptionalBinder(binder(), Foo.class)*
*                  .setBinding().to(CustomFoo.class);*
   Once a user calls setBinding(), *Optional<Foo>* will be present and
supply the *CustomFoo*.  Also, *Foo* can be directly injected now (although
only user could should do that, since the user code is the only part that
guarantees the binding will be there -- library code should still inject the
* Optional<Foo>*).

Please report back if you have any issues or suggestions for improvement.

Thanks!

 sam

-- 
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/d/optout.

Reply via email to