@@ -14,6 +14,7 @@ import graphql.schema.DataFetcher
1414import graphql.schema.DataFetchingEnvironment
1515import graphql.schema.GraphQLTypeUtil.isScalar
1616import kotlinx.coroutines.future.future
17+ import org.slf4j.LoggerFactory
1718import java.lang.reflect.Method
1819import java.util.*
1920import kotlin.coroutines.intrinsics.suspendCoroutineUninterceptedOrReturn
@@ -31,6 +32,8 @@ internal class MethodFieldResolver(
3132 val method : Method
3233) : FieldResolver(field, search, options, search.type) {
3334
35+ private val log = LoggerFactory .getLogger(javaClass)
36+
3437 private val additionalLastArgument =
3538 try {
3639 (method.kotlinFunction?.valueParameters?.size
@@ -97,8 +100,15 @@ internal class MethodFieldResolver(
97100 when (this .method.parameterTypes.last()) {
98101 null -> throw ResolverError (" Expected at least one argument but got none, this is most likely a bug with graphql-java-tools" )
99102 options.contextClass -> args.add { environment ->
100- environment.graphQlContext[options.contextClass]
101- ? : environment.getContext() // TODO: remove deprecated use in next major release
103+ val context: Any? = environment.graphQlContext[options.contextClass]
104+ if (context != null ) {
105+ context
106+ } else {
107+ log.warn(" Generic context class has been deprecated by graphql-java. " +
108+ " To continue using a custom context class as the last parameter in resolver methods " +
109+ " please insert it into the new GraphQLContext class when building the ExecutionInput." )
110+ environment.getContext() // TODO: remove deprecated use in next major release
111+ }
102112 }
103113 GraphQLContext ::class .java -> args.add { environment -> environment.graphQlContext }
104114 else -> args.add { environment -> environment }
0 commit comments