Skip to content

Commit bf7130c

Browse files
committed
chore: refactor context builder
1 parent 01cd8ef commit bf7130c

File tree

7 files changed

+70
-62
lines changed

7 files changed

+70
-62
lines changed

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

+15-3
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,37 @@
1212
public class DefaultGraphQLContext implements GraphQLKickstartContext {
1313

1414
private final DataLoaderRegistry dataLoaderRegistry;
15+
private final Map<Object, Object> map;
1516

16-
public DefaultGraphQLContext(DataLoaderRegistry dataLoaderRegistry) {
17+
public DefaultGraphQLContext(DataLoaderRegistry dataLoaderRegistry, Map<Object, Object> map) {
1718
this.dataLoaderRegistry =
1819
Objects.requireNonNull(dataLoaderRegistry, "dataLoaderRegistry is required");
20+
this.map = Objects.requireNonNull(map, "map is required");
21+
}
22+
23+
public DefaultGraphQLContext(Map<Object, Object> map) {
24+
this(new DataLoaderRegistry(), map);
25+
}
26+
27+
public DefaultGraphQLContext(DataLoaderRegistry dataLoaderRegistry) {
28+
this(dataLoaderRegistry, new HashMap<>());
1929
}
2030

2131
public DefaultGraphQLContext() {
2232
this(new DataLoaderRegistry());
2333
}
2434

35+
public void put(Object key, Object value) {
36+
map.put(key, value);
37+
}
38+
2539
@Override
2640
public DataLoaderRegistry getDataLoaderRegistry() {
2741
return dataLoaderRegistry;
2842
}
2943

3044
@Override
3145
public Map<Object, Object> getMapOfContext() {
32-
Map<Object, Object> map = new HashMap<>();
33-
map.put(DataLoaderRegistry.class, dataLoaderRegistry);
3446
return map;
3547
}
3648
}

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

+13
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,19 @@
77
/** Represents the context required by the servlet to execute a GraphQL request. */
88
public interface GraphQLKickstartContext {
99

10+
static GraphQLKickstartContext of(Map<Object, Object> map) {
11+
return new DefaultGraphQLContext(map);
12+
}
13+
14+
static GraphQLKickstartContext of(DataLoaderRegistry dataLoaderRegistry) {
15+
return new DefaultGraphQLContext(dataLoaderRegistry);
16+
}
17+
18+
static GraphQLKickstartContext of(
19+
DataLoaderRegistry dataLoaderRegistry, Map<Object, Object> map) {
20+
return new DefaultGraphQLContext(dataLoaderRegistry, map);
21+
}
22+
1023
/** @return the Dataloader registry to use for the execution. Must not return <code>null</code> */
1124
@NonNull
1225
DataLoaderRegistry getDataLoaderRegistry();

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

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

33
import graphql.kickstart.execution.context.DefaultGraphQLContext;
4-
import java.util.HashMap;
54
import java.util.List;
65
import java.util.Map;
76
import java.util.stream.Collectors;
@@ -11,19 +10,17 @@
1110
import lombok.SneakyThrows;
1211
import org.dataloader.DataLoaderRegistry;
1312

13+
/** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */
1414
public class DefaultGraphQLServletContext extends DefaultGraphQLContext
1515
implements GraphQLServletContext {
1616

17-
private final HttpServletRequest httpServletRequest;
18-
private final HttpServletResponse httpServletResponse;
19-
2017
protected DefaultGraphQLServletContext(
2118
DataLoaderRegistry dataLoaderRegistry,
2219
HttpServletRequest httpServletRequest,
2320
HttpServletResponse httpServletResponse) {
2421
super(dataLoaderRegistry);
25-
this.httpServletRequest = httpServletRequest;
26-
this.httpServletResponse = httpServletResponse;
22+
put(HttpServletRequest.class, httpServletRequest);
23+
put(HttpServletResponse.class, httpServletResponse);
2724
}
2825

2926
public static Builder createServletContext(DataLoaderRegistry registry) {
@@ -35,60 +32,52 @@ public static Builder createServletContext() {
3532
}
3633

3734
/**
38-
* @deprecated Use
39-
* <tt>dataFetchingEnvironment.getGraphQlContext().get(HttpServletRequest.class)</tt> instead.
40-
* Since 13.0.0
35+
* @deprecated Use {@code
36+
* dataFetchingEnvironment.getGraphQlContext().get(HttpServletRequest.class)} instead. Since
37+
* 13.0.0
4138
*/
4239
@Override
4340
@Deprecated
4441
public HttpServletRequest getHttpServletRequest() {
45-
return httpServletRequest;
42+
return (HttpServletRequest) getMapOfContext().get(HttpServletRequest.class);
4643
}
4744

4845
/**
49-
* @deprecated Use
50-
* <tt>dataFetchingEnvironment.getGraphQlContext().get(HttpServletResponse.class)</tt>
51-
* instead. Since 13.0.0
46+
* @deprecated Use {@code
47+
* dataFetchingEnvironment.getGraphQlContext().get(HttpServletResponse.class)} instead. Since
48+
* 13.0.0
5249
*/
5350
@Override
5451
@Deprecated
5552
public HttpServletResponse getHttpServletResponse() {
56-
return httpServletResponse;
53+
return (HttpServletResponse) getMapOfContext().get(HttpServletResponse.class);
5754
}
5855

5956
/**
60-
* @deprecated Use
61-
* <tt>dataFetchingEnvironment.getGraphQlContext().get(HttpServletRequest.class)</tt> instead
62-
* to get the request and retrieve the file parts yourself. Since 13.0.0
57+
* @deprecated Use {@code
58+
* dataFetchingEnvironment.getGraphQlContext().get(HttpServletRequest.class)} instead to get
59+
* the request and retrieve the file parts yourself. Since 13.0.0
6360
*/
6461
@Override
6562
@Deprecated
6663
@SneakyThrows
6764
public List<Part> getFileParts() {
68-
return httpServletRequest.getParts().stream()
65+
return getHttpServletRequest().getParts().stream()
6966
.filter(part -> part.getContentType() != null)
7067
.collect(Collectors.toList());
7168
}
7269

7370
/**
74-
* @deprecated Use
75-
* <tt>dataFetchingEnvironment.getGraphQlContext().get(HttpServletRequest.class)</tt> instead
76-
* to get the request and retrieve the parts yourself. Since 13.0.0
71+
* @deprecated Use {@code
72+
* dataFetchingEnvironment.getGraphQlContext().get(HttpServletRequest.class)} instead to get
73+
* the request and retrieve the parts yourself. Since 13.0.0
7774
*/
7875
@Override
7976
@Deprecated
8077
@SneakyThrows
8178
public Map<String, List<Part>> getParts() {
82-
return httpServletRequest.getParts().stream().collect(Collectors.groupingBy(Part::getName));
83-
}
84-
85-
@Override
86-
public Map<Object, Object> getMapOfContext() {
87-
Map<Object, Object> map = new HashMap<>();
88-
map.put(DataLoaderRegistry.class, getDataLoaderRegistry());
89-
map.put(HttpServletRequest.class, httpServletRequest);
90-
map.put(HttpServletResponse.class, httpServletResponse);
91-
return map;
79+
return getHttpServletRequest().getParts().stream()
80+
.collect(Collectors.groupingBy(Part::getName));
9281
}
9382

9483
public static class Builder {

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

+10-5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import graphql.kickstart.execution.context.DefaultGraphQLContextBuilder;
44
import graphql.kickstart.execution.context.GraphQLKickstartContext;
5+
import java.util.HashMap;
6+
import java.util.Map;
57
import javax.servlet.http.HttpServletRequest;
68
import javax.servlet.http.HttpServletResponse;
79
import javax.websocket.Session;
@@ -13,14 +15,17 @@ public class DefaultGraphQLServletContextBuilder extends DefaultGraphQLContextBu
1315

1416
@Override
1517
public GraphQLKickstartContext build(HttpServletRequest request, HttpServletResponse response) {
16-
return DefaultGraphQLServletContext.createServletContext().with(request).with(response).build();
18+
Map<Object, Object> map = new HashMap<>();
19+
map.put(HttpServletRequest.class, request);
20+
map.put(HttpServletResponse.class, response);
21+
return GraphQLKickstartContext.of(map);
1722
}
1823

1924
@Override
2025
public GraphQLKickstartContext build(Session session, HandshakeRequest handshakeRequest) {
21-
return DefaultGraphQLWebSocketContext.createWebSocketContext()
22-
.with(session)
23-
.with(handshakeRequest)
24-
.build();
26+
Map<Object, Object> map = new HashMap<>();
27+
map.put(Session.class, session);
28+
map.put(HandshakeRequest.class, handshakeRequest);
29+
return GraphQLKickstartContext.of(map);
2530
}
2631
}

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

+10-23
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
package graphql.kickstart.servlet.context;
22

33
import graphql.kickstart.execution.context.DefaultGraphQLContext;
4-
import java.util.HashMap;
5-
import java.util.Map;
64
import javax.websocket.Session;
75
import javax.websocket.server.HandshakeRequest;
86
import org.dataloader.DataLoaderRegistry;
97

8+
/** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */
9+
@Deprecated
1010
public class DefaultGraphQLWebSocketContext extends DefaultGraphQLContext
1111
implements GraphQLWebSocketContext {
1212

13-
private final Session session;
14-
private final HandshakeRequest handshakeRequest;
15-
1613
private DefaultGraphQLWebSocketContext(
1714
DataLoaderRegistry dataLoaderRegistry, Session session, HandshakeRequest handshakeRequest) {
1815
super(dataLoaderRegistry);
19-
this.session = session;
20-
this.handshakeRequest = handshakeRequest;
16+
put(Session.class, session);
17+
put(HandshakeRequest.class, handshakeRequest);
2118
}
2219

2320
public static Builder createWebSocketContext(DataLoaderRegistry registry) {
@@ -29,33 +26,23 @@ public static Builder createWebSocketContext() {
2926
}
3027

3128
/**
32-
* @deprecated Use <tt>dataFetchingEnvironment.getGraphQlContext().get(Session.class)</tt>
33-
* instead. Since 13.0.0
29+
* @deprecated Use {@code dataFetchingEnvironment.getGraphQlContext().get(Session.class)} instead.
30+
* Since 13.0.0
3431
*/
3532
@Override
3633
@Deprecated
3734
public Session getSession() {
38-
return session;
35+
return (Session) getMapOfContext().get(Session.class);
3936
}
4037

4138
/**
42-
* @deprecated Use
43-
* <tt>dataFetchingEnvironment.getGraphQlContext().get(HandshakeRequest.class)</tt> instead.
44-
* Since 13.0.0
39+
* @deprecated Use {@code dataFetchingEnvironment.getGraphQlContext().get(HandshakeRequest.class)}
40+
* instead. Since 13.0.0
4541
*/
4642
@Override
4743
@Deprecated
4844
public HandshakeRequest getHandshakeRequest() {
49-
return handshakeRequest;
50-
}
51-
52-
@Override
53-
public Map<Object, Object> getMapOfContext() {
54-
Map<Object, Object> map = new HashMap<>();
55-
map.put(DataLoaderRegistry.class, getDataLoaderRegistry());
56-
map.put(Session.class, session);
57-
map.put(HandshakeRequest.class, handshakeRequest);
58-
return map;
45+
return (HandshakeRequest) getMapOfContext().get(HandshakeRequest.class);
5946
}
6047

6148
public static class Builder {

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

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import javax.servlet.http.HttpServletResponse;
88
import javax.servlet.http.Part;
99

10+
/** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */
1011
public interface GraphQLServletContext extends GraphQLKickstartContext {
1112

1213
List<Part> getFileParts();

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import javax.websocket.Session;
55
import javax.websocket.server.HandshakeRequest;
66

7+
/** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */
78
public interface GraphQLWebSocketContext extends GraphQLKickstartContext {
89

910
Session getSession();

0 commit comments

Comments
 (0)