diff --git a/modules/jooby-graphql/pom.xml b/modules/jooby-graphql/pom.xml
index 45512fb9fd..133296fd43 100644
--- a/modules/jooby-graphql/pom.xml
+++ b/modules/jooby-graphql/pom.xml
@@ -18,12 +18,6 @@
Usage: * *
{@code
+ * // required:
+ * install(new Jackson2Module()); // or Jackson3Module, or AvajeJsonBModule, etc.
+ *
* install(new GrapQLModule(graphQL));
*
* }
@@ -39,6 +42,8 @@
* the route path by setting the graphql.path property in your application
* configuration file.
*
+ * NOTE: From 4.5.0 You must install a json module. + * * @author edgar * @since 2.4.0 */ diff --git a/modules/jooby-graphql/src/main/java/io/jooby/graphql/package-info.java b/modules/jooby-graphql/src/main/java/io/jooby/graphql/package-info.java index 794ab4a913..650f04e550 100644 --- a/modules/jooby-graphql/src/main/java/io/jooby/graphql/package-info.java +++ b/modules/jooby-graphql/src/main/java/io/jooby/graphql/package-info.java @@ -1,2 +1,24 @@ +/** + * GraphQL module on top of https://www.graphql-java.com. + * + *
Usage: + * + *
{@code
+ * // required:
+ * install(new Jackson2Module()); // or Jackson3Module, or AvajeJsonBModule, etc.
+ *
+ * install(new GrapQLModule(graphQL));
+ *
+ * }
+ *
+ * Module install a GET and POST route under /graphql path. Optionally, you can change
+ * the route path by setting the graphql.path property in your application
+ * configuration file.
+ *
+ * NOTE: From 4.5.0 You must install a json module. + * + * @author edgar + * @since 2.4.0 + */ @org.jspecify.annotations.NullMarked package io.jooby.graphql; diff --git a/modules/jooby-graphql/src/main/java/io/jooby/internal/graphql/GraphQLHandler.java b/modules/jooby-graphql/src/main/java/io/jooby/internal/graphql/GraphQLHandler.java index d7b3c1770c..97a3e92e27 100644 --- a/modules/jooby-graphql/src/main/java/io/jooby/internal/graphql/GraphQLHandler.java +++ b/modules/jooby-graphql/src/main/java/io/jooby/internal/graphql/GraphQLHandler.java @@ -8,18 +8,15 @@ import java.util.Collections; import java.util.Map; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import graphql.ExecutionInput; import graphql.ExecutionResult; import graphql.GraphQL; import io.jooby.Context; import io.jooby.Route; import io.jooby.Router; +import io.jooby.json.JsonDecoder; public class GraphQLHandler implements Route.Handler { - private static final Gson json = new GsonBuilder().create(); - protected GraphQL graphQL; public GraphQLHandler(GraphQL graphQL) { @@ -36,6 +33,7 @@ protected final ExecutionInput newExecutionInput(Context ctx) { if (ctx.getMethod().equals(Router.POST)) { request = ctx.body(GraphQLRequest.class); } else { + var json = ctx.require(JsonDecoder.class); request = new GraphQLRequest(); String query = ctx.query("query").value(); String operationName = ctx.query("operationName").valueOrNull(); @@ -43,7 +41,7 @@ protected final ExecutionInput newExecutionInput(Context ctx) { ctx.query("variables") .toOptional() .filter(string -> !string.equals("{}")) - .map(str -> json.