Allows binding via type parameters.
Allows binding via type parameters. Mix into AbstractModule
(or subclass) to allow using a type parameter instead of
classOf[Foo]
or new TypeLiteral[Bar[Foo]] {}
.
For example, instead of
class MyModule extends AbstractModule { def configure { bind(classOf[Service]).to(classOf[ServiceImpl]).in(classOf[Singleton]) bind(classOf[CreditCardPaymentService]) bind(new TypeLiteral[Bar[Foo]]{}).to(classOf[FooBarImpl]) bind(classOf[PaymentService]).to(classOf[CreditCardPaymentService]) } }
use
class MyModule extends AbstractModule with ScalaModule { def configure { bind[Service].to[ServiceImpl].in[Singleton] bind[CreditCardPaymentService] bind[Bar[Foo]].to[FooBarImpl] bind[PaymentService].to[CreditCardPaymentService] } }
Note This syntax allows binding to and from generic types. It doesn't currently allow bindings between wildcard types because the manifests for wildcard types don't provide access to type bounds.
Provider for a Scala Immutable Map from a Java Map.
Provider for a Scala Immutable Map from a Java Map.
Example:
.toProvider(new MapOfKToSetOfVProvider[K, V](Key.get(typeLiteral[JMap[K, JSet[V]]])))
Provider for a Scala Immutable Map from a Java Map.
Provider for a Scala Immutable Map from a Java Map.
Example:
.toProvider(new MapProvider[K, V](Key.get(typeLiteral[JMap[K, V]])))
Provider for Scala's Option from Guava's Optional.
Provider for Scala's Option from Guava's Optional.
Example:
.toProvider(new OptionProvider[T](Key.get(typeLiteral[Optional[T]])))
Analog to Guice's MapBinder
Analog to Guice's MapBinder
Use ScalaMapBinder.newMapBinder to create a map binder that is scala friendly.
Analog to Guice's Multibinder
Analog to Guice's Multibinder
Use ScalaMultibinder.newSetBinder to create a multibinder that is scala friendly.
Analog to Guice's OptionalBinder
Analog to Guice's OptionalBinder
Use ScalaOptionBinder.newOptionBinder to create an option binder that is scala friendly.
Provider for a Scala Immutable Set from a Java Set.
Provider for a Scala Immutable Set from a Java Set.
Example:
.toProvider( new SetProvider[T]( Key.get( typeLiteral[JSet[T]] ) ) )
Extensions for Guice's binding DSL.
Extensions for Guice's binding DSL.
These allow using a type parameter instead of classOf[Foo]}
or new TypeLiteral[Bar[Foo]] {}
. The extra methods are
named as those in the normal binding DSL suffixed with Type
.
For example, instead of
binder.bind(new TypeLiteral[Bar[Foo]]{}).to(classOf[FooBarImpl])
use
import BindingExtensions._
binder.bindType[Bar[Foo]].toType[FooImpl]
Note This syntax allows binding to and from generic types. It doesn't currently allow bindings between wildcard types because the manifests for wildcard types don't provide access to type bounds.
Create a com.google.inject.TypeLiteral from a scala.reflect.Manifest.
Create a com.google.inject.TypeLiteral from a scala.reflect.Manifest. Subtypes of scala.AnyVal will be converted to their corresponding Java wrapper classes.