Reflect

play.utils.Reflect
object Reflect

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
Reflect.type

Members list

Type members

Classlikes

class SubClassOf[T](val runtimeClass: Class[T])

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
object SubClassOf

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
SubClassOf.type

Value members

Concrete methods

def bindingsFromConfiguration[ScalaTrait, JavaInterface, JavaAdapter <: ScalaTrait, JavaDelegate <: JavaInterface, Default <: ScalaTrait](environment: 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

Type parameters

Default

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

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.

JavaInterface

The Java interface for Java versions of the implementation

ScalaTrait

The trait to bind

Value parameters

config

The configuration

environment

The environment to load classes from

key

The key to look up the classname from the configuration

Attributes

Returns

Zero or more bindings to provide ScalaTrait

def configuredClass[ScalaTrait, JavaInterface, Default <: ScalaTrait](environment: 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

Type parameters

Default

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

JavaInterface

The Java interface for Java versions of the implementation

ScalaTrait

The Scala trait to return

Value parameters

config

The configuration

environment

The environment to load classes from

key

The key to look up the classname from the configuration

Attributes

def createInstance[T : ClassTag](fqcn: String, classLoader: ClassLoader): T
def createInstance[T : ClassTag](clazz: Class[_]): T
def getClass[T : ClassTag](fqcn: String, classLoader: ClassLoader): Class[_ <: T]
def simpleName(clazz: Class[_]): String