Skip to content

Commit a7ae98d

Browse files
committed
fix: support new graphql context
fixes #393
1 parent cea4114 commit a7ae98d

19 files changed

+86
-134
lines changed

build.gradle

+3-3
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ subprojects {
9292

9393
jacocoTestReport {
9494
reports {
95-
xml.enabled = true
96-
html.enabled = false
97-
csv.enabled = false
95+
xml.required = true
96+
html.required = false
97+
csv.required = false
9898
}
9999
}
100100

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version=12.0.1-SNAPSHOT
1+
version=13.0.0-SNAPSHOT
22
group=com.graphql-java-kickstart
33
PROJECT_NAME=graphql-java-servlet
44
PROJECT_DESC=GraphQL Java Kickstart

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/GraphQLInvokerSubjectProxy.java

-32
This file was deleted.

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/context/ContextSetting.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public enum ContextSetting {
4747
public GraphQLBatchedInvocationInput getBatch(
4848
List<GraphQLRequest> requests,
4949
GraphQLSchema schema,
50-
Supplier<GraphQLContext> contextSupplier,
50+
Supplier<GraphQLKickstartContext> contextSupplier,
5151
Object root) {
5252
switch (this) {
5353
case PER_QUERY_WITH_INSTRUMENTATION:
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,36 @@
11
package graphql.kickstart.execution.context;
22

3+
import java.util.HashMap;
4+
import java.util.Map;
35
import java.util.Objects;
4-
import java.util.Optional;
5-
import javax.security.auth.Subject;
66
import org.dataloader.DataLoaderRegistry;
77

88
/**
99
* An object for the DefaultGraphQLContextBuilder to return. Can be extended to include more
1010
* context.
1111
*/
12-
public class DefaultGraphQLContext implements GraphQLContext {
13-
14-
private final Subject subject;
12+
public class DefaultGraphQLContext implements GraphQLKickstartContext {
1513

1614
private final DataLoaderRegistry dataLoaderRegistry;
1715

18-
public DefaultGraphQLContext(DataLoaderRegistry dataLoaderRegistry, Subject subject) {
16+
public DefaultGraphQLContext(DataLoaderRegistry dataLoaderRegistry) {
1917
this.dataLoaderRegistry =
2018
Objects.requireNonNull(dataLoaderRegistry, "dataLoaderRegistry is required");
21-
this.subject = subject;
2219
}
2320

2421
public DefaultGraphQLContext() {
25-
this(new DataLoaderRegistry(), null);
22+
this(new DataLoaderRegistry());
2623
}
2724

2825
@Override
29-
public Optional<Subject> getSubject() {
30-
return Optional.ofNullable(subject);
26+
public DataLoaderRegistry getDataLoaderRegistry() {
27+
return dataLoaderRegistry;
3128
}
3229

3330
@Override
34-
public DataLoaderRegistry getDataLoaderRegistry() {
35-
return dataLoaderRegistry;
31+
public Map<Object, Object> getMapOfContext() {
32+
Map<Object, Object> map = new HashMap<>();
33+
map.put(DataLoaderRegistry.class, dataLoaderRegistry);
34+
return map;
3635
}
3736
}

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/context/DefaultGraphQLContextBuilder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
public class DefaultGraphQLContextBuilder implements GraphQLContextBuilder {
55

66
@Override
7-
public GraphQLContext build() {
7+
public GraphQLKickstartContext build() {
88
return new DefaultGraphQLContext();
99
}
1010
}

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/context/GraphQLContextBuilder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
public interface GraphQLContextBuilder {
44

55
/** @return the graphql context */
6-
GraphQLContext build();
6+
GraphQLKickstartContext build();
77
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
package graphql.kickstart.execution.context;
22

3-
import java.util.Optional;
4-
import javax.security.auth.Subject;
3+
import java.util.Map;
54
import lombok.NonNull;
65
import org.dataloader.DataLoaderRegistry;
76

87
/** Represents the context required by the servlet to execute a GraphQL request. */
9-
public interface GraphQLContext {
10-
11-
/** @return the subject to execute the query as. */
12-
Optional<Subject> getSubject();
8+
public interface GraphQLKickstartContext {
139

1410
/** @return the Dataloader registry to use for the execution. Must not return <code>null</code> */
1511
@NonNull
1612
DataLoaderRegistry getDataLoaderRegistry();
13+
14+
Map<Object, Object> getMapOfContext();
1715
}

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/input/GraphQLSingleInvocationInput.java

+4-16
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,9 @@
55
import graphql.ExecutionInput;
66
import graphql.execution.ExecutionId;
77
import graphql.kickstart.execution.GraphQLRequest;
8-
import graphql.kickstart.execution.context.GraphQLContext;
8+
import graphql.kickstart.execution.context.GraphQLKickstartContext;
99
import graphql.schema.GraphQLSchema;
10-
import java.util.Collections;
1110
import java.util.List;
12-
import java.util.Optional;
13-
import javax.security.auth.Subject;
1411

1512
/** Represents a single GraphQL execution. */
1613
public class GraphQLSingleInvocationInput implements GraphQLInvocationInput {
@@ -19,32 +16,24 @@ public class GraphQLSingleInvocationInput implements GraphQLInvocationInput {
1916

2017
private final ExecutionInput executionInput;
2118

22-
private final Subject subject;
23-
2419
public GraphQLSingleInvocationInput(
25-
GraphQLRequest request, GraphQLSchema schema, GraphQLContext context, Object root) {
20+
GraphQLRequest request, GraphQLSchema schema, GraphQLKickstartContext context, Object root) {
2621
this.schema = schema;
2722
this.executionInput = createExecutionInput(request, context, root);
28-
subject = context.getSubject().orElse(null);
2923
}
3024

3125
/** @return the schema to use to execute this query. */
3226
public GraphQLSchema getSchema() {
3327
return schema;
3428
}
3529

36-
/** @return a subject to execute the query as. */
37-
public Optional<Subject> getSubject() {
38-
return Optional.ofNullable(subject);
39-
}
40-
4130
private ExecutionInput createExecutionInput(
42-
GraphQLRequest graphQLRequest, GraphQLContext context, Object root) {
31+
GraphQLRequest graphQLRequest, GraphQLKickstartContext context, Object root) {
4332
return ExecutionInput.newExecutionInput()
4433
.query(graphQLRequest.getQuery())
4534
.operationName(graphQLRequest.getOperationName())
4635
.context(context)
47-
.graphQLContext(Collections.singletonMap(context.getClass(), context))
36+
.graphQLContext(context.getMapOfContext())
4837
.root(root)
4938
.variables(graphQLRequest.getVariables())
5039
.extensions(graphQLRequest.getExtensions())
@@ -61,5 +50,4 @@ public ExecutionInput getExecutionInput() {
6150
public List<String> getQueries() {
6251
return singletonList(executionInput.getQuery());
6352
}
64-
6553
}

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/input/PerQueryBatchedInvocationInput.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import graphql.kickstart.execution.GraphQLRequest;
66
import graphql.kickstart.execution.context.ContextSetting;
7-
import graphql.kickstart.execution.context.GraphQLContext;
7+
import graphql.kickstart.execution.context.GraphQLKickstartContext;
88
import graphql.schema.GraphQLSchema;
99
import java.util.List;
1010
import java.util.function.Supplier;
@@ -21,7 +21,7 @@ public class PerQueryBatchedInvocationInput implements GraphQLBatchedInvocationI
2121
public PerQueryBatchedInvocationInput(
2222
List<GraphQLRequest> requests,
2323
GraphQLSchema schema,
24-
Supplier<GraphQLContext> contextSupplier,
24+
Supplier<GraphQLKickstartContext> contextSupplier,
2525
Object root,
2626
ContextSetting contextSetting) {
2727
invocationInputs =

graphql-java-kickstart/src/main/java/graphql/kickstart/execution/input/PerRequestBatchedInvocationInput.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import graphql.kickstart.execution.GraphQLRequest;
66
import graphql.kickstart.execution.context.ContextSetting;
7-
import graphql.kickstart.execution.context.GraphQLContext;
7+
import graphql.kickstart.execution.context.GraphQLKickstartContext;
88
import graphql.schema.GraphQLSchema;
99
import java.util.List;
1010
import java.util.function.Supplier;
@@ -20,10 +20,10 @@ public class PerRequestBatchedInvocationInput implements GraphQLBatchedInvocatio
2020
public PerRequestBatchedInvocationInput(
2121
List<GraphQLRequest> requests,
2222
GraphQLSchema schema,
23-
Supplier<GraphQLContext> contextSupplier,
23+
Supplier<GraphQLKickstartContext> contextSupplier,
2424
Object root,
2525
ContextSetting contextSetting) {
26-
GraphQLContext context = contextSupplier.get();
26+
GraphQLKickstartContext context = contextSupplier.get();
2727
invocationInputs =
2828
requests.stream()
2929
.map(request -> new GraphQLSingleInvocationInput(request, schema, context, root))

graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java

+16-14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package graphql.kickstart.servlet.context;
22

33
import graphql.kickstart.execution.context.DefaultGraphQLContext;
4+
import java.util.HashMap;
45
import java.util.List;
56
import java.util.Map;
67
import java.util.stream.Collectors;
@@ -19,20 +20,19 @@ public class DefaultGraphQLServletContext extends DefaultGraphQLContext
1920

2021
protected DefaultGraphQLServletContext(
2122
DataLoaderRegistry dataLoaderRegistry,
22-
Subject subject,
2323
HttpServletRequest httpServletRequest,
2424
HttpServletResponse httpServletResponse) {
25-
super(dataLoaderRegistry, subject);
25+
super(dataLoaderRegistry);
2626
this.httpServletRequest = httpServletRequest;
2727
this.httpServletResponse = httpServletResponse;
2828
}
2929

30-
public static Builder createServletContext(DataLoaderRegistry registry, Subject subject) {
31-
return new Builder(registry, subject);
30+
public static Builder createServletContext(DataLoaderRegistry registry) {
31+
return new Builder(registry);
3232
}
3333

3434
public static Builder createServletContext() {
35-
return new Builder(new DataLoaderRegistry(), null);
35+
return new Builder(new DataLoaderRegistry());
3636
}
3737

3838
@Override
@@ -59,21 +59,28 @@ public Map<String, List<Part>> getParts() {
5959
return httpServletRequest.getParts().stream().collect(Collectors.groupingBy(Part::getName));
6060
}
6161

62+
@Override
63+
public Map<Object, Object> getMapOfContext() {
64+
Map<Object, Object> map = new HashMap<>();
65+
map.put(DataLoaderRegistry.class, getDataLoaderRegistry());
66+
map.put(HttpServletRequest.class, httpServletRequest);
67+
map.put(HttpServletResponse.class, httpServletResponse);
68+
return map;
69+
}
70+
6271
public static class Builder {
6372

6473
private HttpServletRequest httpServletRequest;
6574
private HttpServletResponse httpServletResponse;
6675
private DataLoaderRegistry dataLoaderRegistry;
67-
private Subject subject;
6876

69-
private Builder(DataLoaderRegistry dataLoaderRegistry, Subject subject) {
77+
private Builder(DataLoaderRegistry dataLoaderRegistry) {
7078
this.dataLoaderRegistry = dataLoaderRegistry;
71-
this.subject = subject;
7279
}
7380

7481
public DefaultGraphQLServletContext build() {
7582
return new DefaultGraphQLServletContext(
76-
dataLoaderRegistry, subject, httpServletRequest, httpServletResponse);
83+
dataLoaderRegistry, httpServletRequest, httpServletResponse);
7784
}
7885

7986
public Builder with(HttpServletRequest httpServletRequest) {
@@ -86,11 +93,6 @@ public Builder with(DataLoaderRegistry dataLoaderRegistry) {
8693
return this;
8794
}
8895

89-
public Builder with(Subject subject) {
90-
this.subject = subject;
91-
return this;
92-
}
93-
9496
public Builder with(HttpServletResponse httpServletResponse) {
9597
this.httpServletResponse = httpServletResponse;
9698
return this;

graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package graphql.kickstart.servlet.context;
22

33
import graphql.kickstart.execution.context.DefaultGraphQLContextBuilder;
4-
import graphql.kickstart.execution.context.GraphQLContext;
4+
import graphql.kickstart.execution.context.GraphQLKickstartContext;
55
import javax.servlet.http.HttpServletRequest;
66
import javax.servlet.http.HttpServletResponse;
77
import javax.websocket.Session;
@@ -12,12 +12,12 @@ public class DefaultGraphQLServletContextBuilder extends DefaultGraphQLContextBu
1212
implements GraphQLServletContextBuilder {
1313

1414
@Override
15-
public GraphQLContext build(HttpServletRequest request, HttpServletResponse response) {
15+
public GraphQLKickstartContext build(HttpServletRequest request, HttpServletResponse response) {
1616
return DefaultGraphQLServletContext.createServletContext().with(request).with(response).build();
1717
}
1818

1919
@Override
20-
public GraphQLContext build(Session session, HandshakeRequest handshakeRequest) {
20+
public GraphQLKickstartContext build(Session session, HandshakeRequest handshakeRequest) {
2121
return DefaultGraphQLWebSocketContext.createWebSocketContext()
2222
.with(session)
2323
.with(handshakeRequest)

0 commit comments

Comments
 (0)