Skip to content

Commit 3463b4b

Browse files
committed
Add support for preparsed/cached queries and update to graphql 6.0 (fixes #39)
1 parent 9dce687 commit 3463b4b

File tree

4 files changed

+38
-5
lines changed

4 files changed

+38
-5
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ dependencies {
5555
compile 'commons-fileupload:commons-fileupload:1.3.1'
5656

5757
// GraphQL
58-
compile 'com.graphql-java:graphql-java:4.2'
58+
compile 'com.graphql-java:graphql-java:6.0'
5959

6060
compileOnly 'com.graphql-java:graphql-java-annotations:0.13.1'
6161
testCompile 'com.graphql-java:graphql-java-annotations:0.13.1'

src/main/java/graphql/servlet/GraphQLServlet.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import graphql.GraphQL;
1414
import graphql.GraphQLError;
1515
import graphql.execution.instrumentation.Instrumentation;
16+
import graphql.execution.preparsed.PreparsedDocumentProvider;
1617
import graphql.introspection.IntrospectionQuery;
1718
import graphql.schema.GraphQLFieldDefinition;
1819
import graphql.schema.GraphQLSchema;
@@ -67,6 +68,7 @@ public abstract class GraphQLServlet extends HttpServlet implements Servlet, Gra
6768
protected abstract Instrumentation getInstrumentation();
6869
protected abstract Map<String, Object> transformVariables(GraphQLSchema schema, String query, Map<String, Object> variables);
6970
protected abstract GraphQLErrorHandler getGraphQLErrorHandler();
71+
protected abstract PreparsedDocumentProvider getPreparsedDocumentProvider();
7072

7173
private final LazyObjectMapperBuilder lazyObjectMapperBuilder;
7274
private final List<GraphQLServletListener> listeners;
@@ -286,6 +288,7 @@ private GraphQL newGraphQL(GraphQLSchema schema) {
286288
.mutationExecutionStrategy(executionStrategyProvider.getMutationExecutionStrategy())
287289
.subscriptionExecutionStrategy(executionStrategyProvider.getSubscriptionExecutionStrategy())
288290
.instrumentation(getInstrumentation())
291+
.preparsedDocumentProvider(getPreparsedDocumentProvider())
289292
.build();
290293
}
291294

src/main/java/graphql/servlet/OsgiGraphQLServlet.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package graphql.servlet;
22

33
import graphql.execution.instrumentation.Instrumentation;
4+
import graphql.execution.preparsed.NoOpPreparsedDocumentProvider;
5+
import graphql.execution.preparsed.PreparsedDocumentProvider;
46
import graphql.schema.GraphQLObjectType;
57
import graphql.schema.GraphQLSchema;
68
import graphql.schema.GraphQLType;
@@ -33,6 +35,7 @@ public class OsgiGraphQLServlet extends GraphQLServlet {
3335
private ExecutionStrategyProvider executionStrategyProvider = new DefaultExecutionStrategyProvider();
3436
private InstrumentationProvider instrumentationProvider = new NoOpInstrumentationProvider();
3537
private GraphQLErrorHandler errorHandler = new DefaultGraphQLErrorHandler();
38+
private PreparsedDocumentProvider preparsedDocumentProvider = NoOpPreparsedDocumentProvider.INSTANCE;
3639

3740
private GraphQLSchemaProvider schemaProvider;
3841

@@ -175,6 +178,14 @@ public void unsetErrorHandler(GraphQLErrorHandler errorHandler) {
175178
this.errorHandler = new DefaultGraphQLErrorHandler();
176179
}
177180

181+
@Reference(cardinality = ReferenceCardinality.OPTIONAL, policy= ReferencePolicy.DYNAMIC, policyOption = ReferencePolicyOption.GREEDY)
182+
public void setPreparsedDocumentProvider(PreparsedDocumentProvider preparsedDocumentProvider) {
183+
this.preparsedDocumentProvider = preparsedDocumentProvider;
184+
}
185+
public void unsetPreparsedDocumentProvider(PreparsedDocumentProvider preparsedDocumentProvider) {
186+
this.preparsedDocumentProvider = NoOpPreparsedDocumentProvider.INSTANCE;
187+
}
188+
178189
@Override
179190
protected GraphQLSchemaProvider getSchemaProvider() {
180191
return schemaProvider;
@@ -208,4 +219,9 @@ protected Map<String, Object> transformVariables(GraphQLSchema schema, String qu
208219
protected GraphQLErrorHandler getGraphQLErrorHandler() {
209220
return errorHandler;
210221
}
222+
223+
@Override
224+
protected PreparsedDocumentProvider getPreparsedDocumentProvider() {
225+
return preparsedDocumentProvider;
226+
}
211227
}

src/main/java/graphql/servlet/SimpleGraphQLServlet.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import graphql.execution.ExecutionStrategy;
44
import graphql.execution.instrumentation.Instrumentation;
55
import graphql.execution.instrumentation.NoOpInstrumentation;
6+
import graphql.execution.preparsed.NoOpPreparsedDocumentProvider;
7+
import graphql.execution.preparsed.PreparsedDocumentProvider;
68
import graphql.schema.GraphQLSchema;
79

810
import javax.servlet.http.HttpServletRequest;
@@ -25,14 +27,14 @@ public SimpleGraphQLServlet(GraphQLSchema schema, ExecutionStrategy executionStr
2527
}
2628

2729
public SimpleGraphQLServlet(GraphQLSchema schema, ExecutionStrategyProvider executionStrategyProvider) {
28-
this(schema, executionStrategyProvider, null, null, null, null, null, null);
30+
this(schema, executionStrategyProvider, null, null, null, null, null, null, null);
2931
}
3032

31-
public SimpleGraphQLServlet(final GraphQLSchema schema, ExecutionStrategyProvider executionStrategyProvider, ObjectMapperConfigurer objectMapperConfigurer, List<GraphQLServletListener> listeners, Instrumentation instrumentation, GraphQLErrorHandler errorHandler, GraphQLContextBuilder contextBuilder, GraphQLRootObjectBuilder rootObjectBuilder) {
32-
this(new DefaultGraphQLSchemaProvider(schema), executionStrategyProvider, objectMapperConfigurer, listeners, instrumentation, errorHandler, contextBuilder, rootObjectBuilder);
33+
public SimpleGraphQLServlet(final GraphQLSchema schema, ExecutionStrategyProvider executionStrategyProvider, ObjectMapperConfigurer objectMapperConfigurer, List<GraphQLServletListener> listeners, Instrumentation instrumentation, GraphQLErrorHandler errorHandler, GraphQLContextBuilder contextBuilder, GraphQLRootObjectBuilder rootObjectBuilder, PreparsedDocumentProvider preparsedDocumentProvider) {
34+
this(new DefaultGraphQLSchemaProvider(schema), executionStrategyProvider, objectMapperConfigurer, listeners, instrumentation, errorHandler, contextBuilder, rootObjectBuilder, preparsedDocumentProvider);
3335
}
3436

35-
public SimpleGraphQLServlet(GraphQLSchemaProvider schemaProvider, ExecutionStrategyProvider executionStrategyProvider, ObjectMapperConfigurer objectMapperConfigurer, List<GraphQLServletListener> listeners, Instrumentation instrumentation, GraphQLErrorHandler errorHandler, GraphQLContextBuilder contextBuilder, GraphQLRootObjectBuilder rootObjectBuilder) {
37+
public SimpleGraphQLServlet(GraphQLSchemaProvider schemaProvider, ExecutionStrategyProvider executionStrategyProvider, ObjectMapperConfigurer objectMapperConfigurer, List<GraphQLServletListener> listeners, Instrumentation instrumentation, GraphQLErrorHandler errorHandler, GraphQLContextBuilder contextBuilder, GraphQLRootObjectBuilder rootObjectBuilder, PreparsedDocumentProvider preparsedDocumentProvider) {
3638
super(objectMapperConfigurer, listeners, null);
3739

3840
this.schemaProvider = schemaProvider;
@@ -61,6 +63,12 @@ public SimpleGraphQLServlet(GraphQLSchemaProvider schemaProvider, ExecutionStrat
6163
} else {
6264
this.rootObjectBuilder = rootObjectBuilder;
6365
}
66+
67+
if(preparsedDocumentProvider == null) {
68+
this.preparsedDocumentProvider = NoOpPreparsedDocumentProvider.INSTANCE;
69+
} else {
70+
this.preparsedDocumentProvider = preparsedDocumentProvider;
71+
}
6472
}
6573

6674
private final GraphQLSchemaProvider schemaProvider;
@@ -69,6 +77,7 @@ public SimpleGraphQLServlet(GraphQLSchemaProvider schemaProvider, ExecutionStrat
6977
private final GraphQLErrorHandler errorHandler;
7078
private final GraphQLContextBuilder contextBuilder;
7179
private final GraphQLRootObjectBuilder rootObjectBuilder;
80+
private final PreparsedDocumentProvider preparsedDocumentProvider;
7281

7382
@Override
7483
protected GraphQLSchemaProvider getSchemaProvider() {
@@ -104,4 +113,9 @@ protected Map<String, Object> transformVariables(GraphQLSchema schema, String qu
104113
protected GraphQLErrorHandler getGraphQLErrorHandler() {
105114
return errorHandler;
106115
}
116+
117+
@Override
118+
protected PreparsedDocumentProvider getPreparsedDocumentProvider() {
119+
return preparsedDocumentProvider;
120+
}
107121
}

0 commit comments

Comments
 (0)