Skip to content

Commit d1a960b

Browse files
committed
Just pass along scalars representing objects from java.lang package fix #367
1 parent fc96509 commit d1a960b

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/main/kotlin/graphql/kickstart/tools/MethodFieldResolver.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import graphql.schema.DataFetchingEnvironment
1111
import graphql.schema.GraphQLTypeUtil.isScalar
1212
import kotlinx.coroutines.future.future
1313
import java.lang.reflect.Method
14+
import java.lang.reflect.ParameterizedType
1415
import java.util.*
1516
import kotlin.coroutines.intrinsics.suspendCoroutineUninterceptedOrReturn
1617
import kotlin.reflect.full.valueParameters
@@ -124,11 +125,17 @@ internal class MethodFieldResolver(field: FieldDefinition, search: FieldResolver
124125
when (type) {
125126
is ListType -> List::class.java.isAssignableFrom(this.genericType.getRawClass(genericParameterType))
126127
&& isScalarType(environment, type.type, this.genericType.unwrapGenericType(genericParameterType))
127-
is TypeName -> environment.graphQLSchema?.getType(type.name)?.let { isScalar(it) } ?: false
128+
is TypeName -> environment.graphQLSchema?.getType(type.name)?.let { isScalar(it) && !isJavaLanguageType(genericParameterType) } ?: false
128129
is NonNullType -> isScalarType(environment, type.type, genericParameterType)
129130
else -> false
130131
}
131132

133+
private fun isJavaLanguageType(type: JavaType): Boolean =
134+
when (type) {
135+
is ParameterizedType -> isJavaLanguageType(type.actualTypeArguments[0])
136+
else -> type.javaClass.packageName == "java.lang"
137+
}
138+
132139
override fun scanForMatches(): List<TypeClassMatcher.PotentialMatch> {
133140
val batched = isBatched(method, search)
134141
val unwrappedGenericType = genericType.unwrapGenericType(try {

0 commit comments

Comments
 (0)