interface FunctionWrapper<T> : Publisher
FunctionWrapper is common interface for classes storing functions registered in schema by server code. Only up to 9 arguments are supported, because kotlin-reflect doesn't support invoking lambdas, local and anonymous functions yet, making implementation severely limited.
ArityEight |
class ArityEight<T, R, E, W, Q, A, S, D, F> : Base<T> |
ArityFive |
class ArityFive<T, R, E, W, Q, A> : Base<T> |
ArityFour |
class ArityFour<T, R, E, W, Q> : Base<T> |
ArityN |
class ArityN<T> : Base<T> |
ArityNine |
class ArityNine<T, R, E, W, Q, A, S, D, F, G> : Base<T> |
ArityOne |
class ArityOne<T, R> : Base<T> |
AritySeven |
class AritySeven<T, R, E, W, Q, A, S, D> : Base<T> |
AritySix |
class AritySix<T, R, E, W, Q, A, S> : Base<T> |
ArityThree |
class ArityThree<T, R, E, W> : Base<T> |
ArityTwo |
class ArityTwo<T, R, E> : Base<T> |
ArityZero |
class ArityZero<T> : Base<T> |
Base |
abstract class Base<T> : FunctionWrapper<T> |
argumentsDescriptor |
abstract val argumentsDescriptor: Map<String, KType> |
hasReceiver |
denotes whether function is called with receiver argument. Receiver argument in GraphQL is somewhat similar to kotlin receivers: its value is passed by framework, usually it is parent of function property with FunctionWrapper Receiver argument is omitted in schema, and cannot be stated in query document. abstract val hasReceiver: Boolean |
kFunction |
abstract val kFunction: KFunction<T> |
arity |
abstract fun arity(): Int |
hasReturnType |
open fun hasReturnType(): Boolean |
invoke |
abstract suspend fun invoke(vararg args: Any?): T?abstract suspend fun invoke(args: List<Any?>, subscriptionArgs: List<String>, objectWriter: ObjectWriter): T? |
valueParameters |
returns list of function parameters without receiver open fun valueParameters(): List<KParameter> |
on |
fun <T> on(function: KFunction<T>): FunctionWrapper<T>fun <T> on(function: suspend () -> T): FunctionWrapper<T>fun <T, R> on(function: suspend (R) -> T): ArityOne<T, R>fun <T, R> on(function: suspend (R) -> T, hasReceiver: Boolean = false): ArityOne<T, R>fun <T, R, E> on(function: suspend (R, E) -> T, hasReceiver: Boolean = false): ArityTwo<T, R, E>fun <T, R, E, W> on(function: suspend (R, E, W) -> T, hasReceiver: Boolean = false): ArityThree<T, R, E, W>fun <T, R, E, W, Q> on(function: suspend (R, E, W, Q) -> T, hasReceiver: Boolean = false): ArityFour<T, R, E, W, Q>fun <T, R, E, W, Q, A> on(function: suspend (R, E, W, Q, A) -> T, hasReceiver: Boolean = false): ArityFive<T, R, E, W, Q, A>fun <T, R, E, W, Q, A, S> on(function: suspend (R, E, W, Q, A, S) -> T, hasReceiver: Boolean = false): AritySix<T, R, E, W, Q, A, S>fun <T, R, E, W, Q, A, S, G> on(function: suspend (R, E, W, Q, A, S, G) -> T, hasReceiver: Boolean = false): AritySeven<T, R, E, W, Q, A, S, G>fun <T, R, E, W, Q, A, S, G, H> on(function: suspend (R, E, W, Q, A, S, G, H) -> T, hasReceiver: Boolean = false): ArityEight<T, R, E, W, Q, A, S, G, H>fun <T, R, E, W, Q, A, S, G, H, J> on(function: suspend (R, E, W, Q, A, S, G, H, J) -> T, hasReceiver: Boolean = false): ArityNine<T, R, E, W, Q, A, S, G, H, J> |
BaseOperationDef |
abstract class BaseOperationDef<T, R> : Definition, OperationDef<R>, FunctionWrapper<R> |
DirectiveExecution |
class DirectiveExecution : FunctionWrapper<DirectiveResult> |
OperationDef |
interface OperationDef<T> : FunctionWrapper<T>, Depreciable, DescribedDef |
Transformation |
data class Transformation<T : Any, R> : FunctionWrapper<R> |