I want to write a piece of code, which will handle GraphQL queries like these:
query {
group(id: "com.graphql-java")
name(name: "graphql-java")
version(id: "2.3.0")
}
I've created a data fetcher and put a breakpoint inside the get
method:
import graphql.schema.DataFetcher;
import graphql.schema.DataFetchingEnvironment;
public class TestDataFetcher implements DataFetcher {
public Object get(final DataFetchingEnvironment dataFetchingEnvironment) {
return null;
}
}
Then I wrote the following code:
public class Example02 {
public static void main(final String[] args) throws IOException {
final Example02 app = new Example02();
app.run();
}
void run() throws IOException {
final TestDataFetcher testDataFetcher = new TestDataFetcher();
final List<GraphQLFieldDefinition> fields = Lists.newArrayList(
createGroupField(testDataFetcher),
createNameField(),
createVersionField());
final GraphQLObjectType queryType = newObject()
.name("query")
.fields(fields)
.build();
final GraphQLSchema schema = GraphQLSchema.newSchema()
.query(queryType)
.build();
final String query = FileUtils.readFileToString(
new File("src/main/resources/query1.txt"),
"UTF-8"
);
final Map<String, Object> result = (Map<String, Object>) new GraphQL(schema).execute(query).getData();
System.out.println(result);
}
private GraphQLFieldDefinition createVersionField() {
return newFieldDefinition().type(GraphQLString).name("version").build();
}
private GraphQLFieldDefinition createNameField() {
return newFieldDefinition().type(GraphQLString).name("name").build();
}
private GraphQLFieldDefinition createGroupField(TestDataFetcher testDataFetcher) {
final GraphQLArgument idArg = newArgument().name("id").type(GraphQLString).build();
return newFieldDefinition()
.type(GraphQLString)
.name("group")
.dataFetcher(testDataFetcher)
.argument(idArg)
.build();
}
}
When I run the main
method in debug mode, the breakpoint is not activated.
Why? How can I fix it?
Here's your working sample. i've used your query file as you posted it. Implement your dataFetcher as needed further. Basically you should've defined the arguments for the name and version fields. The debugger tells everything when you run
new GraphQL(schema).execute(query)
it haserrors
array which contains all the problems.