Search code examples
graphqlgraphql-java

Java GraphQL Annotations: Specify List Field


How do I have to specify a List Field in the java-graphql-annotations framework? Unfortunately I could not found any documentation about specifying list fields.

This example produces an error:

// Bean class
public class MyBean {    
  @GraphQLField
  public List<?> getList() {
    return null;
  }      
}

// instantiate object type
GraphQLAnnotations.object(MyBean.class);

Exception Stacktrace:

java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.WildcardTypeImpl cannot be cast to java.lang.Class
at graphql.annotations.DefaultTypeFunction$ListFunction.apply(DefaultTypeFunction.java:133) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction$ListFunction.apply(DefaultTypeFunction.java:120) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction.apply(DefaultTypeFunction.java:304) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction.apply(DefaultTypeFunction.java:37) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getField(GraphQLAnnotations.java:391) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getObjectBuilder(GraphQLAnnotations.java:208) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getObject(GraphQLAnnotations.java:167) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.object(GraphQLAnnotations.java:173) ~[graphql-java-annotations-0.13.1.jar:na]
...

Solution

  • The method must be return a Type for List:

    ...
    @GraphQLField
    public List<Object> getList() {
      return myValue;
    }
    ...