Skip to content

Commit 50cac40

Browse files
committed
Add any registered listeners to servlet
1 parent ccc381a commit 50cac40

File tree

3 files changed

+22
-15
lines changed

3 files changed

+22
-15
lines changed

src/main/java/graphql/servlet/DefaultExecutionStrategyProvider.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import graphql.execution.ExecutionStrategy;
55
import graphql.execution.SubscriptionExecutionStrategy;
66

7-
import java.util.function.Supplier;
8-
97
/**
108
* @author Andrew Potter
119
*/
@@ -24,17 +22,13 @@ public DefaultExecutionStrategyProvider(ExecutionStrategy executionStrategy) {
2422
}
2523

2624
public DefaultExecutionStrategyProvider(ExecutionStrategy queryExecutionStrategy, ExecutionStrategy mutationExecutionStrategy, ExecutionStrategy subscriptionExecutionStrategy) {
27-
this.queryExecutionStrategy = defaultIfNull(queryExecutionStrategy);
28-
this.mutationExecutionStrategy = defaultIfNull(mutationExecutionStrategy, () -> this.queryExecutionStrategy);
29-
this.subscriptionExecutionStrategy = defaultIfNull(subscriptionExecutionStrategy, SubscriptionExecutionStrategy::new);
30-
}
31-
32-
private ExecutionStrategy defaultIfNull(ExecutionStrategy executionStrategy) {
33-
return defaultIfNull(executionStrategy, AsyncExecutionStrategy::new);
25+
this.queryExecutionStrategy = defaultIfNull(queryExecutionStrategy, new AsyncExecutionStrategy());
26+
this.mutationExecutionStrategy = defaultIfNull(mutationExecutionStrategy, this.queryExecutionStrategy);
27+
this.subscriptionExecutionStrategy = defaultIfNull(subscriptionExecutionStrategy, new SubscriptionExecutionStrategy());
3428
}
3529

36-
private ExecutionStrategy defaultIfNull(ExecutionStrategy executionStrategy, Supplier<ExecutionStrategy> defaultStrategy) {
37-
return executionStrategy != null ? executionStrategy : defaultStrategy.get();
30+
private ExecutionStrategy defaultIfNull(ExecutionStrategy executionStrategy, ExecutionStrategy defaultStrategy) {
31+
return executionStrategy != null ? executionStrategy : defaultStrategy;
3832
}
3933

4034
@Override
@@ -51,4 +45,5 @@ public ExecutionStrategy getMutationExecutionStrategy() {
5145
public ExecutionStrategy getSubscriptionExecutionStrategy() {
5246
return subscriptionExecutionStrategy;
5347
}
48+
5449
}

src/main/java/graphql/servlet/GraphQLSchemaProvider.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
public interface GraphQLSchemaProvider {
99

1010
static GraphQLSchema copyReadOnly(GraphQLSchema schema) {
11-
return GraphQLSchema.newSchema().query(schema.getQueryType()).build(schema.getAdditionalTypes());
11+
return GraphQLSchema.newSchema()
12+
.query(schema.getQueryType())
13+
.subscription(schema.getSubscriptionType())
14+
.build(schema.getAdditionalTypes());
1215
}
1316

1417
/**
@@ -33,4 +36,5 @@ static GraphQLSchema copyReadOnly(GraphQLSchema schema) {
3336
* @return a read-only schema based on the request (auth, etc). Should return the same schema (query-only version) as {@link #getSchema(HttpServletRequest)} for a given request.
3437
*/
3538
GraphQLSchema getReadOnlySchema(HttpServletRequest request);
39+
3640
}

src/main/java/graphql/servlet/SimpleGraphQLHttpServlet.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import graphql.schema.GraphQLSchema;
44

5+
import java.util.List;
6+
57
/**
68
* @author Andrew Potter
79
*/
@@ -11,8 +13,8 @@ public class SimpleGraphQLHttpServlet extends AbstractGraphQLHttpServlet {
1113
private final GraphQLQueryInvoker queryInvoker;
1214
private final GraphQLObjectMapper graphQLObjectMapper;
1315

14-
private SimpleGraphQLHttpServlet(GraphQLInvocationInputFactory invocationInputFactory, GraphQLQueryInvoker queryInvoker, GraphQLObjectMapper graphQLObjectMapper, boolean asyncServletMode) {
15-
super(null, asyncServletMode);
16+
private SimpleGraphQLHttpServlet(GraphQLInvocationInputFactory invocationInputFactory, GraphQLQueryInvoker queryInvoker, GraphQLObjectMapper graphQLObjectMapper, List<GraphQLServletListener> listeners, boolean asyncServletMode) {
17+
super(listeners, asyncServletMode);
1618
this.invocationInputFactory = invocationInputFactory;
1719
this.queryInvoker = queryInvoker;
1820
this.graphQLObjectMapper = graphQLObjectMapper;
@@ -49,6 +51,7 @@ public static class Builder {
4951
private final GraphQLInvocationInputFactory invocationInputFactory;
5052
private GraphQLQueryInvoker queryInvoker = GraphQLQueryInvoker.newBuilder().build();
5153
private GraphQLObjectMapper graphQLObjectMapper = GraphQLObjectMapper.newBuilder().build();
54+
private List<GraphQLServletListener> listeners;
5255
private boolean asyncServletMode;
5356

5457
Builder(GraphQLInvocationInputFactory invocationInputFactory) {
@@ -70,8 +73,13 @@ public Builder withAsyncServletMode(boolean asyncServletMode) {
7073
return this;
7174
}
7275

76+
public Builder withListeners(List<GraphQLServletListener> listeners) {
77+
this.listeners = listeners;
78+
return this;
79+
}
80+
7381
public SimpleGraphQLHttpServlet build() {
74-
return new SimpleGraphQLHttpServlet(invocationInputFactory, queryInvoker, graphQLObjectMapper, asyncServletMode);
82+
return new SimpleGraphQLHttpServlet(invocationInputFactory, queryInvoker, graphQLObjectMapper, listeners, asyncServletMode);
7583
}
7684
}
7785
}

0 commit comments

Comments
 (0)