|
|
|
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
|
|
|
|
/* |
|
|
|
|
* Copyright 2002-2019 the original author or authors. |
|
|
|
|
* Copyright 2002-2020 the original author or authors. |
|
|
|
|
* |
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
|
@ -66,10 +66,10 @@ internal fun isSuspendingFunction(method: Method) = method.kotlinFunction!!.isSu
@@ -66,10 +66,10 @@ internal fun isSuspendingFunction(method: Method) = method.kotlinFunction!!.isSu
|
|
|
|
|
* @since 5.2 |
|
|
|
|
*/ |
|
|
|
|
@Suppress("UNCHECKED_CAST") |
|
|
|
|
internal fun invokeSuspendingFunction(method: Method, bean: Any, vararg args: Any?): Publisher<*> { |
|
|
|
|
internal fun invokeSuspendingFunction(method: Method, target: Any, vararg args: Any?): Publisher<*> { |
|
|
|
|
val function = method.kotlinFunction!! |
|
|
|
|
val mono = mono(Dispatchers.Unconfined) { |
|
|
|
|
function.callSuspend(bean, *args.sliceArray(0..(args.size-2))).let { if (it == Unit) null else it } |
|
|
|
|
function.callSuspend(target, *args.sliceArray(0..(args.size-2))).let { if (it == Unit) null else it } |
|
|
|
|
}.onErrorMap(InvocationTargetException::class.java) { it.targetException } |
|
|
|
|
return if (function.returnType.classifier == Flow::class) { |
|
|
|
|
mono.flatMapMany { (it as Flow<Any>).asFlux() } |
|
|
|
|
|