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 @@ ${jooby.version} - - com.google.code.gson - gson - true - - com.graphql-java @@ -50,36 +44,4 @@ test - - - - - org.apache.maven.plugins - maven-shade-plugin - - - fat-jar - - shade - - package - - true - - - com.google.code.gson:* - - - - - com.google.gson - ${shaded.package}.gson - - - - - - - - diff --git a/modules/jooby-graphql/src/main/java/io/jooby/graphql/GraphQLModule.java b/modules/jooby-graphql/src/main/java/io/jooby/graphql/GraphQLModule.java index 36998aaa3c..ff9f22afed 100644 --- a/modules/jooby-graphql/src/main/java/io/jooby/graphql/GraphQLModule.java +++ b/modules/jooby-graphql/src/main/java/io/jooby/graphql/GraphQLModule.java @@ -31,6 +31,9 @@ *

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.>fromJson(str, Map.class)) + .map(str -> json.>decode(str, Map.class)) .orElseGet(Collections::emptyMap); request.setOperationName(operationName); request.setQuery(query); diff --git a/modules/jooby-graphql/src/main/java/module-info.java b/modules/jooby-graphql/src/main/java/module-info.java index 02c07a5e36..a68140642b 100644 --- a/modules/jooby-graphql/src/main/java/module-info.java +++ b/modules/jooby-graphql/src/main/java/module-info.java @@ -11,5 +11,4 @@ requires static org.jspecify; requires typesafe.config; requires com.graphqljava; - requires com.google.gson; }