new DataLoaderDispatcherInstrumentation(dataLoaderRegistry), new TracingInstrumentation())); GraphQL graphql = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build();
new DataLoaderDispatcherInstrumentation(dataLoaderRegistry), new TracingInstrumentation())); GraphQL graphql = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build();
private void chained() { List<Instrumentation> chainedList = new ArrayList<>(); chainedList.add(new FooInstrumentation()); chainedList.add(new BarInstrumentation()); ChainedInstrumentation chainedInstrumentation = new ChainedInstrumentation(chainedList); GraphQL.newGraphQL(schema) .instrumentation(chainedInstrumentation) .build(); }
.instrumentation(instrumentation) .build();
@Autowired public GraphQLController(CartGraph cartGraph, ProductGraph productQuery) { GraphQLSchema schema = new GraphQLSchemaGenerator() .withResolverBuilders( new BeanResolverBuilder("org.vtsukur.graphql.demo.cart.domain"), // Resolve by annotations. new AnnotatedResolverBuilder(), // Resolve public methods inside root package. new PublicResolverBuilder("org.vtsukur.graphql.demo.cart.web.graphql.spqr")) .withOperationsFromSingleton(cartGraph) .withOperationsFromSingleton(productQuery) .withValueMapperFactory(new JacksonValueMapperFactory()) .generate(); graphQL = GraphQL.newGraphQL(schema) .queryExecutionStrategy(new BatchedExecutionStrategy()) .instrumentation(new ChainedInstrumentation(Arrays.asList( new MaxQueryComplexityInstrumentation(200), new MaxQueryDepthInstrumentation(20) ))) .build(); }
/** * This helps you transform the current GraphQL object into another one by starting a builder with all * the current values and allows you to transform it how you want. * * @param builderConsumer the consumer code that will be given a builder to transform * * @return a new GraphQL object based on calling build on that builder */ public GraphQL transform(Consumer<GraphQL.Builder> builderConsumer) { Builder builder = new Builder(this.graphQLSchema); builder .queryExecutionStrategy(nvl(this.queryStrategy, builder.queryExecutionStrategy)) .mutationExecutionStrategy(nvl(this.mutationStrategy, builder.mutationExecutionStrategy)) .subscriptionExecutionStrategy(nvl(this.subscriptionStrategy, builder.subscriptionExecutionStrategy)) .executionIdProvider(nvl(this.idProvider, builder.idProvider)) .instrumentation(nvl(this.instrumentation, builder.instrumentation)) .preparsedDocumentProvider(nvl(this.preparsedDocumentProvider, builder.preparsedDocumentProvider)); builderConsumer.accept(builder); return builder.build(); }
private GraphQL newGraphQL(GraphQLSchema schema, Object context) { ExecutionStrategyProvider executionStrategyProvider = getExecutionStrategyProvider.get(); return GraphQL.newGraphQL(schema) .queryExecutionStrategy(executionStrategyProvider.getQueryExecutionStrategy()) .mutationExecutionStrategy(executionStrategyProvider.getMutationExecutionStrategy()) .subscriptionExecutionStrategy(executionStrategyProvider.getSubscriptionExecutionStrategy()) .instrumentation(getInstrumentation(context)) .preparsedDocumentProvider(getPreparsedDocumentProvider.get()) .build(); }
@Override public GraphQLRuntime build() { if (instrumentations.size() == 1) { super.instrumentation(instrumentations.get(0)); } else if (!instrumentations.isEmpty()) { super.instrumentation(new ChainedInstrumentation(instrumentations)); } return new GraphQLRuntime(super.build(), graphQLSchema); } }
private GraphQL newGraphQL(GraphQLSchema schema, Object context) { ExecutionStrategyProvider executionStrategyProvider = getExecutionStrategyProvider.get(); return GraphQL.newGraphQL(schema) .queryExecutionStrategy(executionStrategyProvider.getQueryExecutionStrategy()) .mutationExecutionStrategy(executionStrategyProvider.getMutationExecutionStrategy()) .subscriptionExecutionStrategy(executionStrategyProvider.getSubscriptionExecutionStrategy()) .instrumentation(getInstrumentation(context)) .preparsedDocumentProvider(getPreparsedDocumentProvider.get()) .build(); }
.instrumentation(dispatcherInstrumentation) .build();
.newGraphQL(schema) .instrumentation(instrumentation) .build(); ExecutionResult executionResult = graphQL.execute(executionInput.build());
private void fieldValidation() { ExecutionPath fieldPath = ExecutionPath.parse("/user"); FieldValidation fieldValidation = new SimpleFieldValidation() .addRule(fieldPath, new BiFunction<FieldAndArguments, FieldValidationEnvironment, Optional<GraphQLError>>() { @Override public Optional<GraphQLError> apply(FieldAndArguments fieldAndArguments, FieldValidationEnvironment environment) { String nameArg = fieldAndArguments.getArgumentValue("name"); if (nameArg.length() > 255) { return Optional.of(environment.mkError("Invalid user name", fieldAndArguments)); } return Optional.empty(); } }); FieldValidationInstrumentation instrumentation = new FieldValidationInstrumentation( fieldValidation ); GraphQL.newGraphQL(schema) .instrumentation(instrumentation) .build(); }
/** * This helps you transform the current GraphQL object into another one by starting a builder with all * the current values and allows you to transform it how you want. * * @param builderConsumer the consumer code that will be given a builder to transform * * @return a new GraphQL object based on calling build on that builder */ public GraphQL transform(Consumer<GraphQL.Builder> builderConsumer) { Builder builder = new Builder(this.graphQLSchema); builder .queryExecutionStrategy(nvl(this.queryStrategy, builder.queryExecutionStrategy)) .mutationExecutionStrategy(nvl(this.mutationStrategy, builder.mutationExecutionStrategy)) .subscriptionExecutionStrategy(nvl(this.subscriptionStrategy, builder.subscriptionExecutionStrategy)) .executionIdProvider(nvl(this.idProvider, builder.idProvider)) .instrumentation(nvl(this.instrumentation, builder.instrumentation)) .preparsedDocumentProvider(nvl(this.preparsedDocumentProvider, builder.preparsedDocumentProvider)); builderConsumer.accept(builder); return builder.build(); }
void dataLoaderRun() { System.out.println("=== AsyncExecutionStrategy with DataLoader ==="); GraphQLSchema schema = buildDataLoaderSchema(); DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry(); dataLoaderRegistry.register("departments", BatchCompareDataFetchers.departmentsForShopDataLoader); dataLoaderRegistry.register("products", BatchCompareDataFetchers.productsForDepartmentDataLoader); GraphQL graphQL = GraphQL .newGraphQL(schema) .instrumentation(new DataLoaderDispatcherInstrumentation()) .build(); ExecutionInput executionInput = ExecutionInput.newExecutionInput() .query("query { shops { id name departments { id name products { id name } } } }") .dataLoaderRegistry(dataLoaderRegistry) .build(); ExecutionResult result = graphQL.execute(executionInput); System.out.println("\nExecutionResult: " + result.toSpecification()); }
private void specifyInstrumentation() { GraphQL.newGraphQL(schema) .instrumentation(new TracingInstrumentation()) .build(); }