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); }
public GraphQLInputType buildGraphQLInputTypeFromMethodParam(DfsContext dfsContext, ResolvableTypeAccessor resolvableTypeAccessor) { Class<?> cls = resolvableTypeAccessor.resolve(); GraphQLInputType graphQLInputObjectType = (GraphQLInputType) objectTypeResolverMap.get(cls); if (graphQLInputObjectType == null) graphQLInputObjectType = (GraphQLInputType) createGraphQLFieldType(dfsContext, resolvableTypeAccessor, false); if (graphQLInputObjectType == null) { // -- class as input parameter final List<GraphQLInputObjectField> graphQLInputFieldDefinitions = new ArrayList<GraphQLInputObjectField>(); ReflectionUtils.getAllFields(cls).forEach(field -> { GraphQLInputObjectField definition = buildGraphQLInputObjectField(dfsContext, field, cls); if (definition != null) graphQLInputFieldDefinitions.add(definition); }); graphQLInputObjectType = newInputObject() .name(cls.getSimpleName()) .description(resolvableTypeAccessor.getDescription()) .fields(graphQLInputFieldDefinitions) .build(); } return graphQLInputObjectType; }
GraphQLDescription description = object.getAnnotation(GraphQLDescription.class); if (description != null) { builder.description(description.value());
.description("Criteria expression specification of "+namingStrategy.singularize(attribute.getName())+" attribute in entity " + attribute.getDeclaringType().getJavaType()) .field(GraphQLInputObjectField.newInputObjectField() .name("OR")
.description("Where logical AND specification of the provided list of criteria expressions") .field(GraphQLInputObjectField.newInputObjectField() .name("OR")
private GraphQLInputType getInputType(GraphQLOutputType outputType) { if (GraphQLInputType.class.isAssignableFrom(outputType.getClass())) { return (GraphQLInputType) outputType; } else if (outputType instanceof GraphQLObjectType) { GraphQLObjectType objectType = (GraphQLObjectType) outputType; final String inputTypeName; inputTypeName = String.format("%s%s%s", objectType.getName(), this.getTypeNamingStrategy().getDelimiter(), this.getTypeNamingStrategy().getInputTypePostfix()); GraphQLInputObjectType.Builder rv = GraphQLInputObjectType.newInputObject().name(inputTypeName); rv.description(((GraphQLObjectType) outputType).getDescription()); for (GraphQLFieldDefinition field : objectType.getFieldDefinitions()) { rv.field(GraphQLInputObjectField.newInputObjectField() .name(field.getName()) .type(getInputType(field.getType())) .description(field.getDescription()) .build()); } GraphQLInputType type = rv.build(); inputTypes.add(type); return type; } else { throw new RuntimeException(String.format("Unknown output type %s", outputType.toString())); } }
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); }
@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 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(); }
protected GraphQLInputType generateInputType(Object object) { //An enum is a special case in both java and graphql, //and must be checked for while generating other kinds of types GraphQLEnumType enumType = generateEnumType(object); if (enumType != null) { return enumType; } List<GraphQLInputObjectField> fields = getInputFieldDefinitions(object); if (fields == null || fields.isEmpty()) { return null; } String typeName = getGraphQLTypeNameOrIdentityCode(object); GraphQLInputObjectType.Builder builder = new GraphQLInputObjectType.Builder(); builder.name(typeName); builder.fields(fields); builder.description(getTypeDescription(object)); return builder.build(); }
@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 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(); }