graphql.schema.FieldCoordinates Java Examples
The following examples show how to use
graphql.schema.FieldCoordinates.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: Bootstrap.java From smallrye-graphql with Apache License 2.0 | 6 votes |
private GraphQLFieldDefinition createGraphQLFieldDefinitionFromField(String ownerName, Field field) { GraphQLFieldDefinition.Builder fieldBuilder = GraphQLFieldDefinition.newFieldDefinition() .name(field.getName()) .description(field.getDescription()); // Type fieldBuilder = fieldBuilder.type(createGraphQLOutputType(field)); GraphQLFieldDefinition graphQLFieldDefinition = fieldBuilder.build(); // DataFetcher PropertyDataFetcher datafetcher = new PropertyDataFetcher(field); codeRegistryBuilder.dataFetcher(FieldCoordinates.coordinates(ownerName, graphQLFieldDefinition.getName()), datafetcher); return graphQLFieldDefinition; }
Example #2
Source File: EnumMapToObjectTypeAdapter.java From graphql-spqr with Apache License 2.0 | 6 votes |
@Override protected GraphQLObjectType toGraphQLType(String typeName, AnnotatedType javaType, TypeMappingEnvironment env) { BuildContext buildContext = env.buildContext; GraphQLObjectType.Builder builder = GraphQLObjectType.newObject() .name(typeName) .description(buildContext.typeInfoGenerator.generateTypeDescription(javaType, buildContext.messageBundle)); Enum<E>[] keys = ClassUtils.<E>getRawType(getElementType(javaType, 0).getType()).getEnumConstants(); Arrays.stream(keys).forEach(enumValue -> { String fieldName = enumMapper.getValueName(enumValue, buildContext.messageBundle); TypedElement element = new TypedElement(getElementType(javaType, 1), ClassUtils.getEnumConstantField(enumValue)); buildContext.codeRegistry.dataFetcher(FieldCoordinates.coordinates(typeName, fieldName), (DataFetcher) e -> ((Map)e.getSource()).get(enumValue)); builder.field(GraphQLFieldDefinition.newFieldDefinition() .name(fieldName) .description(enumMapper.getValueDescription(enumValue, buildContext.messageBundle)) .deprecate(enumMapper.getValueDeprecationReason(enumValue, buildContext.messageBundle)) .type(env.forElement(element).toGraphQLType(element.getJavaType())) .build()); }); return builder.build(); }
Example #3
Source File: Bootstrap.java From smallrye-graphql with Apache License 2.0 | 5 votes |
private GraphQLFieldDefinition createGraphQLFieldDefinitionFromOperation(String operationTypeName, Operation operation) { // Fields GraphQLFieldDefinition.Builder fieldBuilder = GraphQLFieldDefinition.newFieldDefinition() .name(operation.getName()) .description(operation.getDescription()); // Return field fieldBuilder = fieldBuilder.type(createGraphQLOutputType(operation)); // Arguments if (operation.hasArguments()) { fieldBuilder = fieldBuilder.arguments(createGraphQLArguments(operation.getArguments())); } GraphQLFieldDefinition graphQLFieldDefinition = fieldBuilder.build(); // DataFetcher Collection<DataFetcherDecorator> decorators = new ArrayList<>(); if (config != null && config.isMetricsEnabled()) { decorators.add(new MetricDecorator()); } if (config != null && config.isTracingEnabled()) { decorators.add(new OpenTracingDecorator()); } if (config != null && config.isValidationEnabled() && operation.hasArguments()) { decorators.add(new ValidationDecorator()); } DataFetcher<?> datafetcher; if (operation.isAsync()) { datafetcher = new AsyncDataFetcher(operation, decorators); } else { datafetcher = new ReflectionDataFetcher(operation, decorators); } codeRegistryBuilder.dataFetcher(FieldCoordinates.coordinates(operationTypeName, graphQLFieldDefinition.getName()), datafetcher); return graphQLFieldDefinition; }
Example #4
Source File: SchemaTransformer.java From federation-jvm with MIT License | 4 votes |
@NotNull public final GraphQLSchema build() throws SchemaProblem { final List<GraphQLError> errors = new ArrayList<>(); // Make new Schema final GraphQLSchema.Builder newSchema = GraphQLSchema.newSchema(originalSchema); final GraphQLObjectType originalQueryType = originalSchema.getQueryType(); final GraphQLCodeRegistry.Builder newCodeRegistry = GraphQLCodeRegistry.newCodeRegistry(originalSchema.getCodeRegistry()); // Print the original schema as sdl and expose it as query { _service { sdl } } final String sdl = sdl(originalSchema); final GraphQLObjectType.Builder newQueryType = GraphQLObjectType.newObject(originalQueryType) .field(_Service.field); newCodeRegistry.dataFetcher(FieldCoordinates.coordinates( originalQueryType.getName(), _Service.fieldName ), (DataFetcher<Object>) environment -> DUMMY); newCodeRegistry.dataFetcher(FieldCoordinates.coordinates( _Service.typeName, _Service.sdlFieldName ), (DataFetcher<String>) environment -> sdl); // Collecting all entity types: Types with @key directive and all types that implement them final Set<String> entityTypeNames = originalSchema.getAllTypesAsList().stream() .filter(t -> t instanceof GraphQLDirectiveContainer && ((GraphQLDirectiveContainer) t).getDirective(FederationDirectives.keyName) != null) .map(GraphQLNamedType::getName) .collect(Collectors.toSet()); final Set<String> entityConcreteTypeNames = originalSchema.getAllTypesAsList() .stream() .filter(type -> type instanceof GraphQLObjectType) .filter(type -> entityTypeNames.contains(type.getName()) || ((GraphQLObjectType) type).getInterfaces() .stream() .anyMatch(itf -> entityTypeNames.contains(itf.getName()))) .map(GraphQLNamedType::getName) .collect(Collectors.toSet()); // If there are entity types install: Query._entities(representations: [_Any!]!): [_Entity]! if (!entityConcreteTypeNames.isEmpty()) { newQueryType.field(_Entity.field(entityConcreteTypeNames)); final GraphQLType originalAnyType = originalSchema.getType(_Any.typeName); if (originalAnyType == null) { newSchema.additionalType(_Any.type(coercingForAny)); } if (entityTypeResolver != null) { newCodeRegistry.typeResolver(_Entity.typeName, entityTypeResolver); } else { if (!newCodeRegistry.hasTypeResolver(_Entity.typeName)) { errors.add(new FederationError("Missing a type resolver for _Entity")); } } final FieldCoordinates _entities = FieldCoordinates.coordinates(originalQueryType.getName(), _Entity.fieldName); if (entitiesDataFetcher != null) { newCodeRegistry.dataFetcher(_entities, entitiesDataFetcher); } else if (entitiesDataFetcherFactory != null) { newCodeRegistry.dataFetcher(_entities, entitiesDataFetcherFactory); } else if (!newCodeRegistry.hasDataFetcher(_entities)) { errors.add(new FederationError("Missing a data fetcher for _entities")); } } if (!errors.isEmpty()) { throw new SchemaProblem(errors); } return newSchema .query(newQueryType.build()) .codeRegistry(newCodeRegistry.build()) .build(); }