void recursiveTypes() { GraphQLObjectType person = newObject() .name("Person") .field(newFieldDefinition() .name("friends") .type(GraphQLList.list(GraphQLTypeReference.typeRef("Person")))) .build(); }
private GraphQLInputType buildInputType(BuildContext buildCtx, Type rawType) { TypeDefinition typeDefinition = buildCtx.getTypeDefinition(rawType); TypeInfo typeInfo = TypeInfo.typeInfo(rawType); GraphQLInputType inputType = buildCtx.hasInputType(typeDefinition); if (inputType != null) { return typeInfo.decorate(inputType); } if (buildCtx.stackContains(typeInfo)) { // we have circled around so put in a type reference and fix it later return typeInfo.decorate(typeRef(typeInfo.getName())); } buildCtx.push(typeInfo); if (typeDefinition instanceof InputObjectTypeDefinition) { inputType = buildInputObjectType(buildCtx, (InputObjectTypeDefinition) typeDefinition); } else if (typeDefinition instanceof EnumTypeDefinition) { inputType = buildEnumType(buildCtx, (EnumTypeDefinition) typeDefinition); } else if (typeDefinition instanceof ScalarTypeDefinition) { inputType = buildScalar(buildCtx, (ScalarTypeDefinition) typeDefinition); } else { // typeDefinition is not a valid InputType throw new NotAnInputTypeError(rawType, typeDefinition); } buildCtx.putInputType(inputType); buildCtx.pop(); return typeInfo.decorate(inputType); }
return typeInfo.decorate(typeRef(typeInfo.getName()));
.field(newFieldDefinition() .name("shatter") .type(nonNull(list(nonNull(typeRef("StringObject"))))) .dataFetcher(shatterFetcher)) .type(nonNull(list(nonNull(list(nonNull(typeRef("StringObject"))))))) .dataFetcher(wordsAndLettersFetcher)) .name("split") .description("String#split(regex) but replace empty strings with nulls to help us test null behavior in lists") .type(list(typeRef("StringObject"))) .argument(GraphQLArgument.newArgument() .name("regex") .name("splitNotNull") .description("String#split(regex) but replace empty strings with nulls to help us test null behavior in lists") .type(list(nonNull(typeRef("StringObject")))) .argument(GraphQLArgument.newArgument() .name("regex") .type(typeRef("StringObject")) .argument(GraphQLArgument.newArgument() .name("text") .withInterface(typeRef("InterfaceType")) .field(newFieldDefinition() .name("value")
@Override public GraphQLInputType getType() { if (byRef) { return GraphQLTypeReference.typeRef(NAME); } else { return super.getType(); } }
private GraphQLInputType buildInputType(BuildContext buildCtx, Type rawType) { TypeDefinition typeDefinition = buildCtx.getTypeDefinition(rawType); TypeInfo typeInfo = TypeInfo.typeInfo(rawType); GraphQLInputType inputType = buildCtx.hasInputType(typeDefinition); if (inputType != null) { return typeInfo.decorate(inputType); } if (buildCtx.stackContains(typeInfo)) { // we have circled around so put in a type reference and fix it later return typeInfo.decorate(typeRef(typeInfo.getName())); } buildCtx.push(typeInfo); if (typeDefinition instanceof InputObjectTypeDefinition) { inputType = buildInputObjectType(buildCtx, (InputObjectTypeDefinition) typeDefinition); } else if (typeDefinition instanceof EnumTypeDefinition) { inputType = buildEnumType(buildCtx, (EnumTypeDefinition) typeDefinition); } else if (typeDefinition instanceof ScalarTypeDefinition) { inputType = buildScalar(buildCtx, (ScalarTypeDefinition) typeDefinition); } else { // typeDefinition is not a valid InputType throw new NotAnInputTypeError(rawType, typeDefinition); } buildCtx.putInputType(inputType); buildCtx.pop(); return typeInfo.decorate(inputType); }
return typeInfo.decorate(typeRef(typeInfo.getName()));