It does not work with abstract type members. The following code is not working, but would be very nice if it did:
trait Resource {
type T <: Product
def resourceForm = Form(CaseClassMapping.mapping[T])
...
}
trait ApplesComponent extends Resource {
type T = Apple
case class Apple(size:Int, color: String)
...
}
I think it can be achieved using WeakTypeTag, but I'm not sure.