Skip to content

Commit 8ed10e0

Browse files
committed
Refactored contexts specifically for servlet and websocket
1 parent a2eb676 commit 8ed10e0

File tree

8 files changed

+174
-127
lines changed

8 files changed

+174
-127
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package graphql.servlet.context;
2+
3+
import org.dataloader.DataLoaderRegistry;
4+
5+
import javax.security.auth.Subject;
6+
import java.util.Optional;
7+
8+
/**
9+
* An object for the DefaultGraphQLContextBuilder to return. Can be extended to include more context.
10+
*/
11+
public class DefaultGraphQLContext implements GraphQLContext{
12+
13+
private final Subject subject;
14+
15+
private final DataLoaderRegistry dataLoaderRegistry;
16+
17+
public DefaultGraphQLContext(DataLoaderRegistry dataLoaderRegistry, Subject subject) {
18+
this.dataLoaderRegistry = dataLoaderRegistry;
19+
this.subject = subject;
20+
}
21+
22+
public DefaultGraphQLContext() {
23+
this(null, null);
24+
}
25+
26+
@Override
27+
public Optional<Subject> getSubject() {
28+
return Optional.ofNullable(subject);
29+
}
30+
31+
@Override
32+
public Optional<DataLoaderRegistry> getDataLoaderRegistry() {
33+
return Optional.ofNullable(dataLoaderRegistry);
34+
}
35+
}

src/main/java/graphql/servlet/context/DefaultGraphQLContextBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class DefaultGraphQLContextBuilder implements GraphQLContextBuilder {
1515

1616
@Override
1717
public GraphQLContext build(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map<String, List<Part>> fileParts) {
18-
return DefaultGraphQLWebSocketContext.createWebContext().with(httpServletRequest).with(httpServletResponse).with(fileParts).build();
18+
return DefaultGraphQLServletContext.createWebContext().with(httpServletRequest).with(httpServletResponse).with(fileParts).build();
1919
}
2020

2121
@Override
@@ -25,6 +25,6 @@ public GraphQLContext build(Session session, HandshakeRequest handshakeRequest)
2525

2626
@Override
2727
public GraphQLContext build() {
28-
return new DefaultGraphQLServletContext();
28+
return new DefaultGraphQLContext();
2929
}
3030
}

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

Lines changed: 76 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,93 @@
33
import org.dataloader.DataLoaderRegistry;
44

55
import javax.security.auth.Subject;
6-
import java.util.Optional;
6+
import javax.servlet.http.HttpServletRequest;
7+
import javax.servlet.http.HttpServletResponse;
8+
import javax.servlet.http.Part;
9+
import java.util.Collection;
10+
import java.util.HashMap;
11+
import java.util.List;
12+
import java.util.Map;
13+
import java.util.stream.Collectors;
714

