Skip to content

Commit de04b74

Browse files
committed
Remove intermediate interface, and instead allow consumer to pass in data fetcher directly.
1 parent ca6c609 commit de04b74

File tree

5 files changed

+14
-27
lines changed

5 files changed

+14
-27
lines changed

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

Lines changed: 0 additions & 7 deletions
This file was deleted.

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import graphql.kickstart.tools.proxy.*
55
import graphql.kickstart.tools.relay.RelayConnectionFactory
66
import graphql.kickstart.tools.util.JavaType
77
import graphql.kickstart.tools.util.ParameterizedTypeImpl
8+
import graphql.schema.DataFetcher
89
import graphql.schema.DataFetchingEnvironment
910
import graphql.schema.visibility.GraphqlFieldVisibility
1011
import kotlinx.coroutines.Dispatchers
@@ -21,7 +22,7 @@ import kotlin.reflect.KClass
2122
data class SchemaParserOptions internal constructor(
2223
val contextClass: Class<*>?,
2324
val genericWrappers: List<GenericWrapper>,
24-
val missingFieldResolverHandler: MissingFieldResolverHandler?,
25+
val missingResolverDataFetcher: DataFetcher<Any?>?,
2526
val allowUnimplementedResolvers: Boolean,
2627
val objectMapperProvider: PerFieldObjectMapperProvider,
2728
val proxyHandlers: List<ProxyHandler>,
@@ -48,7 +49,7 @@ data class SchemaParserOptions internal constructor(
4849
private var contextClass: Class<*>? = null
4950
private val genericWrappers: MutableList<GenericWrapper> = mutableListOf()
5051
private var useDefaultGenericWrappers = true
51-
private var missingFieldResolverHandler: MissingFieldResolverHandler? = null
52+
private var missingResolverDataFetcher: DataFetcher<Any?>? = null
5253
private var allowUnimplementedResolvers = false
5354
private var objectMapperProvider: PerFieldObjectMapperProvider = PerFieldConfiguringObjectMapperProvider()
5455
private val proxyHandlers: MutableList<ProxyHandler> = mutableListOf(Spring4AopProxyHandler(), GuiceAopProxyHandler(), JavassistProxyHandler(), WeldProxyHandler())
@@ -79,8 +80,8 @@ data class SchemaParserOptions internal constructor(
7980
this.useDefaultGenericWrappers = useDefaultGenericWrappers
8081
}
8182

82-
fun missingFieldResolverHandler(missingFieldResolverHandler: MissingFieldResolverHandler?) = this.apply {
83-
this.missingFieldResolverHandler = missingFieldResolverHandler
83+
fun missingResolverDataFetcher(missingResolverDataFetcher: DataFetcher<Any?>?) = this.apply {
84+
this.missingResolverDataFetcher = missingResolverDataFetcher
8485
}
8586

8687
fun allowUnimplementedResolvers(allowUnimplementedResolvers: Boolean) = this.apply {
@@ -160,7 +161,7 @@ data class SchemaParserOptions internal constructor(
160161
return SchemaParserOptions(
161162
contextClass,
162163
wrappers,
163-
missingFieldResolverHandler,
164+
missingResolverDataFetcher,
164165
allowUnimplementedResolvers,
165166
objectMapperProvider,
166167
proxyHandlers,

src/main/kotlin/graphql/kickstart/tools/resolver/FieldResolverScanner.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ internal class FieldResolverScanner(val options: SchemaParserOptions) {
6464
}
6565

6666
private fun missingFieldResolver(field: FieldDefinition, searches: List<Search>, scanProperties: Boolean): FieldResolver {
67-
return if (options.allowUnimplementedResolvers || options.missingFieldResolverHandler != null) {
67+
return if (options.allowUnimplementedResolvers || options.missingResolverDataFetcher != null) {
6868
if (options.allowUnimplementedResolvers) {
6969
log.warn("Missing resolver for field: $field")
7070
}

src/main/kotlin/graphql/kickstart/tools/resolver/MissingFieldResolver.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package graphql.kickstart.tools.resolver
22

3-
import graphql.kickstart.tools.MissingFieldResolverHandler
43
import graphql.kickstart.tools.MissingResolverInfo
54
import graphql.kickstart.tools.SchemaParserOptions
65
import graphql.kickstart.tools.TypeClassMatcher
@@ -15,14 +14,7 @@ internal class MissingFieldResolver(
1514

1615
override fun scanForMatches(): List<TypeClassMatcher.PotentialMatch> = listOf()
1716
override fun createDataFetcher(): DataFetcher<*> {
18-
val handler = options.missingFieldResolverHandler ?: return NotImplementedMissingFieldDataFetcher()
19-
return MissingFieldDataFetcher(handler)
20-
}
21-
22-
class MissingFieldDataFetcher(private val handler: MissingFieldResolverHandler) : DataFetcher<Any?> {
23-
override fun get(env: DataFetchingEnvironment?): Any? {
24-
return handler.resolve(env)
25-
}
17+
return options.missingResolverDataFetcher ?: return NotImplementedMissingFieldDataFetcher()
2618
}
2719

2820
class NotImplementedMissingFieldDataFetcher : DataFetcher<Any?> {

src/test/kotlin/graphql/kickstart/tools/MissingFieldResolverTest.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package graphql.kickstart.tools
33
import graphql.ExecutionInput
44
import graphql.GraphQL
55
import graphql.kickstart.tools.resolver.FieldResolverError
6+
import graphql.schema.DataFetcher
67
import graphql.schema.DataFetchingEnvironment
78
import org.junit.Assert
89
import org.junit.Test
@@ -28,7 +29,7 @@ class MissingFieldResolverTest {
2829
}
2930

3031
@Test
31-
fun `should call missing field resolver handler if provided`() {
32+
fun `should call missing resolver data fetcher if provided`() {
3233
val schema = SchemaParser.newParser()
3334
.schemaString("""
3435
type Query {
@@ -41,7 +42,7 @@ class MissingFieldResolverTest {
4142
fun implementedField(input: Optional<String>) = input.toString()
4243
})
4344
.options(SchemaParserOptions.newOptions()
44-
.missingFieldResolverHandler(TestMissingFieldResolverHandler())
45+
.missingResolverDataFetcher(TestMissingResolverDataFetcher())
4546
.build())
4647
.build()
4748
.makeExecutableSchema()
@@ -67,9 +68,9 @@ class MissingFieldResolverTest {
6768
Assert.assertEquals(expected, result.getData())
6869
}
6970

70-
class TestMissingFieldResolverHandler : MissingFieldResolverHandler {
71-
override fun resolve(env: DataFetchingEnvironment?): Any? {
72-
return env?.getArgument("input");
71+
class TestMissingResolverDataFetcher : DataFetcher<Any?> {
72+
override fun get(env: DataFetchingEnvironment?): Any? {
73+
return env?.getArgument("input")
7374
}
7475
}
7576
}

0 commit comments

Comments
 (0)