diff --git a/kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/dsl/operations/AbstractOperationDSL.kt b/kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/dsl/operations/AbstractOperationDSL.kt index ef588537..65716861 100644 --- a/kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/dsl/operations/AbstractOperationDSL.kt +++ b/kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/dsl/operations/AbstractOperationDSL.kt @@ -58,6 +58,48 @@ abstract class AbstractOperationDSL( fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C) -> T) = resolver(FunctionWrapper.on(function)) + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K, L) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K, L, M) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K, L, M, N) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K, L, M, N, R0) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K, L, M, N, R0, R1) -> T) = resolver(FunctionWrapper.on(function)) + + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K, L, M, N, R0, R1, R2) -> T) = resolver(FunctionWrapper.on(function)) + + @JvmName("resolver1") + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K, L, M, N, R0, R1, R2, R3) -> T) = resolver(FunctionWrapper.on(function)) + + @JvmName("resolver2") + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K, L, M, N, R0, R1, R2, R3, R4) -> T) = resolver(FunctionWrapper.on(function)) + + @JvmName("resolver3") + fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K, L, M, N, R0, R1, R2, R3, R4, R5) -> T) = resolver(FunctionWrapper.on(function)) + + +// fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K, L, M, N, G1, G2, R2, R3) -> T) = resolver(FunctionWrapper.on(function)) + + +// fun resolver(function: suspend (R, E, W, Q, A, S, B, U, C, D, F, G, H, I, J, K, L, M, N, R0, R1, R2, R3, R4, R5, R6) -> T) = resolver(FunctionWrapper.on(function)) + + fun accessRule(rule: (Context) -> Exception?){ val accessRuleAdapter: (Nothing?, Context) -> Exception? = { _, ctx -> rule(ctx) } this.accessRuleBlock = accessRuleAdapter diff --git a/kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/model/FunctionWrapper.kt b/kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/model/FunctionWrapper.kt index bca886b7..1498aafe 100644 --- a/kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/model/FunctionWrapper.kt +++ b/kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/model/FunctionWrapper.kt @@ -27,7 +27,7 @@ interface FunctionWrapper : Publisher { //lots of boilerplate here, because kotlin-reflect doesn't support invoking lambdas, local and anonymous functions yet companion object { fun on (function : KFunction) : FunctionWrapper - = ArityN(function) + = ArityN(function) fun on (function : suspend () -> T) : FunctionWrapper = ArityZero(function) @@ -62,6 +62,68 @@ interface FunctionWrapper : Publisher { fun on (function : suspend (R, E, W, Q, A, S, G, H, J) -> T, hasReceiver: Boolean = false) = ArityNine(function, hasReceiver) + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K) -> T, hasReceiver: Boolean = false) + = ArityTen(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L) -> T, hasReceiver: Boolean = false) + = ArityEleven(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M) -> T, hasReceiver: Boolean = false) + = ArityTwelve(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N) -> T, hasReceiver: Boolean = false) + = ArityThirteen(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O) -> T, hasReceiver: Boolean = false) + = ArityFourteen(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P) -> T, hasReceiver: Boolean = false) + = ArityFifteen(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U) -> T, hasReceiver: Boolean = false) + = AritySixteen(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V) -> T, hasReceiver: Boolean = false) + = AritySeventeen(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X) -> T, hasReceiver: Boolean = false) + = ArityEighteen(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y) -> T, hasReceiver: Boolean = false) + = ArityNineteen(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y, R0) -> T, hasReceiver: Boolean = false) + = ArityTwenty(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y, R0, R1) -> T, hasReceiver: Boolean = false) + = ArityTwentyOne(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y, R0, R1, R2) -> T, hasReceiver: Boolean = false) + = ArityTwentyTwo(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y, R0, R1, R2, R3) -> T, hasReceiver: Boolean = false) + = ArityTwentyThree(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y, R0, R1, R2, R3, R4) -> T, hasReceiver: Boolean = false) + = ArityTwentyFour(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y, R0, R1, R2, R3, R4, R5) -> T, hasReceiver: Boolean = false) + = ArityTwentyFive(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y, R0, R1, R2, R3, R4, R5, R6) -> T, hasReceiver: Boolean = false) + = ArityTwentySix(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y, R0, R1, R2, R3, R4, R5, R6, R7) -> T, hasReceiver: Boolean = false) + = ArityTwentySeven(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y, R0, R1, R2, R3, R4, R5, R6, R7, R8) -> T, hasReceiver: Boolean = false) + = ArityTwentyEight(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y, R0, R1, R2, R3, R4, R5, R6, R7, R8, R9) -> T, hasReceiver: Boolean = false) + = ArityTwentyNine(function, hasReceiver) + + fun on (function : suspend (R, E, W, Q, A, S, G, H, J, K, L, M, N, O, P, U, V, X, Y, R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, E0) -> T, hasReceiver: Boolean = false) + = ArityThirty(function, hasReceiver) } val kFunction: KFunction @@ -502,6 +564,764 @@ interface FunctionWrapper : Publisher { } } + class ArityTen( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 10 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityEleven( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 11 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityTwelve( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 12 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityThirteen( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 13 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityFourteen( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 14 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityFifteen( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 15 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class AritySixteen( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 16 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class AritySeventeen( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 17 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityEighteen( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 18 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityNineteen( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 19 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityTwenty( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U, R0)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 20 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U, args[19] as R0) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityTwentyOne( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U, R0, R1)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 21 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U, args[19] as R0, args[20] as R1 ) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + + class ArityTwentyTwo( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U, R0, R1, R2)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 22 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U, args[19] as R0, args[20] as R1, args[21] as R2 ) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + + class ArityTwentyThree( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U, R0, R1, R2, R3)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 23 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U, args[19] as R0, args[20] as R1, args[21] as R2, args[22] as R3 ) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityTwentyFour( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U, R0, R1, R2, R3, R4)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 24 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U, args[19] as R0, args[20] as R1, args[21] as R2, args[22] as R3, args[23] as R4 ) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityTwentyFive( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U, R0, R1, R2, R3, R4, R5)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 25 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U, args[19] as R0, args[20] as R1, args[21] as R2, args[22] as R3, args[23] as R4, args[24] as R5 ) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityTwentySix( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U, R0, R1, R2, R3, R4, R5, R6)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 26 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U, args[19] as R0, args[20] as R1, args[21] as R2, args[22] as R3, args[23] as R4, args[24] as R5, args[25] as R6 ) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityTwentySeven( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U, R0, R1, R2, R3, R4, R5, R6, R7)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 27 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U, args[19] as R0, args[20] as R1, args[21] as R2, args[22] as R3, args[23] as R4, args[24] as R5, args[25] as R6, args[26] as R7 ) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityTwentyEight( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U, R0, R1, R2, R3, R4, R5, R6, R7, R8)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 28 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U, args[19] as R0, args[20] as R1, args[21] as R2, args[22] as R3, args[23] as R4, args[24] as R5, args[25] as R6, args[26] as R7, args[27] as R8 ) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityTwentyNine( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U, R0, R1, R2, R3, R4, R5, R6, R7, R8, R9)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 29 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U, args[19] as R0, args[20] as R1, args[21] as R2, args[22] as R3, args[23] as R4, args[24] as R5, args[25] as R6, args[26] as R7, args[27] as R8, args[28] as R9 ) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + + class ArityThirty( + val implementation : suspend (R, E, W, Q, A, S, D, F, G, H, I, J, K, L, M, N, O, P, U, R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, E0)-> T, override val hasReceiver: Boolean + ) : Base() { + override fun unsubscribe(subscription: String) { + subscribers.remove(subscription) + } + override suspend fun invoke(args: List, subscriptionArgs: List, objectWriter: ObjectWriter): T? { + TODO("not needed") + } + override fun subscribe(subscription: String, subscriber: Subscriber) { + subscribers[subscription] = subscriber + } + + override val kFunction: KFunction + @Synchronized + get() = implementation.reflect()!! + + override fun arity(): Int = 30 + + override suspend fun invoke(vararg args: Any?): T? { + if(args.size == arity()){ + val t = implementation(args[0] as R, args[1] as E, args[2] as W, args[3] as Q, args[4] as A, args[5] as S, args[6] as D, args[7] as F, args[8] as G, args[9] as H, args[10] as I, args[11] as J, args[12] as K, args[13] as L, args[14] as M, args[15] as N, args[16] as O, args[17] as P, args[18] as U, args[19] as R0, args[20] as R1, args[21] as R2, args[22] as R3, args[23] as R4, args[24] as R5, args[25] as R6, args[26] as R7, args[27] as R8, args[28] as R9, args[29] as E0 ) + subscribers.forEach{ + it.value?.onNext(t) + } + return t + } else { + val e = IllegalArgumentException("This function needs exactly ${arity()} arguments") + subscribers.forEach{ + it.value?.onError(e) + } + throw e + } + } + } + fun hasReturnType(): Boolean = getObjectTypeName() != "java.lang.Void" && getObjectTypeName() != "kotlin.Unit" private fun getObjectTypeName() = kFunction.returnType.jvmErasure.javaObjectType.name