8-
/**
9-
* An object for the DefaultGraphQLContextBuilder to return. Can be extended to include more context.
10-
*/
11-
public class DefaultGraphQLServletContext implements GraphQLContext{
15+
class DefaultGraphQLServletContext extends DefaultGraphQLContext implements GraphQLServletContext {
1216

13-
private final Subject subject;
17+
private final HttpServletRequest httpServletRequest;
18+
private final HttpServletResponse httpServletResponse;
19+
private final Map<String, List<Part>> parts;
1420

15-
private final DataLoaderRegistry dataLoaderRegistry;
21+
private DefaultGraphQLServletContext(DataLoaderRegistry dataLoaderRegistry, Subject subject, HttpServletRequest httpServletRequest,
22+
HttpServletResponse httpServletResponse,
23+
Map<String, List<Part>> parts) {
24+
super(dataLoaderRegistry, subject);
25+
this.httpServletRequest = httpServletRequest;
26+
this.httpServletResponse = httpServletResponse;
27+
this.parts = parts;
28+
}
1629

17-
public DefaultGraphQLServletContext(DataLoaderRegistry dataLoaderRegistry, Subject subject) {
18-
this.dataLoaderRegistry = dataLoaderRegistry;
19-
this.subject = subject;
30+
@Override
31+
public HttpServletRequest getHttpServletRequest() {
32+
return httpServletRequest;
2033
}
2134

22-
public DefaultGraphQLServletContext() {
23-
this(null, null);
35+
@Override
36+
public HttpServletResponse getHttpServletResponse() {
37+
return httpServletResponse;
2438
}
2539

2640
@Override
27-
public Optional<Subject> getSubject() {
28-
return Optional.ofNullable(subject);
41+
public List<Part> getFileParts() {
42+
return parts.values()
43+
.stream()
44+
.flatMap(Collection::stream)
45+
.filter(part -> part.getContentType() != null)
46+
.collect(Collectors.toList());
2947
}
3048

3149
@Override
32-
public Optional<DataLoaderRegistry> getDataLoaderRegistry() {
33-
return Optional.ofNullable(dataLoaderRegistry);
50+
public Map<String, List<Part>> getParts() {
51+
return parts;
52+
}
53+
54+
public static Builder createWebContext(DataLoaderRegistry registry, Subject subject) {
55+
return new Builder(registry, subject);
56+
}
57+
58+
public static Builder createWebContext() {
59+
return new Builder(null, null);
60+
}
61+
62+
public static class Builder {
63+
private HttpServletRequest httpServletRequest;
64+
private HttpServletResponse httpServletResponse;
65+
private Map<String, List<Part>> parts = new HashMap<>();
66+
private DataLoaderRegistry dataLoaderRegistry;
67+
private Subject subject;
68+
69+
private Builder(DataLoaderRegistry dataLoaderRegistry, Subject subject) {
70+
this.dataLoaderRegistry = dataLoaderRegistry;
71+
this.subject = subject;
72+
}
73+
74+
public DefaultGraphQLServletContext build() {
75+
return new DefaultGraphQLServletContext(dataLoaderRegistry, subject, httpServletRequest, httpServletResponse, parts);
76+
}
77+
78+
public Builder with(HttpServletRequest httpServletRequest) {
79+
this.httpServletRequest = httpServletRequest;
80+
return this;
81+
}
82+
83+
public Builder with(HttpServletResponse httpServletResponse) {
84+
this.httpServletResponse = httpServletResponse;
85+
return this;
86+
}
87+
88+
public Builder with(Map<String, List<Part>> parts) {
89+
if (parts != null) {
90+
this.parts.putAll(parts);
91+
}
92+
return this;
93+
}
3494
}
3595
}

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

Lines changed: 9 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -4,74 +4,35 @@
44
import org.dataloader.DataLoaderRegistry;
55

66
import javax.security.auth.Subject;
7-
import javax.servlet.http.HttpServletRequest;
8-
import javax.servlet.http.HttpServletResponse;
9-
import javax.servlet.http.Part;
107
import javax.websocket.Session;
118
import javax.websocket.server.HandshakeRequest;
12-
import java.util.Collection;
13-
import java.util.HashMap;
14-
import java.util.List;
15-
import java.util.Map;
169
import java.util.Optional;
17-
import java.util.stream.Collectors;
1810

19-
public class DefaultGraphQLWebSocketContext extends DefaultGraphQLServletContext implements GraphQLWebSocketContext {
11+
class DefaultGraphQLWebSocketContext extends DefaultGraphQLContext implements GraphQLWebSocketContext {
2012

21-
private final HttpServletRequest httpServletRequest;
22-
private final HttpServletResponse httpServletResponse;
2313
private final Session session;
2414
private final HandshakeRequest handshakeRequest;
25-
private final Map<String, List<Part>> parts;
2615

27-
private DefaultGraphQLWebSocketContext(DataLoaderRegistry dataLoaderRegistry, Subject subject, HttpServletRequest httpServletRequest,
28-
HttpServletResponse httpServletResponse, Session session, HandshakeRequest handshakeRequest,
29-
Map<String, List<Part>> parts) {
16+
private DefaultGraphQLWebSocketContext(DataLoaderRegistry dataLoaderRegistry, Subject subject,
17+
Session session, HandshakeRequest handshakeRequest) {
3018
super(dataLoaderRegistry, subject);
31-
this.httpServletRequest = httpServletRequest;
32-
this.httpServletResponse = httpServletResponse;
3319
this.session = session;
3420
this.handshakeRequest = handshakeRequest;
35-
this.parts = parts;
3621
}
3722

3823
@Override
39-
public Optional<HttpServletRequest> getHttpServletRequest() {
40-
return Optional.ofNullable(httpServletRequest);
41-
}
42-
43-
@Override
44-
public Optional<HttpServletResponse> getHttpServletResponse() {
45-
return Optional.ofNullable(httpServletResponse);
46-
}
47-
48-
@Override
49-
public List<Part> getFileParts() {
50-
return parts.values()
51-
.stream()
52-
.flatMap(Collection::stream)
53-
.filter(part -> part.getContentType() != null)
54-
.collect(Collectors.toList());
55-
}
56-
57-
@Override
58-
public Map<String, List<Part>> getParts() {
59-
return parts;
60-
}
61-
62-
@Override
63-
public Optional<Session> getSession() {
64-
return Optional.ofNullable(session);
24+
public Session getSession() {
25+
return session;
6526
}
6627

6728
@Override
6829
public Optional<Object> getConnectResult() {
69-
return getSession().map(session -> session.getUserProperties().get(ApolloSubscriptionConnectionListener.CONNECT_RESULT_KEY));
30+
return Optional.of(session).map(session -> session.getUserProperties().get(ApolloSubscriptionConnectionListener.CONNECT_RESULT_KEY));
7031
}
7132

7233
@Override
73-
public Optional<HandshakeRequest> getHandshakeRequest() {
74-
return Optional.ofNullable(handshakeRequest);
34+
public HandshakeRequest getHandshakeRequest() {
35+
return handshakeRequest;
7536
}
7637

7738
public static Builder createWebContext(DataLoaderRegistry registry, Subject subject) {
@@ -83,11 +44,8 @@ public static Builder createWebContext() {
8344
}
8445

8546
public static class Builder {
86-
private HttpServletRequest httpServletRequest;
87-
private HttpServletResponse httpServletResponse;
8847
private Session session;
8948
private HandshakeRequest handshakeRequest;
90-
private Map<String, List<Part>> parts = new HashMap<>();
9149
private DataLoaderRegistry dataLoaderRegistry;
9250
private Subject subject;
9351

@@ -97,17 +55,7 @@ private Builder(DataLoaderRegistry dataLoaderRegistry, Subject subject) {
9755
}
9856

9957
public DefaultGraphQLWebSocketContext build() {
100-
return new DefaultGraphQLWebSocketContext(dataLoaderRegistry, subject, httpServletRequest, httpServletResponse, session, handshakeRequest, parts);
101-
}
102-
103-
public Builder with(HttpServletRequest httpServletRequest) {
104-
this.httpServletRequest = httpServletRequest;
105-
return this;
106-
}
107-
108-
public Builder with(HttpServletResponse httpServletResponse) {
109-
this.httpServletResponse = httpServletResponse;
110-
return this;
58+
return new DefaultGraphQLWebSocketContext(dataLoaderRegistry, subject, session, handshakeRequest);
11159
}
11260

11361
public Builder with(Session session) {
@@ -120,11 +68,5 @@ public Builder with(HandshakeRequest handshakeRequest) {
12068
return this;
12169
}
12270

123-
public Builder with(Map<String, List<Part>> parts) {
124-
if (parts != null) {
125-
this.parts.putAll(parts);
126-
}
127-
return this;
128-
}
12971
}
13072
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package graphql.servlet.context;
2+
3+
import javax.servlet.http.HttpServletRequest;
4+
import javax.servlet.http.HttpServletResponse;
5+
import javax.servlet.http.Part;
6+
import javax.websocket.Session;
7+
import javax.websocket.server.HandshakeRequest;
8+
import java.util.List;
9+
import java.util.Map;
10+
import java.util.Optional;
11+
12+
public interface GraphQLServletContext extends GraphQLContext {
13+
14+
List<Part> getFileParts();
15+
16+
Map<String, List<Part>> getParts();
17+
18+
HttpServletRequest getHttpServletRequest();
19+
20+
HttpServletResponse getHttpServletResponse();
21+
22+
}
Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,15 @@
11
package graphql.servlet.context;
22

3-
import javax.servlet.http.HttpServletRequest;
4-
import javax.servlet.http.HttpServletResponse;
5-
import javax.servlet.http.Part;
63
import javax.websocket.Session;
74
import javax.websocket.server.HandshakeRequest;
8-
import java.util.List;
9-
import java.util.Map;
105
import java.util.Optional;
116

127
public interface GraphQLWebSocketContext extends GraphQLContext {
138

14-
List<Part> getFileParts();
15-
16-
Map<String, List<Part>> getParts();
17-
18-
Optional<Session> getSession();
9+
Session getSession();
1910

2011
Optional<Object> getConnectResult();
2112

22-
Optional<HandshakeRequest> getHandshakeRequest();
23-
24-
Optional<HttpServletRequest> getHttpServletRequest();
13+
HandshakeRequest getHandshakeRequest();
2514

26-
Optional<HttpServletResponse> getHttpServletResponse();
2715
}

0 commit comments

Comments
 (0)