Skip to content

Commit 4ffa5fa

Browse files
committed
Revert to old behavior of Optional mapping by default
1 parent 66326e2 commit 4ffa5fa

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,10 @@ internal class MethodFieldResolver(
9292
}
9393

9494
if (value == null && isOptional) {
95-
if (environment.containsArgument(definition.name)) {
96-
return@add Optional.empty<Any>()
97-
} else {
95+
if (options.inputArgumentOptionalNullWhenOmitted && !environment.containsArgument(definition.name)) {
9896
return@add null
9997
}
98+
return@add Optional.empty<Any>()
10099
}
101100

102101
if (value != null

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

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ data class SchemaParserOptions internal constructor(
2525
val allowUnimplementedResolvers: Boolean,
2626
val objectMapperProvider: PerFieldObjectMapperProvider,
2727
val proxyHandlers: List<ProxyHandler>,
28+
val inputArgumentOptionalNullWhenOmitted: Boolean,
2829
val preferGraphQLResolver: Boolean,
2930
val introspectionEnabled: Boolean,
3031
val coroutineContextProvider: CoroutineContextProvider,
@@ -50,6 +51,7 @@ data class SchemaParserOptions internal constructor(
5051
private var allowUnimplementedResolvers = false
5152
private var objectMapperProvider: PerFieldObjectMapperProvider = PerFieldConfiguringObjectMapperProvider()
5253
private val proxyHandlers: MutableList<ProxyHandler> = mutableListOf(Spring4AopProxyHandler(), GuiceAopProxyHandler(), JavassistProxyHandler(), WeldProxyHandler())
54+
private var inputArgumentOptionalNullWhenOmitted = false
5355
private var preferGraphQLResolver = false
5456
private var introspectionEnabled = true
5557
private var coroutineContextProvider: CoroutineContextProvider? = null
@@ -80,6 +82,10 @@ data class SchemaParserOptions internal constructor(
8082
this.allowUnimplementedResolvers = allowUnimplementedResolvers
8183
}
8284

85+
fun inputArgumentOptionalNullWhenOmitted(inputArgumentOptionalNullWhenOmitted: Boolean) = this.apply {
86+
this.inputArgumentOptionalNullWhenOmitted = inputArgumentOptionalNullWhenOmitted
87+
}
88+
8389
fun preferGraphQLResolver(preferGraphQLResolver: Boolean) = this.apply {
8490
this.preferGraphQLResolver = preferGraphQLResolver
8591
}
@@ -146,9 +152,18 @@ data class SchemaParserOptions internal constructor(
146152
genericWrappers
147153
}
148154

149-
return SchemaParserOptions(contextClass, wrappers, allowUnimplementedResolvers, objectMapperProvider,
150-
proxyHandlers, preferGraphQLResolver, introspectionEnabled, coroutineContextProvider,
151-
typeDefinitionFactories, fieldVisibility
155+
return SchemaParserOptions(
156+
contextClass,
157+
wrappers,
158+
allowUnimplementedResolvers,
159+
objectMapperProvider,
160+
proxyHandlers,
161+
inputArgumentOptionalNullWhenOmitted,
162+
preferGraphQLResolver,
163+
introspectionEnabled,
164+
coroutineContextProvider,
165+
typeDefinitionFactories,
166+
fieldVisibility
152167
)
153168
}
154169
}

0 commit comments

Comments
 (0)