use of graphql.schema.idl.RuntimeWiring in project incubator-skywalking by apache.
the class GraphQLScriptTest method assertScriptFormat.
@Test
public void assertScriptFormat() {
SchemaParser schemaParser = new SchemaParser();
SchemaGenerator schemaGenerator = new SchemaGenerator();
TypeDefinitionRegistry typeRegistry = new TypeDefinitionRegistry();
typeRegistry.merge(schemaParser.parse(loadSchema("common.graphqls")));
typeRegistry.merge(schemaParser.parse(loadSchema("trace.graphqls")));
typeRegistry.merge(schemaParser.parse(loadSchema("overview-layer.graphqls")));
typeRegistry.merge(schemaParser.parse(loadSchema("application-layer.graphqls")));
typeRegistry.merge(schemaParser.parse(loadSchema("server-layer.graphqls")));
typeRegistry.merge(schemaParser.parse(loadSchema("service-layer.graphqls")));
typeRegistry.merge(schemaParser.parse(loadSchema("alarm.graphqls")));
typeRegistry.merge(schemaParser.parse(loadSchema("config.graphqls")));
RuntimeWiring wiring = buildRuntimeWiring();
assertTrue(schemaGenerator.makeExecutableSchema(typeRegistry, wiring).getAllTypesAsList().size() > 0);
}
use of graphql.schema.idl.RuntimeWiring in project graphql-java by graphql-java.
the class HttpMain method buildStarWarsSchema.
private GraphQLSchema buildStarWarsSchema() {
//
if (starWarsSchema == null) {
//
//
// the fetcher of friends uses java-dataloader to make the circular friends fetching
// more efficient by batching and caching the calls to load Character friends
//
DataFetcher friendsFetcher = environment -> {
DataLoaderRegistry dataloaderRegistry = asMapGet(environment.getContext(), "dataloaderRegistry");
DataLoader friendsDataLoader = dataloaderRegistry.getDataLoader("friends");
List<String> friendIds = asMapGet(environment.getSource(), "friends");
return friendsDataLoader.loadMany(friendIds);
};
//
// reads a file that provides the schema types
//
Reader streamReader = loadSchemaFile("starWarsSchemaAnnotated.graphqls");
TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(streamReader);
//
// the runtime wiring is used to provide the code that backs the
// logical schema
//
TypeResolver characterTypeResolver = env -> {
Map<String, Object> obj = (Map<String, Object>) env.getObject();
String id = (String) obj.get("id");
GraphQLSchema schema = env.getSchema();
if (StarWarsData.isHuman(id)) {
return (GraphQLObjectType) schema.getType("Human");
} else {
return (GraphQLObjectType) schema.getType("Droid");
}
};
RuntimeWiring wiring = RuntimeWiring.newRuntimeWiring().type(newTypeWiring("Query").dataFetcher("hero", StarWarsData.getHeroDataFetcher()).dataFetcher("human", StarWarsData.getHumanDataFetcher()).dataFetcher("droid", StarWarsData.getDroidDataFetcher())).type(newTypeWiring("Human").dataFetcher("friends", friendsFetcher)).type(newTypeWiring("Droid").dataFetcher("friends", friendsFetcher)).type(newTypeWiring("Character").typeResolver(characterTypeResolver)).type(newTypeWiring("Episode").enumValues(StarWarsData.getEpisodeResolver())).build();
// finally combine the logical schema with the physical runtime
starWarsSchema = new SchemaGenerator().makeExecutableSchema(typeRegistry, wiring);
}
return starWarsSchema;
}
use of graphql.schema.idl.RuntimeWiring in project graphql-java by graphql-java.
the class BatchCompare method buildDataLoaderSchema.
GraphQLSchema buildDataLoaderSchema() {
Reader streamReader = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("storesanddepartments.graphqls"));
TypeDefinitionRegistry typeDefinitionRegistry = new SchemaParser().parse(streamReader);
RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring().type(TypeRuntimeWiring.newTypeWiring("Query").dataFetcher("shops", BatchCompareDataFetchers.shopsDataFetcher)).type(TypeRuntimeWiring.newTypeWiring("Shop").dataFetcher("departments", BatchCompareDataFetchers.departmentsForShopDataLoaderDataFetcher)).type(TypeRuntimeWiring.newTypeWiring("Department").dataFetcher("products", BatchCompareDataFetchers.productsForDepartmentDataLoaderDataFetcher)).build();
return new SchemaGenerator().makeExecutableSchema(typeDefinitionRegistry, runtimeWiring);
}
Aggregations