private GraphQLInputObjectField buildInputField(BuildContext buildCtx, InputValueDefinition fieldDef) { buildCtx.enterNode(fieldDef); GraphQLInputObjectField.Builder fieldBuilder = GraphQLInputObjectField.newInputObjectField(); fieldBuilder.definition(fieldDef); fieldBuilder.name(fieldDef.getName()); fieldBuilder.description(schemaGeneratorHelper.buildDescription(fieldDef, fieldDef.getDescription())); // currently the spec doesnt allow deprecations on InputValueDefinitions but it should! //fieldBuilder.deprecate(buildDeprecationReason(fieldDef.getDirectives())); GraphQLInputType inputType = buildInputType(buildCtx, fieldDef.getType()); fieldBuilder.type(inputType); Value defaultValue = fieldDef.getDefaultValue(); if (defaultValue != null) { fieldBuilder.defaultValue(schemaGeneratorHelper.buildValue(defaultValue, inputType)); } fieldBuilder.withDirectives( buildDirectives(fieldDef.getDirectives(), emptyList(), INPUT_FIELD_DEFINITION, buildCtx.getDirectiveDefinitions()) ); GraphQLInputObjectField inputObjectField = fieldBuilder.build(); inputObjectField = directiveBehaviour.onInputObjectField(inputObjectField, buildCtx.mkBehaviourParams()); return buildCtx.exitNode(inputObjectField); }
@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(); }
@Test(expectedExceptions = InvalidDirectiveLocationException.class) public void wireGraphQLInputObjectField_invalidLocations_exceptionIsThrown() throws Exception { // Arrange AnnotationsDirectiveWiring upperWiring = mock(AnnotationsDirectiveWiring.class); GraphQLInputObjectField directiveContainer = GraphQLInputObjectField.newInputObjectField().name("asdf") .type(GraphQLInputObjectType.newInputObject().name("dfdf").build()).build(); AnnotationsWiringEnvironmentImpl upperCaseEnv = new AnnotationsWiringEnvironmentImpl(directiveContainer, directiveContainer.getDirective("upperCase")); when(upperWiring.onInputObjectField(upperCaseEnv)).thenReturn(directiveContainer); HashMap<GraphQLDirective, AnnotationsDirectiveWiring> map = new HashMap<>(); GraphQLDirective upperCase = newDirective().name("upperCase").build(); map.put(upperCase, upperWiring); // Act directiveWirer.wire(directiveContainer, map); }
public GraphQLFieldDefinition mutationWithClientMutationId(String name, String fieldName, List<GraphQLInputObjectField> inputFields, List<GraphQLFieldDefinition> outputFields, DataFetcher dataFetcher) { GraphQLInputObjectField clientMutationIdInputField = newInputObjectField() .name("clientMutationId") .type(GraphQLString) .build(); GraphQLFieldDefinition clientMutationIdPayloadField = newFieldDefinition() .name("clientMutationId") .type(GraphQLString) .build(); return mutation(name, fieldName, addElementToList(inputFields, clientMutationIdInputField), addElementToList(outputFields, clientMutationIdPayloadField), dataFetcher); }
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); }
public Builder type(GraphQLInputObjectType.Builder type) { return type(type.build()); }
@Override public GraphQLInputObjectField transformInputField(GraphQLInputObjectField field, InputField inputField, OperationMapper operationMapper, BuildContext buildContext) { if (field.getDefaultValue() == null && shouldWrap(field.getType(), inputField.getTypedElement())) { return field.transform(builder -> builder.type(new GraphQLNonNull(field.getType()))); } if (shouldUnwrap(field.getDefaultValue(), field.getType())) { //do not warn on primitives as their non-nullness is implicit if (!ClassUtils.getRawType(inputField.getJavaType().getType()).isPrimitive()) { log.warn("Non-null input field with a default value will be treated as nullable: " + inputField); } return field.transform(builder -> builder.type((GraphQLInputType) GraphQLUtils.unwrapNonNull(field.getType()))); } return field; }
public GraphQLInputObjectField buildGraphQLInputObjectField(DfsContext dfsContext, Field field, Class<?> implClass) { ResolvableTypeAccessor resolvableTypeAccessor = ResolvableTypeAccessor.forField(field, implClass); Object defaultValue = invokeMethodByName(dfsContext, implClass, resolvableTypeAccessor.getGraphQLInDefaultValueProviderMethodName()); defaultValue = evaluateSpElExpression(dfsContext, implClass, null, resolvableTypeAccessor.getGraphQLInDefaultValueSpel(), defaultValue); GraphQLInputObjectField graphQLInputObjectField = GraphQLInputObjectField.newInputObjectField() .name(resolvableTypeAccessor.getName()) .description(resolvableTypeAccessor.getDescription()) .defaultValue(defaultValue) .type(buildGraphQLInputTypeFromMethodParam(dfsContext, resolvableTypeAccessor)) .build(); return graphQLInputObjectField; }
@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(); }
private GraphQLInputObjectField formField(String fieldName, String description) { return newInputObjectField() .name(fieldName) .description(description) .type(GraphQLString) .build(); }
private GraphQLInputObjectField getWhereInputField(Attribute<?,?> attribute) { GraphQLType type = getWhereAttributeType(attribute); String description = getSchemaDescription(attribute.getJavaMember()); if (type instanceof GraphQLInputType) { return GraphQLInputObjectField.newInputObjectField() .name(attribute.getName()) .description(description) .type((GraphQLInputType) type) .build(); } throw new IllegalArgumentException("Attribute " + attribute.getName() + " cannot be mapped as an Input Argument"); }
static GraphQLInputObjectField formField(String fieldName, String description, GraphQLInputType inputType) { return newInputObjectField() .name(fieldName) .description(description) .type(inputType) .build(); }
public GraphQLInputObjectField getInputField(Method method, ProcessingElementsContainer container) throws GraphQLAnnotationsException { GraphQLInputObjectField.Builder builder = newInputObjectField(); builder.name(new MethodNameBuilder(method).alwaysPrettify(alwaysPrettify).build()); TypeFunction typeFunction = getTypeFunction(method, container); GraphQLInputType inputType = (GraphQLInputType) new MethodTypeBuilder(method, typeFunction, container, true).build(); return builder.type(inputType).description(new DescriptionBuilder(method).build()).build(); }
public GraphQLInputObjectField getInputField(Field field, ProcessingElementsContainer container) throws GraphQLAnnotationsException { GraphQLInputObjectField.Builder builder = newInputObjectField(); builder.name(new FieldNameBuilder(field).alwaysPrettify(alwaysPrettify).build()); TypeFunction typeFunction = getTypeFunction(field, container); GraphQLType graphQLType = typeFunction.buildType(true, field.getType(), field.getAnnotatedType(), container); return builder.type((GraphQLInputType) graphQLType).description(new DescriptionBuilder(field).build()).build(); }
public Builder type(GraphQLInputObjectType.Builder type) { return type(type.build()); }
public GraphQLFieldDefinition mutationWithClientMutationId(String name, String fieldName, List<GraphQLInputObjectField> inputFields, List<GraphQLFieldDefinition> outputFields, DataFetcher dataFetcher) { GraphQLInputObjectField clientMutationIdInputField = newInputObjectField() .name("clientMutationId") .type(GraphQLString) .build(); GraphQLFieldDefinition clientMutationIdPayloadField = newFieldDefinition() .name("clientMutationId") .type(GraphQLString) .build(); return mutation(name, fieldName, addElementToList(inputFields, clientMutationIdInputField), addElementToList(outputFields, clientMutationIdPayloadField), dataFetcher); }
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(); }