Packages

o

play.utils

Reflect

object Reflect

Source
Reflect.scala
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Reflect
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. class SubClassOf[T] extends AnyRef

Value Members

  1. def bindingsFromConfiguration[ScalaTrait, JavaInterface, JavaAdapter <: ScalaTrait, JavaDelegate <: JavaInterface, Default <: ScalaTrait](environment: api.Environment, config: Configuration, key: String, defaultClassName: String)(implicit scalaTrait: SubClassOf[ScalaTrait], javaInterface: SubClassOf[JavaInterface], javaAdapter: ClassTag[JavaAdapter], javaDelegate: ClassTag[JavaDelegate], default: ClassTag[Default]): Seq[Binding[_]]

    Lookup the given key from the given configuration, and provide bindings for the ScalaTrait to a class by that key.

    Lookup the given key from the given configuration, and provide bindings for the ScalaTrait to a class by that key.

    The end goal is to provide a binding for ScalaTrait. The logic for finding the implementation goes like this:

    - If the value of the configured key is provided, this indicates the user will provide their own binding, so return nothing. - If the value of the configured key is a class that exists, then use that - If the value of the configured key is not a class that exists, fail - Otherwise if no configuration value is found for key, then if there is a class found with name defaultClassName, use that - Otherwise, use the class Default

    If a class has been located, convert that to a binding, by the following rules:

    - If it's a subclass of ScalaTrait bind it directly - Otherwise, if it's a subclass of JavaInterface, bind that to JavaInterface, and then also return a binding of JavaAdapter to ScalaTrait - Otherwise, fail

    ScalaTrait

    The trait to bind

    JavaInterface

    The Java interface for Java versions of the implementation

    JavaAdapter

    An adapter class that depends on JavaInterface and provides ScalaTrait

    JavaDelegate

    An implementation of JavaInterface that delegates to ScalaTrait, for when the configured class is not an instance of JavaInterface.

    Default

    The default implementation of ScalaTrait if no user implementation has been provided

    environment

    The environment to load classes from

    config

    The configuration

    key

    The key to look up the classname from the configuration

    returns

    Zero or more bindings to provide ScalaTrait

  2. def configuredClass[ScalaTrait, JavaInterface, Default <: ScalaTrait](environment: api.Environment, config: Configuration, key: String, defaultClassName: String)(implicit scalaTrait: SubClassOf[ScalaTrait], javaInterface: SubClassOf[JavaInterface], default: ClassTag[Default]): Option[Either[Class[_ <: ScalaTrait], Class[_ <: JavaInterface]]]

    Lookup the given key from the given configuration, and load it either as an instance of ScalaTrait, or JavaInterface.

    Lookup the given key from the given configuration, and load it either as an instance of ScalaTrait, or JavaInterface.

    If no user provided class can be found, then return Default.

    - If the value of the configured key is provided, this indicates the user will provide their own binding, so return None. - If the value of the configured key is a class that exists, then use that - If the value of the configured key is not a class that exists, fail - Otherwise if no configuration value is found for key, then if there is a class found with name defaultClassName, use that - Otherwise, use the class Default

    If a class has been located, then return Some, according to the following rules:

    - If it's a subclass of ScalaTrait return that as Left - Otherwise, if it's a subclass of JavaInterface, return that as Right - Otherwise, fail

    ScalaTrait

    The Scala trait to return

    JavaInterface

    The Java interface for Java versions of the implementation

    Default

    The default implementation of ScalaTrait if no user implementation has been provided

    environment

    The environment to load classes from

    config

    The configuration

    key

    The key to look up the classname from the configuration

  3. def createInstance[T](clazz: Class[_])(implicit arg0: ClassTag[T]): T
  4. def createInstance[T](fqcn: String, classLoader: ClassLoader)(implicit arg0: ClassTag[T]): T
  5. def getClass[T](fqcn: String, classLoader: ClassLoader)(implicit arg0: ClassTag[T]): Class[_ <: T]
  6. def simpleName(clazz: Class[_]): String
  7. object SubClassOf