smallrye-graphql
smallrye-graphql copied to clipboard
Client Kotlin exception with list of enum as input type
Using the client in kotlin with a list of enums as input types results in a RuntimeException.
java.lang.RuntimeException: unsupported reflection type class sun.reflect.generics.reflectiveObjects.WildcardTypeImpl
at io.smallrye.graphql.client.impl.typesafe.reflection.TypeInfo.raw(TypeInfo.java:352)
at io.smallrye.graphql.client.impl.typesafe.reflection.TypeInfo.getRawType(TypeInfo.java:292)
at io.smallrye.graphql.client.impl.typesafe.reflection.TypeInfo.isPrimitive(TypeInfo.java:194)
at io.smallrye.graphql.client.impl.typesafe.reflection.TypeInfo.isScalar(TypeInfo.java:182)
at io.smallrye.graphql.client.impl.typesafe.reflection.ParameterInfo.graphQlInputTypeName(ParameterInfo.java:106)
at io.smallrye.graphql.client.impl.typesafe.reflection.ParameterInfo.withExclamationMark(ParameterInfo.java:56)
at io.smallrye.graphql.client.impl.typesafe.reflection.ParameterInfo.graphQlInputTypeName(ParameterInfo.java:45)
at io.smallrye.graphql.client.impl.typesafe.QueryBuilder.declare(QueryBuilder.java:58)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
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 io.smallrye.graphql.client.impl.typesafe.QueryBuilder.build(QueryBuilder.java:38)
This only happens if the client interface is in kotlin, if it is in java it works.
java
@Mutation
List<E> list(@NonNull List<@NonNull E> es);
kotlin
@Mutation
fun list(es: @NonNull List<@NonNull E>): List<E>
Reproducers: code-with-quarkus-kotlin-graphql-client-java.zip code-with-quarkus-kotlin-graphql-client.zip
Running the following query results in the exception
query d {startList}
I have no idea what Kotlin is producing here. Looks like it's using internal classes in sun.reflect.generics.reflectiveObjects. Maybe you can investigate and provide a PR?