Skip to content

Commit 4bf61e1

Browse files
committed
PoC subscription support and being refining
1 parent 71d1b26 commit 4bf61e1

19 files changed

+477
-174
lines changed

build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ dependencies {
5050
compileOnly 'biz.aQute.bnd:biz.aQute.bndlib:3.1.0'
5151

5252
// Servlet
53-
compile 'javax.servlet:javax.servlet-api:3.0.1'
53+
compile 'javax.servlet:javax.servlet-api:4.0.0'
54+
compile 'javax.websocket:javax.websocket-api:1.1'
55+
5456
// Multipart support
5557
compile 'commons-fileupload:commons-fileupload:1.3.1'
5658

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
version = 4.6.1
1+
version = 4.6.1-SNAPSHOT
22
group = com.graphql-java
Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
package graphql.servlet;
22

33
import javax.servlet.http.HttpServletRequest;
4-
import javax.servlet.http.HttpServletResponse;
5-
import java.util.Optional;
4+
import javax.websocket.server.HandshakeRequest;
65

76
public class DefaultGraphQLContextBuilder implements GraphQLContextBuilder {
87

98
@Override
10-
public GraphQLContext build(Optional<HttpServletRequest> req, Optional<HttpServletResponse> resp) {
11-
return new GraphQLContext(req, resp);
9+
public GraphQLContext build(HttpServletRequest httpServletRequest) {
10+
return new GraphQLContext(httpServletRequest);
1211
}
1312

13+
@Override
14+
public GraphQLContext build(HandshakeRequest handshakeRequest) {
15+
return new GraphQLContext(handshakeRequest);
16+
}
17+
18+
@Override
19+
public GraphQLContext build() {
20+
return new GraphQLContext();
21+
}
1422
}

src/main/java/graphql/servlet/DefaultGraphQLSchemaProvider.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import graphql.schema.GraphQLSchema;
44

55
import javax.servlet.http.HttpServletRequest;
6+
import javax.websocket.server.HandshakeRequest;
67

78
/**
89
* @author Andrew Potter
@@ -27,6 +28,11 @@ public GraphQLSchema getSchema(HttpServletRequest request) {
2728
return getSchema();
2829
}
2930

31+
@Override
32+
public GraphQLSchema getSchema(HandshakeRequest request) {
33+
return getSchema();
34+
}
35+
3036
@Override
3137
public GraphQLSchema getSchema() {
3238
return schema;

src/main/java/graphql/servlet/GraphQLContext.java

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,51 +5,53 @@
55
import javax.security.auth.Subject;
66
import javax.servlet.http.HttpServletRequest;
77
import javax.servlet.http.HttpServletResponse;
8+
import javax.websocket.server.HandshakeRequest;
89
import java.util.List;
910
import java.util.Map;
1011
import java.util.Optional;
1112

1213
public class GraphQLContext {
13-
private Optional<HttpServletRequest> request;
14-
private Optional<HttpServletResponse> response;
14+
private final HttpServletRequest httpServletRequest;
15+
private final HandshakeRequest handshakeRequest;
16+
private final Subject subject;
1517

16-
private Optional<Subject> subject = Optional.empty();
17-
private Optional<Map<String, List<FileItem>>> files = Optional.empty();
18+
private Map<String, List<FileItem>> files = null;
1819

19-
public GraphQLContext(Optional<HttpServletRequest> request, Optional<HttpServletResponse> response) {
20-
this.request = request;
21-
this.response = response;
20+
public GraphQLContext(HttpServletRequest httpServletRequest, HandshakeRequest handshakeRequest, Subject subject) {
21+
this.httpServletRequest = httpServletRequest;
22+
this.handshakeRequest = handshakeRequest;
23+
this.subject = subject;
2224
}
2325

24-
public Optional<HttpServletRequest> getRequest() {
25-
return request;
26+
public GraphQLContext(HttpServletRequest httpServletRequest) {
27+
this(httpServletRequest, null, null);
2628
}
2729

28-
public void setRequest(Optional<HttpServletRequest> request) {
29-
this.request = request;
30+
public GraphQLContext(HandshakeRequest handshakeRequest) {
31+
this(null, handshakeRequest, null);
3032
}
3133

32-
public Optional<HttpServletResponse> getResponse() {
33-
return response;
34+
public GraphQLContext() {
35+
this(null, null, null);
3436
}
3537

36-
public void setResponse(Optional<HttpServletResponse> response) {
37-
this.response = response;
38+
public Optional<HttpServletRequest> getHttpServletRequest() {
39+
return Optional.ofNullable(httpServletRequest);
3840
}
3941

40-
public Optional<Subject> getSubject() {
41-
return subject;
42+
public Optional<HandshakeRequest> getHandshakeRequest() {
43+
return Optional.ofNullable(handshakeRequest);
4244
}
4345

44-
public void setSubject(Optional<Subject> subject) {
45-
this.subject = subject;
46+
public Optional<Subject> getSubject() {
47+
return Optional.ofNullable(subject);
4648
}
4749

4850
public Optional<Map<String, List<FileItem>>> getFiles() {
49-
return files;
51+
return Optional.ofNullable(files);
5052
}
5153

52-
public void setFiles(Optional<Map<String, List<FileItem>>> files) {
54+
public void setFiles(Map<String, List<FileItem>> files) {
5355
this.files = files;
5456
}
5557
}

src/main/java/graphql/servlet/GraphQLContextBuilder.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,16 @@
22

33
import javax.servlet.http.HttpServletRequest;
44
import javax.servlet.http.HttpServletResponse;
5+
import javax.websocket.server.HandshakeRequest;
56
import java.util.Optional;
67

78
public interface GraphQLContextBuilder {
8-
GraphQLContext build(Optional<HttpServletRequest> req, Optional<HttpServletResponse> resp);
9+
GraphQLContext build(HttpServletRequest httpServletRequest);
10+
GraphQLContext build(HandshakeRequest handshakeRequest);
11+
12+
/**
13+
* Only used for MBean calls.
14+
* @return the graphql context
15+
*/
16+
GraphQLContext build();
917
}

src/main/java/graphql/servlet/GraphQLRootObjectBuilder.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,16 @@
22

33
import javax.servlet.http.HttpServletRequest;
44
import javax.servlet.http.HttpServletResponse;
5+
import javax.websocket.server.HandshakeRequest;
56
import java.util.Optional;
67

78
public interface GraphQLRootObjectBuilder {
8-
Object build(Optional<HttpServletRequest> req, Optional<HttpServletResponse> resp);
9+
Object build(HttpServletRequest req);
10+
Object build(HandshakeRequest req);
11+
12+
/**
13+
* Only used for MBean calls.
14+
* @return the graphql root object
15+
*/
16+
Object build();
917
}

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import graphql.schema.GraphQLSchema;
44

55
import javax.servlet.http.HttpServletRequest;
6+
import javax.websocket.server.HandshakeRequest;
67

78
public interface GraphQLSchemaProvider {
89

@@ -12,10 +13,15 @@ static GraphQLSchema copyReadOnly(GraphQLSchema schema) {
1213

1314
/**
1415
* @param request the http request
15-
* @return a schema based on the request (auth, etc). Optional is empty when called from an mbean.
16+
* @return a schema based on the request (auth, etc).
1617
*/
1718
GraphQLSchema getSchema(HttpServletRequest request);
1819

20+
/**
21+
* @param request the http request
22+
* @return a schema based on the request (auth, etc).
23+
*/
24+
GraphQLSchema getSchema(HandshakeRequest request);
1925

2026
/**
2127
* @return a schema for handling mbean calls.
@@ -24,7 +30,7 @@ static GraphQLSchema copyReadOnly(GraphQLSchema schema) {
2430

2531
/**
2632
* @param request the http request
27-
* @return a read-only schema based on the request (auth, etc). Should return the same schema as {@link #getSchema(HttpServletRequest)} for a given request.
33+
* @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.
2834
*/
2935
GraphQLSchema getReadOnlySchema(HttpServletRequest request);
3036
}

0 commit comments

Comments
 (0)