name.remal.gradle_plugins.dsl.extensions.name.remal.proxy.CompositeInvocationHandler.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Remal Gradle plugins: gradle-plugins-kotlin-dsl
package name.remal.gradle_plugins.dsl.extensions
import name.remal.proxy.CompositeInvocationHandler
import java.lang.reflect.Method
fun CompositeInvocationHandler.appendMethodHandler(name: String, vararg paramTypes: Class<*>, handler: (proxy: Any, method: Method, args: Array) -> Any?) = appendMethodHandler(
condition@{
if (it.parameterCount != paramTypes.size) return@condition false
if (it.name != name) return@condition false
it.parameterTypes.forEachIndexed { index, type ->
if (!type.isAssignableFrom(paramTypes[index])) return@condition false
}
return@condition true
},
handler@{ proxy, method, args ->
return@handler handler(proxy, method, args ?: emptyArray())
}
)