private FieldDefAndDirectiveParams buildField(BuildContext buildCtx, TypeDefinition parentType, FieldDefinition fieldDef) { buildCtx.enterNode(fieldDef); GraphQLFieldDefinition.Builder builder = GraphQLFieldDefinition.newFieldDefinition(); builder.definition(fieldDef); builder.name(fieldDef.getName()); builder.description(schemaGeneratorHelper.buildDescription(fieldDef, fieldDef.getDescription())); builder.deprecate(schemaGeneratorHelper.buildDeprecationReason(fieldDef.getDirectives())); GraphQLDirective[] directives = buildDirectives(fieldDef.getDirectives(), Collections.emptyList(), DirectiveLocation.FIELD_DEFINITION, buildCtx.getDirectiveDefinitions()); builder.withDirectives( directives ); fieldDef.getInputValueDefinitions().forEach(inputValueDefinition -> builder.argument(buildArgument(buildCtx, inputValueDefinition))); GraphQLOutputType fieldType = buildOutputType(buildCtx, fieldDef.getType()); builder.type(fieldType); GraphQLFieldDefinition fieldDefinition = builder.build(); // if they have already wired in a fetcher - then leave it alone FieldCoordinates coordinates = FieldCoordinates.coordinates(parentType.getName(), fieldDefinition.getName()); if (!buildCtx.codeRegistry.hasDataFetcher(coordinates)) { DataFetcherFactory dataFetcherFactory = buildDataFetcherFactory(buildCtx, parentType, fieldDef, fieldType, Arrays.asList(directives)); buildCtx.getCodeRegistry().dataFetcher(coordinates, dataFetcherFactory); } return buildCtx.exitNode(new FieldDefAndDirectiveParams(fieldDefinition, buildCtx.mkBehaviourParams())); }
.field(GraphQLFieldDefinition.newFieldDefinition() .name("gtfsId") .description("Agency id") .type(new GraphQLNonNull(Scalars.GraphQLString)) .dataFetcher(environment -> ((Agency) environment.getSource()).getId()) .field(GraphQLFieldDefinition.newFieldDefinition() .name("agencies") .description("Get all agencies for the specified graph") .type(new GraphQLList(agencyType)) .dataFetcher(environment -> index.getAllAgencies()) .field(GraphQLFieldDefinition.newFieldDefinition() .name("agency") .description("Get a single agency based on agency ID") .type(agencyType) .argument(GraphQLArgument.newArgument() .field(GraphQLFieldDefinition.newFieldDefinition() .name("stops") .description("Get all stops for the specified graph") .type(new GraphQLList(stopType)) .argument(GraphQLArgument.newArgument() .field(GraphQLFieldDefinition.newFieldDefinition() .name("stopsByBbox") .description("Get all stops within the specified bounding box") .type(new GraphQLList(stopType)) .argument(GraphQLArgument.newArgument()
.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() .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()
public GraphQLFieldDefinition createDateDef(FieldSchema schema) { return newFieldDefinition().name(schema.getName()).description(schema.getLabel()).type(GraphQLString).dataFetcher(env -> { GraphFieldContainer container = env.getSource(); DateGraphField dateField = container.getDate(schema.getName()); if (dateField != null) { return DateUtils.toISO8601(dateField.getDate(), 0); } return null; }).build(); }
public static GraphQLFieldDefinition stringField(String name, String description) { return newFieldDefinition() .name(name) .description(description) .type(GraphQLString) .build(); }
public GraphQLFieldDefinition nodeField(GraphQLInterfaceType nodeInterface, DataFetcher nodeDataFetcher) { return newFieldDefinition() .name("node") .description("Fetches an object given its ID") .type(nodeInterface) .dataFetcher(nodeDataFetcher) .argument(newArgument() .name("id") .description("The ID of an object") .type(nonNull(GraphQLID))) .build(); }
public GraphQLFieldDefinition createBinaryDef(FieldSchema schema) { return newFieldDefinition().name(schema.getName()).description(schema.getLabel()).type(new GraphQLTypeReference(BINARY_FIELD_TYPE_NAME)) .dataFetcher(env -> { GraphFieldContainer container = env.getSource(); return container.getBinary(schema.getName()); }).build(); }
public GraphQLFieldDefinition createPluginPageField() { return newFieldDefinition().name("plugins").description("Load plugins").argument(createPagingArgs()) .type(new GraphQLTypeReference(PLUGIN_PAGE_TYPE_NAME)).dataFetcher(env -> { GraphQLContext gc = env.getContext(); if (!gc.getUser().hasAdminRole()) { return new PermissionException("plugins", "Missing admin permission"); } Map<String, Plugin> deployments = manager.getPlugins(); Page<Plugin> page = new DynamicStreamPageImpl<>(deployments.values().stream(), getPagingInfo(env)); return page; }).build(); }
protected graphql.schema.GraphQLFieldDefinition.Builder newPagingFieldWithFetcherBuilder(String name, String description, DataFetcher<?> dataFetcher, String pageTypeName) { return newFieldDefinition().name(name).description(description).argument(createPagingArgs()).type(new GraphQLTypeReference(pageTypeName)) .dataFetcher(dataFetcher); }
public GraphQLInterfaceType nodeInterface(TypeResolver typeResolver) { return newInterface() .name(NODE) .description("An object with an ID") .typeResolver(typeResolver) .field(newFieldDefinition() .name("id") .description("The ID of an object") .type(nonNull(GraphQLID))) .build(); }
public GraphQLFieldDefinition createBooleanDef(FieldSchema schema) { return newFieldDefinition().name(schema.getName()).description(schema.getLabel()).type(GraphQLBoolean).dataFetcher(env -> { GraphFieldContainer container = env.getSource(); BooleanGraphField booleanField = container.getBoolean(schema.getName()); if (booleanField != null) { return booleanField.getBoolean(); } return null; }).build(); }
public GraphQLObjectType createType() { GraphQLObjectType.Builder root = newObject(); root.name(PROJECT_REFERENCE_TYPE_NAME); interfaceTypeProvider.addCommonFields(root); // .name root.field(newFieldDefinition().name("name").description("The name of the project").type(GraphQLString)); return root.build(); } }
public GraphQLFieldDefinition createNumberDef(FieldSchema schema) { return newFieldDefinition().name(schema.getName()).description(schema.getLabel()).type(GraphQLBigDecimal).dataFetcher(env -> { GraphFieldContainer container = env.getSource(); NumberGraphField numberField = container.getNumber(schema.getName()); if (numberField != null) { return numberField.getNumber(); } return null; }).build(); }
public GraphQLFieldDefinition createMeshFieldType() { return newFieldDefinition().name("mesh").description("The mesh instance").type(new GraphQLTypeReference(MESH_TYPE_NAME)) .dataFetcher((env) -> { return Mesh.mesh(); }).build(); }
public GraphQLObjectType connectionType(String name, GraphQLObjectType edgeType, List<GraphQLFieldDefinition> connectionFields) { return newObject() .name(name + "Connection") .description("A connection to a list of items.") .field(newFieldDefinition() .name("edges") .description("a list of edges") .type(list(edgeType))) .field(newFieldDefinition() .name("pageInfo") .description("details about this specific page") .type(nonNull(pageInfoType))) .fields(connectionFields) .build(); }
public GraphQLObjectType edgeType(String name, GraphQLOutputType nodeType, GraphQLInterfaceType nodeInterface, List<GraphQLFieldDefinition> edgeFields) { return newObject() .name(name + "Edge") .description("An edge in a connection") .field(newFieldDefinition() .name("node") .type(nodeType) .description("The item at the end of the edge")) .field(newFieldDefinition() .name("cursor") .type(nonNull(GraphQLString)) .description("cursor marks a unique position or index into the connection")) .fields(edgeFields) .build(); }
void newType() { GraphQLObjectType simpsonCharacter = newObject() .name("SimpsonCharacter") .description("A Simpson character") .field(newFieldDefinition() .name("name") .description("The name of the character.") .type(GraphQLString)) .field(newFieldDefinition() .name("mainCharacter") .description("One of the main Simpson characters?") .type(GraphQLBoolean)) .build(); }
void interfaceType() { GraphQLInterfaceType comicCharacter = newInterface() .name("ComicCharacter") .description("A abstract comic character.") .field(newFieldDefinition() .name("name") .description("The name of the character.") .type(GraphQLString)) .build(); }
public GraphQLFieldDefinition nodeField(GraphQLInterfaceType nodeInterface, DataFetcher nodeDataFetcher) { return newFieldDefinition() .name("node") .description("Fetches an object given its ID") .type(nodeInterface) .dataFetcher(nodeDataFetcher) .argument(newArgument() .name("id") .description("The ID of an object") .type(nonNull(GraphQLID))) .build(); }
public GraphQLInterfaceType nodeInterface(TypeResolver typeResolver) { return newInterface() .name(NODE) .description("An object with an ID") .typeResolver(typeResolver) .field(newFieldDefinition() .name("id") .description("The ID of an object") .type(nonNull(GraphQLID))) .build(); }