GH-2332 - Simplify generics declaration in Kotlin extensions.
This commit is contained in:
@@ -43,7 +43,7 @@ inline infix fun Link.andAffordances(setup: WebMvcAffordanceBuilderDsl.() -> Uni
|
||||
* @author Roland Kulcsár
|
||||
* @since 1.0
|
||||
*/
|
||||
inline fun <reified C> afford(func: C.() -> Any): Affordance = afford(methodOn(C::class.java as Class<C & Any>).run(func))
|
||||
inline fun <reified C : Any> afford(func: C.() -> Any): Affordance = afford(methodOn(C::class.java as Class<C>).run(func))
|
||||
|
||||
/**
|
||||
* Provide an [Affordance]s DSL to help write idiomatic Kotlin code.
|
||||
@@ -53,9 +53,9 @@ inline fun <reified C> afford(func: C.() -> Any): Affordance = afford(methodOn(C
|
||||
*/
|
||||
open class WebMvcAffordanceBuilderDsl(val affordances: MutableList<Affordance> = mutableListOf()) {
|
||||
|
||||
inline fun <reified C> afford(func: C.() -> Any) {
|
||||
inline fun <reified C : Any> afford(func: C.() -> Any) {
|
||||
|
||||
val affordance = afford(methodOn(C::class.java as Class<C & Any>).func())
|
||||
val affordance = afford(methodOn(C::class.java as Class<C>).func())
|
||||
affordances.add(affordance)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ import kotlin.reflect.KClass
|
||||
* @author Greg Turnquist
|
||||
* @since 1.0
|
||||
*/
|
||||
inline fun <reified C> linkTo(func: C.() -> Any): WebMvcLinkBuilder = linkTo(methodOn(C::class.java as Class<C & Any>).run(func))
|
||||
inline fun <reified C : Any> linkTo(func: C.() -> Any): WebMvcLinkBuilder = linkTo(methodOn(C::class.java as Class<C>).run(func))
|
||||
|
||||
/**
|
||||
* Create a [Link] with the given [rel].
|
||||
@@ -49,7 +49,7 @@ infix fun WebMvcLinkBuilder.withRel(rel: String): Link = withRel(rel)
|
||||
* @author Roland Kulcsár
|
||||
* @since 1.0
|
||||
*/
|
||||
fun <C, R : RepresentationModel<R>> R.add(controller: Class<C & Any>, links: WebMvcLinkBuilderDsl<C & Any, R>.(R) -> Unit): R {
|
||||
fun <C : Any, R : RepresentationModel<R>> R.add(controller: Class<C>, links: WebMvcLinkBuilderDsl<C, R>.(R) -> Unit): R {
|
||||
|
||||
val builder = WebMvcLinkBuilderDsl(controller, this)
|
||||
builder.links(this)
|
||||
@@ -73,12 +73,12 @@ fun <C : Any, R : RepresentationModel<R>> R.add(controller: KClass<C>, links: We
|
||||
* @author Roland Kulcsár
|
||||
* @since 1.0
|
||||
*/
|
||||
open class WebMvcLinkBuilderDsl<C, R : RepresentationModel<R>>(val controller: Class<C & Any>, val resource: R) {
|
||||
open class WebMvcLinkBuilderDsl<C : Any, R : RepresentationModel<R>>(val controller: Class<C>, val resource: R) {
|
||||
|
||||
/**
|
||||
* Create a [WebMvcLinkBuilder] pointing to [func] method.
|
||||
*/
|
||||
fun <R> linkTo(func: C.() -> R & Any): WebMvcLinkBuilder = linkTo(methodOn(controller).run(func))
|
||||
fun <R : Any> linkTo(func: C.() -> R): WebMvcLinkBuilder = linkTo(methodOn(controller).run(func))
|
||||
|
||||
/**
|
||||
* Add a link with the given [rel] to the [resource].
|
||||
|
||||
Reference in New Issue
Block a user