Skip to content

Commit e1aa4f1

Browse files
oryan-blockclaude
andcommitted
Rename GenericType to GenericTypeResolver
- Rename GenericType to GenericTypeResolver and unwrapGenericType to resolve - Rename the fields holding it to typeResolver Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 9873b97 commit e1aa4f1

7 files changed

Lines changed: 26 additions & 26 deletions

File tree

src/main/kotlin/graphql/kickstart/tools/GenericType.kt renamed to src/main/kotlin/graphql/kickstart/tools/GenericTypeResolver.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import java.lang.reflect.WildcardType
1212
/**
1313
* @author Andrew Potter
1414
*/
15-
internal class GenericType(private val containingType: JavaType, private val options: SchemaParserOptions) {
15+
internal class GenericTypeResolver(private val containingType: JavaType, private val options: SchemaParserOptions) {
1616

1717
fun getRawClass() = getRawClass(containingType)
1818

@@ -29,7 +29,7 @@ internal class GenericType(private val containingType: JavaType, private val opt
2929
* - wildcards are replaced by their upper bound, e.g. `? extends Foo` becomes `Foo`
3030
* - primitives are replaced by their boxed class, e.g. `int` becomes `Integer`
3131
*/
32-
fun unwrapGenericType(javaType: JavaType): JavaType {
32+
fun resolve(javaType: JavaType): JavaType {
3333
return when (val type = resolveTypeVariables(javaType)) {
3434
is ParameterizedType -> {
3535
val rawType = type.rawType
@@ -42,7 +42,7 @@ internal class GenericType(private val containingType: JavaType, private val opt
4242
}
4343

4444
val unwrapsTo = wrapper.schemaWrapper.invoke(typeArguments[wrapper.index])
45-
unwrapGenericType(unwrapsTo)
45+
resolve(unwrapsTo)
4646
}
4747
is TypeVariable<*> -> error("Could not resolve type variable '${TypeUtils.toLongString(type)}' relative to ${TypeUtils.toString(containingType)}")
4848
is WildcardType -> type.upperBounds.firstOrNull()

‎src/main/kotlin/graphql/kickstart/tools/SchemaClassScanner.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ internal class SchemaClassScanner(
396396
handleFoundType(typeClassMatcher.match(TypeClassMatcher.PotentialMatch.parameterType(
397397
inputValueDefinition.type,
398398
inputValueJavaType,
399-
GenericType(javaType, options),
399+
GenericTypeResolver(javaType, options),
400400
InputObjectReference(inputValueDefinition)
401401
)))
402402
} else {

‎src/main/kotlin/graphql/kickstart/tools/TypeClassMatcher.kt‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ internal class TypeClassMatcher(private val definitionsByName: Map<String, TypeD
2222

2323
private fun match(potentialMatch: PotentialMatch, graphQLType: GraphQLLangType, javaType: JavaType, root: Boolean = false): Match {
2424

25-
var realType = potentialMatch.generic.unwrapGenericType(javaType)
25+
var realType = potentialMatch.typeResolver.resolve(javaType)
2626

2727
if (realType is ParameterizedType && realType.isSubtypeOf(DataFetcherResult::class.java)) {
2828
if (potentialMatch.location != Location.RETURN_TYPE) {
2929
throw error(potentialMatch, "${DataFetcherResult::class.java.name} can only be used as a return type")
3030
}
3131

32-
realType = potentialMatch.generic.unwrapGenericType(realType.actualTypeArguments.first())
32+
realType = potentialMatch.typeResolver.resolve(realType.actualTypeArguments.first())
3333

3434
if (realType is ParameterizedType && realType.isSubtypeOf(DataFetcherResult::class.java)) {
3535
throw error(potentialMatch, "${DataFetcherResult::class.java.name} cannot be nested within itself")
@@ -46,7 +46,7 @@ internal class TypeClassMatcher(private val definitionsByName: Map<String, TypeD
4646
throw error(potentialMatch, "${Optional::class.java.name} can only be used at the top level of a return type")
4747
}
4848

49-
realType = potentialMatch.generic.unwrapGenericType(realType.actualTypeArguments.first())
49+
realType = potentialMatch.typeResolver.resolve(realType.actualTypeArguments.first())
5050

5151
if (realType is ParameterizedType && realType.isSubtypeOf(Optional::class.java)) {
5252
throw error(potentialMatch, "${Optional::class.java.name} cannot be nested within itself")
@@ -104,16 +104,16 @@ internal class TypeClassMatcher(private val definitionsByName: Map<String, TypeD
104104
internal data class PotentialMatch(
105105
val graphQLType: GraphQLLangType,
106106
val javaType: JavaType,
107-
val generic: GenericType,
107+
val typeResolver: GenericTypeResolver,
108108
val reference: SchemaClassScanner.Reference,
109109
val location: Location
110110
) {
111111
companion object {
112-
fun returnValue(graphQLType: GraphQLLangType, javaType: JavaType, generic: GenericType, reference: SchemaClassScanner.Reference) =
113-
PotentialMatch(graphQLType, javaType, generic, reference, Location.RETURN_TYPE)
112+
fun returnValue(graphQLType: GraphQLLangType, javaType: JavaType, typeResolver: GenericTypeResolver, reference: SchemaClassScanner.Reference) =
113+
PotentialMatch(graphQLType, javaType, typeResolver, reference, Location.RETURN_TYPE)
114114

115-
fun parameterType(graphQLType: GraphQLLangType, javaType: JavaType, generic: GenericType, reference: SchemaClassScanner.Reference) =
116-
PotentialMatch(graphQLType, javaType, generic, reference, Location.PARAMETER_TYPE)
115+
fun parameterType(graphQLType: GraphQLLangType, javaType: JavaType, typeResolver: GenericTypeResolver, reference: SchemaClassScanner.Reference) =
116+
PotentialMatch(graphQLType, javaType, typeResolver, reference, Location.PARAMETER_TYPE)
117117
}
118118
}
119119
}

‎src/main/kotlin/graphql/kickstart/tools/resolver/FieldResolver.kt‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ internal abstract class FieldResolver(
1414
val options: SchemaParserOptions
1515
) {
1616
val resolverInfo: ResolverInfo = search.resolverInfo
17-
val genericType = GenericType(search.type, options)
17+
val typeResolver = GenericTypeResolver(search.type, options)
1818

1919
abstract fun scanForMatches(): List<TypeClassMatcher.PotentialMatch>
2020

@@ -33,8 +33,8 @@ internal abstract class FieldResolver(
3333
?: environment?.getSource<Any>()
3434
?: throw ResolverError("Expected DataFetchingEnvironment and source object to not be null!")
3535

36-
if (!this.genericType.isAssignableFrom(source.javaClass)) {
37-
throw ResolverError("Expected source object to be an instance of '${this.genericType.getRawClass().name}' but instead got '${source.javaClass.name}'")
36+
if (!this.typeResolver.isAssignableFrom(source.javaClass)) {
37+
throw ResolverError("Expected source object to be an instance of '${this.typeResolver.getRawClass().name}' but instead got '${source.javaClass.name}'")
3838
}
3939

4040
source

‎src/main/kotlin/graphql/kickstart/tools/resolver/MapFieldResolver.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ internal class MapFieldResolver(
4444
}
4545

4646
override fun scanForMatches(): List<TypeClassMatcher.PotentialMatch> {
47-
return listOf(TypeClassMatcher.PotentialMatch.returnValue(field.type, mapGenericValue, genericType, SchemaClassScanner.FieldTypeReference(field.name)))
47+
return listOf(TypeClassMatcher.PotentialMatch.returnValue(field.type, mapGenericValue, typeResolver, SchemaClassScanner.FieldTypeReference(field.name)))
4848
}
4949

5050
override fun toString() = "MapFieldResolver{key=${field.name}}"

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,11 @@ internal class MethodFieldResolver(
7272
this.field.inputValueDefinitions.forEachIndexed { index, definition ->
7373

7474
val parameterType = this.getMethodParameterType(index)
75-
?.apply { genericType.getRawClass(this) }
75+
?.apply { typeResolver.getRawClass(this) }
7676
?: throw ResolverError("Missing method type at position ${this.getJavaMethodParameterIndex(index)}, this is most likely a bug with graphql-java-tools")
7777

7878
val isNonNull = definition.type is NonNullType
79-
val isOptional = this.genericType.getRawClass(parameterType) == Optional::class.java
79+
val isOptional = this.typeResolver.getRawClass(parameterType) == Optional::class.java
8080

8181
args.add { environment ->
8282
val argumentPresent = environment.arguments.containsKey(definition.name)
@@ -130,7 +130,7 @@ internal class MethodFieldResolver(
130130

131131
// the class the return type unwraps to, so a value that happens to implement Future isn't mistaken for a wrapper.
132132
// Object (e.g. for a union) can't tell them apart, so then every future of a method declared to return Future is checked
133-
val valueClass = (TypeUtils.getRawType(getUnwrappedReturnType(), null) ?: Any::class.java)
133+
val valueClass = (TypeUtils.getRawType(getResolvedReturnType(), null) ?: Any::class.java)
134134
.takeUnless { it == Any::class.java && TypeUtils.getRawType(getReturnType(), null) == Future::class.java }
135135

136136
return if (numberOfParameters > 0 || isSuspendFunction) {
@@ -153,8 +153,8 @@ internal class MethodFieldResolver(
153153
*/
154154
private fun isConcreteScalarType(environment: DataFetchingEnvironment, type: Type<*>, genericParameterType: JavaType): Boolean {
155155
return when (type) {
156-
is ListType -> List::class.java.isAssignableFrom(this.genericType.getRawClass(genericParameterType))
157-
&& isConcreteScalarType(environment, type.type, this.genericType.unwrapGenericType(genericParameterType))
156+
is ListType -> List::class.java.isAssignableFrom(this.typeResolver.getRawClass(genericParameterType))
157+
&& isConcreteScalarType(environment, type.type, this.typeResolver.resolve(genericParameterType))
158158

159159
is TypeName -> environment.graphQLSchema?.getType(type.name!!)?.let { isScalar(it) && type.name != "ID" }
160160
?: false
@@ -165,10 +165,10 @@ internal class MethodFieldResolver(
165165
}
166166

167167
override fun scanForMatches(): List<TypeClassMatcher.PotentialMatch> {
168-
val returnValueMatch = TypeClassMatcher.PotentialMatch.returnValue(field.type, getUnwrappedReturnType(), genericType, SchemaClassScanner.ReturnValueReference(method))
168+
val returnValueMatch = TypeClassMatcher.PotentialMatch.returnValue(field.type, getResolvedReturnType(), typeResolver, SchemaClassScanner.ReturnValueReference(method))
169169

170170
return field.inputValueDefinitions.mapIndexed { i, inputDefinition ->
171-
TypeClassMatcher.PotentialMatch.parameterType(inputDefinition.type, getMethodParameterType(i)!!, genericType, SchemaClassScanner.MethodParameterReference(method, i))
171+
TypeClassMatcher.PotentialMatch.parameterType(inputDefinition.type, getMethodParameterType(i)!!, typeResolver, SchemaClassScanner.MethodParameterReference(method, i))
172172
} + listOf(returnValueMatch)
173173
}
174174

@@ -186,8 +186,8 @@ internal class MethodFieldResolver(
186186
method.genericReturnType
187187
}
188188

189-
private fun getUnwrappedReturnType(): JavaType =
190-
getReturnType().let { genericType.unwrapGenericType(if (search.isSubscription) it.asPublisher() else it) }
189+
private fun getResolvedReturnType(): JavaType =
190+
getReturnType().let { typeResolver.resolve(if (search.isSubscription) it.asPublisher() else it) }
191191

192192
private fun getIndexOffset(): Int {
193193
return if (resolverInfo is DataClassTypeResolverInfo && !method.declaringClass.isAssignableFrom(resolverInfo.dataClassType)) {

‎src/main/kotlin/graphql/kickstart/tools/resolver/PropertyFieldResolver.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ internal class PropertyFieldResolver(
3030
TypeClassMatcher.PotentialMatch.returnValue(
3131
field.type,
3232
property.genericType,
33-
genericType,
33+
typeResolver,
3434
SchemaClassScanner.FieldTypeReference(property.toString())
3535
)
3636
)

0 commit comments

Comments
 (0)