-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
keep-openTells Stale Bot to keep PRs and issues openTells Stale Bot to keep PRs and issues open
Description
Describe the bug
SchemaPrinter cannot print union containing GraphQLTypeReference
To Reproduce
val schema = GraphQLUnionType.newUnionType().name("Shape")
.possibleType(GraphQLTypeReference.typeRef("Circle"))
.possibleType(GraphQLTypeReference.typeRef("Square"))
.build()
val printer = SchemaPrinter()
printer.print(schema)
The above code (in Kotlin) results in ClassCastException:
Exception in thread "main" java.lang.ClassCastException: class graphql.schema.GraphQLTypeReference cannot be cast to class graphql.schema.GraphQLUnmodifiedType (graphql.schema.GraphQLTypeReference and graphql.schema.GraphQLUnmodifiedType are in unnamed module of loader 'app')
at graphql.schema.GraphQLTypeUtil.unwrapAll(GraphQLTypeUtil.java:199)
at graphql.schema.DefaultGraphqlTypeComparatorRegistry.unwrapElement(DefaultGraphqlTypeComparatorRegistry.java:54)
at graphql.schema.DefaultGraphqlTypeComparatorRegistry.lambda$sensibleGroupedOrder$0(DefaultGraphqlTypeComparatorRegistry.java:40)
at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
at java.base/java.util.TimSort.sort(TimSort.java:220)
at java.base/java.util.Arrays.sort(Arrays.java:1307)
at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:353)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at graphql.schema.idl.SchemaPrinter.lambda$unionPrinter$6(SchemaPrinter.java:626)
at graphql.schema.idl.SchemaPrinter.printSchemaElement(SchemaPrinter.java:1079)
at graphql.schema.idl.SchemaPrinter.print(SchemaPrinter.java:1052)
at aero.airlab.common.ktable.support.TestSchemaKt.main(TestSchema.kt:36)
at aero.airlab.common.ktable.support.TestSchemaKt.main(TestSchema.kt)
This means we cannot define a union with recursive reference.
Metadata
Metadata
Assignees
Labels
keep-openTells Stale Bot to keep PRs and issues openTells Stale Bot to keep PRs and issues open