/** * Take a field builder in a function definition and apply. Can be used in a jdk8 lambda * e.g.: * <pre> * {@code * field(f -> f.name("fieldName")) * } * </pre> * * @param builderFunction a supplier for the builder impl * * @return this */ public Builder field(UnaryOperator<GraphQLInputObjectField.Builder> builderFunction) { assertNotNull(builderFunction, "builderFunction should not be null"); GraphQLInputObjectField.Builder builder = GraphQLInputObjectField.newInputObjectField(); builder = builderFunction.apply(builder); return field(builder); }
private GraphQLInputObjectType buildInputObjectType(BuildContext buildCtx, InputObjectTypeDefinition typeDefinition) { buildCtx.enterNode(typeDefinition); GraphQLInputObjectType.Builder builder = GraphQLInputObjectType.newInputObject(); builder.definition(typeDefinition); builder.name(typeDefinition.getName()); builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription())); List<InputObjectTypeExtensionDefinition> extensions = inputObjectTypeExtensions(typeDefinition, buildCtx); builder.withDirectives( buildDirectives(typeDefinition.getDirectives(), directivesOf(extensions), INPUT_OBJECT, buildCtx.getDirectiveDefinitions()) ); typeDefinition.getInputValueDefinitions().forEach(inputValue -> builder.field(buildInputField(buildCtx, inputValue))); extensions.forEach(extension -> extension.getInputValueDefinitions().forEach(inputValueDefinition -> { GraphQLInputObjectField inputField = buildInputField(buildCtx, inputValueDefinition); if (!builder.hasField(inputField.getName())) { builder.field(inputField); } })); GraphQLInputObjectType inputObjectType = builder.build(); inputObjectType = directiveBehaviour.onInputObjectType(inputObjectType, buildCtx.mkBehaviourParams()); return buildCtx.exitNode(inputObjectType); }
objectBuilder.field(fieldBuilder);
private void createTypes() { userType = newObject().name("user").description("A user") .field(newFieldDefinition().name("id").description("The id").type(GraphQLInt).build()) .field(newFieldDefinition().name("name").description("The name").type(GraphQLString).build()) .field(newFieldDefinition().name("roles").description("The roles").type(new GraphQLList(roleFields.getRoleType())) .dataFetcher(environment -> userDataFetcher.getRoles((User) environment.getSource())) .build()) .build(); addUserInputType = newInputObject().name("addUserInput") .field(newInputObjectField().name("id").type(new GraphQLNonNull(GraphQLInt)).build()) .field(newInputObjectField().name("name").type(new GraphQLNonNull(Scalars.GraphQLString)).build()) .build(); updateUserInputType = newInputObject().name("updateUserInput") .field(newInputObjectField().name("id").type(new GraphQLNonNull(GraphQLInt)).build()) .field(newInputObjectField().name("name").type(GraphQLString).build()) .build(); deleteUserInputType = newInputObject().name("deleteUserInput") .field(newInputObjectField().name("id").type(new GraphQLNonNull(GraphQLInt)).build()) .build(); filterUserInputType = newInputObject().name("filterUserInput") .field(newInputObjectField().name("id").type(GraphQLInt).build()) .build(); }
public static GraphQLInputType asInputType(Class<?> type) { GraphQLInputObjectType.Builder builder = newInputObject() .name(type.getSimpleName()); // Gets the properties for the type for (PropertyDescriptor descriptor : BeanUtils.getPropertyDescriptors(type)) { if (descriptor.getReadMethod() != null) { String name = descriptor.getName(); String description = descriptor.getShortDescription(); GraphQLInputType scalarType = getScalarType(descriptor.getPropertyType()); if (scalarType != null) { builder = builder.field(field -> field .name(name) .description(description) .type(scalarType) ); } } } // OK return builder.build(); }
private GraphQLInputObjectType buildInputObjectType(BuildContext buildCtx, InputObjectTypeDefinition typeDefinition) { buildCtx.enterNode(typeDefinition); GraphQLInputObjectType.Builder builder = GraphQLInputObjectType.newInputObject(); builder.definition(typeDefinition); builder.name(typeDefinition.getName()); builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription())); List<InputObjectTypeExtensionDefinition> extensions = inputObjectTypeExtensions(typeDefinition, buildCtx); builder.withDirectives( buildDirectives(typeDefinition.getDirectives(), directivesOf(extensions), INPUT_OBJECT, buildCtx.getDirectiveDefinitions()) ); typeDefinition.getInputValueDefinitions().forEach(inputValue -> builder.field(buildInputField(buildCtx, inputValue))); extensions.forEach(extension -> extension.getInputValueDefinitions().forEach(inputValueDefinition -> { GraphQLInputObjectField inputField = buildInputField(buildCtx, inputValueDefinition); if (!builder.hasField(inputField.getName())) { builder.field(inputField); } })); GraphQLInputObjectType inputObjectType = builder.build(); inputObjectType = directiveBehaviour.onInputObjectType(inputObjectType, buildCtx.mkBehaviourParams()); return buildCtx.exitNode(inputObjectType); }
private void createTypes() { roleType = newObject().name("role").description("A role") .field(newFieldDefinition().name("id").description("The id").type(GraphQLInt).build()) .field(newFieldDefinition().name("name").description("The name").type(GraphQLString).build()) .build(); addRoleInputType = newInputObject().name("addRoleInput") .field(newInputObjectField().name("id").type(new GraphQLNonNull(GraphQLInt)).build()) .field(newInputObjectField().name("name").type(new GraphQLNonNull(Scalars.GraphQLString)).build()) .build(); updateRoleInputType = newInputObject().name("updateRoleInput") .field(newInputObjectField().name("id").type(new GraphQLNonNull(GraphQLInt)).build()) .field(newInputObjectField().name("name").type(GraphQLString).build()) .build(); deleteRoleInputType = newInputObject().name("deleteRoleInput") .field(newInputObjectField().name("id").type(new GraphQLNonNull(GraphQLInt)).build()) .build(); filterRoleInputType = newInputObject().name("filterRoleInput") .field(newInputObjectField().name("id").type(GraphQLInt).build()) .build(); }
private GraphQLInputType mapEntry(GraphQLInputType keyType, GraphQLInputType valueType, BuildContext buildContext) { String typeName = "mapEntry_" + getTypeName(keyType) + "_" + getTypeName(valueType) + "_input"; if (buildContext.typeCache.contains(typeName)) { return new GraphQLTypeReference(typeName); } buildContext.typeCache.register(typeName); return newInputObject() .name(typeName) .description("Map entry input") .field(newInputObjectField() .name("key") .description("Map key input") .type(keyType) .build()) .field(newInputObjectField() .name("value") .description("Map value input") .type(valueType) .build()) .build(); }
/** * Take a field builder in a function definition and apply. Can be used in a jdk8 lambda * e.g.: * <pre> * {@code * field(f -> f.name("fieldName")) * } * </pre> * * @param builderFunction a supplier for the builder impl * * @return this */ public Builder field(UnaryOperator<GraphQLInputObjectField.Builder> builderFunction) { assertNotNull(builderFunction, "builderFunction should not be null"); GraphQLInputObjectField.Builder builder = GraphQLInputObjectField.newInputObjectField(); builder = builderFunction.apply(builder); return field(builder); }
@Override public GraphQLInputObjectType toGraphQLInputType(String typeName, AnnotatedType javaType, OperationMapper operationMapper, BuildContext buildContext) { GraphQLInputObjectType.Builder typeBuilder = newInputObject() .name(typeName) .description(buildContext.typeInfoGenerator.generateInputTypeDescription(javaType, buildContext.messageBundle)); InputFieldBuilderParams params = InputFieldBuilderParams.builder() .withType(javaType) .withEnvironment(buildContext.globalEnvironment) .build(); buildContext.inputFieldBuilders.getInputFields(params).forEach(field -> typeBuilder.field(operationMapper.toGraphQLInputField(field, buildContext))); if (ClassUtils.isAbstract(javaType)) { createInputDisambiguatorField(javaType, buildContext).ifPresent(typeBuilder::field); } typeBuilder.withDirective(Directives.mappedType(javaType)); buildContext.directiveBuilder.buildInputObjectTypeDirectives(javaType, buildContext.directiveBuilderParams()).forEach(directive -> typeBuilder.withDirective(operationMapper.toGraphQLDirective(directive, buildContext))); return typeBuilder.build(); }
private GraphQLInputType getListInputMapping(final IGraphQLObjectMapper graphQLObjectMapper, final Type type) { ParameterizedType pType = (ParameterizedType) type; GraphQLInputObjectType objectType = GraphQLInputObjectType.newInputObject() .name(graphQLObjectMapper.getTypeNamingStrategy().getTypeName(graphQLObjectMapper, type)) .field(GraphQLInputObjectField.newInputObjectField() .name(KEY_NAME) .type(graphQLObjectMapper.getInputType(pType.getActualTypeArguments()[0])) .build()) .field(GraphQLInputObjectField.newInputObjectField() .name(VALUE_NAME) .type(graphQLObjectMapper.getInputType(pType.getActualTypeArguments()[1])) .build()) .build(); return new GraphQLList(objectType); }
@Override protected GraphQLInputObjectType toGraphQLInputType(String typeName, AnnotatedType javaType, OperationMapper operationMapper, BuildContext buildContext) { GraphQLInputObjectType.Builder builder = GraphQLInputObjectType.newInputObject() .name(typeName) .description(buildContext.typeInfoGenerator.generateInputTypeDescription(javaType, buildContext.messageBundle)); Enum[] keys = (Enum[]) ClassUtils.getRawType(getElementType(javaType, 0).getType()).getEnumConstants(); Arrays.stream(keys).forEach(enumValue -> builder.field(GraphQLInputObjectField.newInputObjectField() .name(enumMapper.getValueName(enumValue, buildContext.messageBundle)) .description(enumMapper.getValueDescription(enumValue, buildContext.messageBundle)) .type(operationMapper.toGraphQLInputType(getElementType(javaType, 1), buildContext)) .build())); return builder.build(); }
@Override public GraphQLInputType getInputType(IGraphQLObjectMapper objectMapper, Type type) { return GraphQLInputObjectType.newInputObject().name(objectMapper.getTypeNamingStrategy().getTypeName(objectMapper, type)) .field(GraphQLInputObjectField.newInputObjectField().name("time").type(Scalars.GraphQLString).build()).build(); }
/** * Same effect as the field(GraphQLFieldDefinition). Builder.build() is called * from within * * @param builder an un-built/incomplete GraphQLFieldDefinition * * @return this */ public Builder field(GraphQLInputObjectField.Builder builder) { return field(builder.build()); }
@Override protected GraphQLInputObjectType toGraphQLInputType(String typeName, AnnotatedType javaType, OperationMapper operationMapper, BuildContext buildContext) { GraphQLInputObjectType.Builder typeBuilder = newInputObject() .name(typeName) .description(buildContext.typeInfoGenerator.generateInputTypeDescription(javaType, buildContext.messageBundle)); InputFieldBuilderParams params = InputFieldBuilderParams.builder() .withType(javaType) .withEnvironment(buildContext.globalEnvironment) .build(); buildContext.inputFieldBuilders.getInputFields(params).forEach(field -> typeBuilder.field(operationMapper.toGraphQLInputField(field, buildContext))); return typeBuilder.build(); }
void inputTypes() { GraphQLInputObjectType inputObjectType = newInputObject() .name("inputObjectType") .field(newInputObjectField() .name("field") .type(GraphQLString)) .build(); }
public static GraphQLInputObjectType rangeType() { return GraphQLInputObjectType.newInputObject() .name("Range") .field(GraphQLInputObjectField.newInputObjectField() .name("lowerBound") .type(GraphQLInt)) .field(GraphQLInputObjectField.newInputObjectField() .name("upperBound") .type(GraphQLInt)) .build(); } }
public static GraphQLInputObjectType filterType() { return GraphQLInputObjectType.newInputObject() .name("Filter") .field(GraphQLInputObjectField.newInputObjectField() .name("even") .type(GraphQLBoolean)) .field(GraphQLInputObjectField.newInputObjectField() .name("range") .type(rangeType())) .build(); }
/** * Same effect as the field(GraphQLFieldDefinition). Builder.build() is called * from within * * @param builder an un-built/incomplete GraphQLFieldDefinition * * @return this */ public Builder field(GraphQLInputObjectField.Builder builder) { return field(builder.build()); }