Closed
Description
Describe the bug
When an input Boolean
(nullable) property has a default value and the corresponding property in the Java class is of type Boolean
(non-primitive); a CoercingSerializeException
is thrown.
NOTE: I am using Kotlin and my property in the corresponding Kotlin class is of type
Boolean?
. I am also using thegraphql-java-kickstart
spring boot project and thegraphql-java-tools
library.
Stack trace I'm seeing:
graphql.schema.CoercingSerializeException: Expected type 'Boolean' but was 'BooleanValue'.
at graphql.Scalars$4.serialize(Scalars.java:231) ~[graphql-java-11.0.jar:na]
at graphql.Scalars$4.serialize(Scalars.java:204) ~[graphql-java-11.0.jar:na]
at graphql.language.AstValueHelper.serialize(AstValueHelper.java:208) ~[graphql-java-11.0.jar:na]
at graphql.language.AstValueHelper.astFromValue(AstValueHelper.java:86) ~[graphql-java-11.0.jar:na]
at graphql.introspection.Introspection.print(Introspection.java:121) ~[graphql-java-11.0.jar:na]
at graphql.introspection.Introspection.lambda$static$1(Introspection.java:114) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.fetchField(ExecutionStrategy.java:261) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.resolveFieldWithInfo(ExecutionStrategy.java:202) ~[graphql-java-11.0.jar:na]
at graphql.execution.AsyncExecutionStrategy.execute(AsyncExecutionStrategy.java:70) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValueForObject(ExecutionStrategy.java:636) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:416) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValueForList(ExecutionStrategy.java:515) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValueForList(ExecutionStrategy.java:463) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:401) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeField(ExecutionStrategy.java:366) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.lambda$resolveFieldWithInfo$0(ExecutionStrategy.java:204) ~[graphql-java-11.0.jar:na]
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602) ~[na:1.8.0_191]
at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:614) ~[na:1.8.0_191]
at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:1983) ~[na:1.8.0_191]
at graphql.execution.ExecutionStrategy.resolveFieldWithInfo(ExecutionStrategy.java:203) ~[graphql-java-11.0.jar:na]
at graphql.execution.AsyncExecutionStrategy.execute(AsyncExecutionStrategy.java:70) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValueForObject(ExecutionStrategy.java:636) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:416) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValueForList(ExecutionStrategy.java:515) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValueForList(ExecutionStrategy.java:463) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:401) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeField(ExecutionStrategy.java:366) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.lambda$resolveFieldWithInfo$0(ExecutionStrategy.java:204) ~[graphql-java-11.0.jar:na]
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602) ~[na:1.8.0_191]
at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:614) ~[na:1.8.0_191]
at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:1983) ~[na:1.8.0_191]
at graphql.execution.ExecutionStrategy.resolveFieldWithInfo(ExecutionStrategy.java:203) ~[graphql-java-11.0.jar:na]
at graphql.execution.AsyncExecutionStrategy.execute(AsyncExecutionStrategy.java:70) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValueForObject(ExecutionStrategy.java:636) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:416) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.completeField(ExecutionStrategy.java:366) ~[graphql-java-11.0.jar:na]
at graphql.execution.ExecutionStrategy.lambda$resolveFieldWithInfo$0(ExecutionStrategy.java:204) ~[graphql-java-11.0.jar:na]
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602) ~[na:1.8.0_191]
at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:614) ~[na:1.8.0_191]
at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:1983) ~[na:1.8.0_191]
at graphql.execution.ExecutionStrategy.resolveFieldWithInfo(ExecutionStrategy.java:203) ~[graphql-java-11.0.jar:na]
at graphql.execution.AsyncExecutionStrategy.execute(AsyncExecutionStrategy.java:70) ~[graphql-java-11.0.jar:na]
at graphql.execution.Execution.executeOperation(Execution.java:159) ~[graphql-java-11.0.jar:na]
at graphql.execution.Execution.execute(Execution.java:101) ~[graphql-java-11.0.jar:na]
at graphql.GraphQL.execute(GraphQL.java:573) ~[graphql-java-11.0.jar:na]
at graphql.GraphQL.parseValidateAndExecute(GraphQL.java:515) ~[graphql-java-11.0.jar:na]
at graphql.GraphQL.executeAsync(GraphQL.java:489) ~[graphql-java-11.0.jar:na]
at graphql.GraphQL.execute(GraphQL.java:420) ~[graphql-java-11.0.jar:na]
To Reproduce
Schema:
input QueryParams {
active: Boolean = true
}
extend type Query {
items(queryParams: QueryParams!): [Item!]!
}
Kotlin class that represents QueryParams
:
class QueryParams @JvmOverloads constructor(
var active: Boolean? = null
)
Query Resolver:
class ItemQueryResolver : GraphQLQueryResolver {
fun items(queryParams: QueryParams, env: DataFetchingEnvironment): CompletableFuture<Collection<Item>> {
return supplyAsync {
listOf()
}
}
}
Metadata
Metadata
Assignees
Labels
No labels