diff --git a/graphql-modules/graphql-java/pom.xml b/graphql-modules/graphql-java/pom.xml
index c5c5c578311c..6970d1e5cb0d 100644
--- a/graphql-modules/graphql-java/pom.xml
+++ b/graphql-modules/graphql-java/pom.xml
@@ -17,6 +17,12 @@
com.graphql-java
graphql-java-annotations
${graphql-java-annotations.version}
+
+
+ com.graphql-java
+ graphql-java
+
+
io.ratpack
@@ -37,16 +43,34 @@
com.graphql-java
graphql-java-tools
${graphql-java-tools.version}
+
+
+ com.graphql-java
+ graphql-java
+
+
com.graphql-java
graphql-java-servlet
${graphql-java-servlet.version}
+
+
+ com.graphql-java
+ graphql-java
+
+
com.graphql-java-generator
graphql-java-runtime
${graphql.java.generator.version}
+
+
+ com.graphql-java
+ graphql-java
+
+
javax.servlet
@@ -85,6 +109,12 @@
com.graphql-java
graphql-java-extended-scalars
${graphql-java-extended-scalars.version}
+
+
+ com.graphql-java
+ graphql-java
+
+
javax.ws.rs
diff --git a/graphql-modules/graphql-java/src/main/java/com/baeldung/graphqlanydata/AnydataResponse.java b/graphql-modules/graphql-java/src/main/java/com/baeldung/graphqlanydata/AnydataResponse.java
new file mode 100644
index 000000000000..f151fc9eb630
--- /dev/null
+++ b/graphql-modules/graphql-java/src/main/java/com/baeldung/graphqlanydata/AnydataResponse.java
@@ -0,0 +1,5 @@
+package com.baeldung.graphqlanydata;
+
+public interface AnydataResponse {
+
+}
diff --git a/graphql-modules/graphql-java/src/main/java/com/baeldung/graphqlanydata/GraphQLConfig.java b/graphql-modules/graphql-java/src/main/java/com/baeldung/graphqlanydata/GraphQLConfig.java
new file mode 100644
index 000000000000..c88b19ff42dd
--- /dev/null
+++ b/graphql-modules/graphql-java/src/main/java/com/baeldung/graphqlanydata/GraphQLConfig.java
@@ -0,0 +1,47 @@
+package com.baeldung.graphqlanydata;
+
+import java.io.InputStreamReader;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import graphql.GraphQL;
+import graphql.schema.GraphQLSchema;
+import graphql.schema.idl.RuntimeWiring;
+import graphql.schema.idl.SchemaGenerator;
+import graphql.schema.idl.SchemaParser;
+import graphql.schema.idl.TypeDefinitionRegistry;
+
+@Configuration
+public class GraphQLConfig {
+
+ @Bean
+ public GraphQL graphQL() {
+ SchemaParser schemaParser = new SchemaParser();
+ SchemaGenerator schemaGenerator = new SchemaGenerator();
+
+ TypeDefinitionRegistry typeRegistry = schemaParser.parse(
+ new InputStreamReader(getClass().getResourceAsStream("/schema.graphqls"))
+ );
+
+ RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring()
+ .type("Mutation", builder ->
+ builder.dataFetcher("updateProfile", new MutationResolver().updateProfile())
+ )
+ .type("AnydataResponse", typeWiring ->
+ typeWiring.typeResolver(env -> {
+ Object javaObject = env.getObject();
+ if (javaObject instanceof SimpleMessage) {
+ return env.getSchema().getObjectType("SimpleMessage");
+ } else if (javaObject instanceof UserProfile) {
+ return env.getSchema().getObjectType("UserProfile");
+ }
+ return null;
+ })
+ )
+ .build();
+
+ GraphQLSchema schema = schemaGenerator.makeExecutableSchema(typeRegistry, runtimeWiring);
+ return GraphQL.newGraphQL(schema).build();
+ }
+}
diff --git a/graphql-modules/graphql-java/src/main/java/com/baeldung/graphqlanydata/MutationResolver.java b/graphql-modules/graphql-java/src/main/java/com/baeldung/graphqlanydata/MutationResolver.java
new file mode 100644
index 000000000000..f162c3481251
--- /dev/null
+++ b/graphql-modules/graphql-java/src/main/java/com/baeldung/graphqlanydata/MutationResolver.java
@@ -0,0 +1,20 @@
+package com.baeldung.graphqlanydata;
+
+import graphql.schema.DataFetcher;
+import graphql.schema.DataFetchingEnvironment;
+
+public class MutationResolver {
+
+ public DataFetcher