Skip to content

Commit eda1e89

Browse files
committed
refactor of Abstract classes, context and packages with a little clean up
1 parent bbc3e43 commit eda1e89

File tree

70 files changed

+497
-411
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+497
-411
lines changed

src/main/java/graphql/servlet/core/AbstractGraphQLHttpServlet.java renamed to src/main/java/graphql/servlet/AbstractGraphQLHttpServlet.java

Lines changed: 49 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
1-
package graphql.servlet.core;
1+
package graphql.servlet;
22

33
import com.google.common.io.ByteStreams;
44
import com.google.common.io.CharStreams;
55
import graphql.ExecutionResult;
66
import graphql.introspection.IntrospectionQuery;
77
import graphql.schema.GraphQLFieldDefinition;
8-
import graphql.servlet.GraphQLMBean;
9-
import graphql.servlet.GraphQLObjectMapper;
10-
import graphql.servlet.GraphQLQueryInvoker;
11-
import graphql.servlet.GraphQLServletListener;
12-
import graphql.servlet.input.ContextSetting;
8+
import graphql.servlet.core.GraphQLMBean;
9+
import graphql.servlet.core.GraphQLObjectMapper;
10+
import graphql.servlet.core.GraphQLQueryInvoker;
11+
import graphql.servlet.core.GraphQLServletListener;
12+
import graphql.servlet.config.GraphQLConfiguration;
13+
import graphql.servlet.context.ContextSetting;
14+
import graphql.servlet.input.BatchInputPreProcessResult;
15+
import graphql.servlet.input.BatchInputPreProcessor;
1316
import graphql.servlet.input.GraphQLBatchedInvocationInput;
1417
import graphql.servlet.input.GraphQLSingleInvocationInput;
1518
import graphql.servlet.input.GraphQLInvocationInputFactory;
16-
import graphql.servlet.internal.GraphQLRequest;
17-
import graphql.servlet.internal.VariableMapper;
19+
import graphql.servlet.core.internal.GraphQLRequest;
20+
import graphql.servlet.core.internal.VariableMapper;
1821
import org.reactivestreams.Publisher;
1922
import org.reactivestreams.Subscriber;
2023
import org.reactivestreams.Subscription;
@@ -34,6 +37,7 @@
3437
import java.util.ArrayList;
3538
import java.util.Arrays;
3639
import java.util.HashMap;
40+
import java.util.Iterator;
3741
import java.util.List;
3842
import java.util.Map;
3943
import java.util.Objects;
@@ -121,7 +125,6 @@ public void init() {
121125
GraphQLInvocationInputFactory invocationInputFactory = configuration.getInvocationInputFactory();
122126
GraphQLObjectMapper graphQLObjectMapper = configuration.getObjectMapper();
123127
GraphQLQueryInvoker queryInvoker = configuration.getQueryInvoker();
124-
ContextSetting contextSetting = configuration.getContextSetting();
125128

126129
String path = request.getPathInfo();
127130
if (path == null) {
@@ -135,8 +138,10 @@ public void init() {
135138
if (query != null) {
136139

137140
if (isBatchedQuery(query)) {
138-
queryInvoker.query(invocationInputFactory.createReadOnly(contextSetting, graphQLObjectMapper.readBatchedGraphQLRequest(query),
139-
request, response), contextSetting, request, response, graphQLObjectMapper);
141+
List<GraphQLRequest> requests = graphQLObjectMapper.readBatchedGraphQLRequest(query);
142+
GraphQLBatchedInvocationInput batchedInvocationInput =
143+
invocationInputFactory.createReadOnly(configuration.getContextSetting(), requests, request, response);
144+
queryBatched(queryInvoker, batchedInvocationInput, request, response, configuration);
140145
} else {
141146
final Map<String, Object> variables = new HashMap<>();
142147
if (request.getParameter("variables") != null) {
@@ -160,7 +165,6 @@ public void init() {
160165
GraphQLInvocationInputFactory invocationInputFactory = configuration.getInvocationInputFactory();
161166
GraphQLObjectMapper graphQLObjectMapper = configuration.getObjectMapper();
162167
GraphQLQueryInvoker queryInvoker = configuration.getQueryInvoker();
163-
ContextSetting contextSetting = configuration.getContextSetting();
164168

165169
try {
166170
if (APPLICATION_GRAPHQL.equals(request.getContentType())) {
@@ -194,11 +198,9 @@ public void init() {
194198
List<GraphQLRequest> graphQLRequests =
195199
graphQLObjectMapper.readBatchedGraphQLRequest(inputStream);
196200
variablesMap.ifPresent(map -> graphQLRequests.forEach(r -> mapMultipartVariables(r, map, fileItems)));
197-
GraphQLBatchedInvocationInput invocationInput =
198-
invocationInputFactory.create(contextSetting, graphQLRequests, request, response);
199-
//TODO next line doesn't make sense anymore?
200-
//invocationInput.getContext().setParts(fileItems);
201-
queryInvoker.query(invocationInput, contextSetting, request, response, graphQLObjectMapper);
201+
GraphQLBatchedInvocationInput batchedInvocationInput = invocationInputFactory.create(configuration.getContextSetting(),
202+
graphQLRequests, request, response);
203+
queryBatched(queryInvoker, batchedInvocationInput, request, response, configuration);
202204
return;
203205
} else {
204206
GraphQLRequest graphQLRequest;
@@ -211,8 +213,6 @@ public void init() {
211213
variablesMap.ifPresent(m -> mapMultipartVariables(graphQLRequest, m, fileItems));
212214
GraphQLSingleInvocationInput invocationInput =
213215
invocationInputFactory.create(graphQLRequest, request, response);
214-
//TODO next part doesn't make sense
215-
//invocationInput.getContext().setParts(fileItems);
216216
query(queryInvoker, graphQLObjectMapper, invocationInput, Optional.of(request), response);
217217
return;
218218
}
@@ -225,9 +225,10 @@ public void init() {
225225
InputStream inputStream = asMarkableInputStream(request.getInputStream());
226226

227227
if (isBatchedQuery(inputStream)) {
228-
queryInvoker.query(invocationInputFactory.create(contextSetting,
229-
graphQLObjectMapper.readBatchedGraphQLRequest(inputStream), request, response), contextSetting, request, response,
230-
graphQLObjectMapper);
228+
List<GraphQLRequest> requests = graphQLObjectMapper.readBatchedGraphQLRequest(inputStream);
229+
GraphQLBatchedInvocationInput batchedInvocationInput =
230+
invocationInputFactory.create(configuration.getContextSetting(), requests, request, response);
231+
queryBatched(queryInvoker, batchedInvocationInput, request, response, configuration);
231232
} else {
232233
query(queryInvoker, graphQLObjectMapper, invocationInputFactory.create(graphQLObjectMapper.readGraphQLRequest(inputStream), request, response), Optional.of(request), response);
233234
}
@@ -385,6 +386,32 @@ private void query(GraphQLQueryInvoker queryInvoker, GraphQLObjectMapper graphQL
385386
}
386387
}
387388

389+
private void queryBatched(GraphQLQueryInvoker queryInvoker, GraphQLBatchedInvocationInput batchedInvocationInput, HttpServletRequest request,
390+
HttpServletResponse response, GraphQLConfiguration configuration) throws IOException {
391+
BatchInputPreProcessor batchInputPreProcessor = configuration.getBatchInputPreProcessor();
392+
ContextSetting contextSetting = configuration.getContextSetting();
393+
BatchInputPreProcessResult batchInputPreProcessResult = batchInputPreProcessor.preProcessBatch(batchedInvocationInput, request, response);
394+
if (batchInputPreProcessResult.isExecutable()) {
395+
List<ExecutionResult> results = queryInvoker.query(batchInputPreProcessResult.getBatchedInvocationInput().getExecutionInputs(),
396+
contextSetting);
397+
response.setContentType(AbstractGraphQLHttpServlet.APPLICATION_JSON_UTF8);
398+
response.setStatus(AbstractGraphQLHttpServlet.STATUS_OK);
399+
Writer writer = response.getWriter();
400+
Iterator<ExecutionResult> executionInputIterator = results.iterator();
401+
writer.write("[");
402+
GraphQLObjectMapper graphQLObjectMapper = configuration.getObjectMapper();
403+
while (executionInputIterator.hasNext()) {
404+
writer.write(graphQLObjectMapper.serializeResultAsJson(executionInputIterator.next()));
405+
if (executionInputIterator.hasNext()) {
406+
writer.write(",");
407+
}
408+
}
409+
writer.write("]");
410+
} else {
411+
response.sendError(batchInputPreProcessResult.getStatusCode(), batchInputPreProcessResult.getStatusMessage());
412+
}
413+
}
414+
388415
private <R> List<R> runListeners(Function<? super GraphQLServletListener, R> action) {
389416
return configuration.getListeners().stream()
390417
.map(listener -> {

src/main/java/graphql/servlet/core/ConfiguredGraphQLHttpServlet.java renamed to src/main/java/graphql/servlet/ConfiguredGraphQLHttpServlet.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
package graphql.servlet.core;
1+
package graphql.servlet;
2+
3+
import graphql.servlet.config.GraphQLConfiguration;
24

35
import java.util.Objects;
46

src/main/java/graphql/servlet/DefaultGraphQLServlet.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package graphql.servlet;
22

3-
import graphql.servlet.core.AbstractGraphQLHttpServlet;
3+
import graphql.servlet.core.GraphQLObjectMapper;
4+
import graphql.servlet.core.GraphQLQueryInvoker;
45
import graphql.servlet.input.GraphQLInvocationInputFactory;
56

67
public class DefaultGraphQLServlet extends AbstractGraphQLHttpServlet {

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

Lines changed: 0 additions & 122 deletions
This file was deleted.

src/main/java/graphql/servlet/core/GraphQLHttpServlet.java renamed to src/main/java/graphql/servlet/GraphQLHttpServlet.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
package graphql.servlet.core;
1+
package graphql.servlet;
22

33
import graphql.schema.GraphQLSchema;
4-
import graphql.servlet.GraphQLObjectMapper;
5-
import graphql.servlet.GraphQLQueryInvoker;
4+
import graphql.servlet.core.GraphQLObjectMapper;
5+
import graphql.servlet.core.GraphQLQueryInvoker;
6+
import graphql.servlet.config.GraphQLConfiguration;
67
import graphql.servlet.input.GraphQLInvocationInputFactory;
78

89
/**

src/main/java/graphql/servlet/core/GraphQLWebsocketServlet.java renamed to src/main/java/graphql/servlet/GraphQLWebsocketServlet.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package graphql.servlet.core;
1+
package graphql.servlet;
22

3-
import graphql.servlet.GraphQLObjectMapper;
4-
import graphql.servlet.GraphQLQueryInvoker;
5-
import graphql.servlet.SubscriptionConnectionListener;
3+
import graphql.servlet.core.GraphQLObjectMapper;
4+
import graphql.servlet.core.GraphQLQueryInvoker;
5+
import graphql.servlet.core.SubscriptionConnectionListener;
66
import graphql.servlet.input.GraphQLInvocationInputFactory;
7-
import graphql.servlet.internal.*;
7+
import graphql.servlet.core.internal.*;
88
import org.slf4j.Logger;
99
import org.slf4j.LoggerFactory;
1010

src/main/java/graphql/servlet/core/OsgiGraphQLHttpServlet.java renamed to src/main/java/graphql/servlet/OsgiGraphQLHttpServlet.java

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package graphql.servlet.core;
1+
package graphql.servlet;
22

33
import static graphql.schema.GraphQLObjectType.newObject;
44
import static graphql.schema.GraphQLSchema.newSchema;
@@ -12,27 +12,26 @@
1212
import java.util.concurrent.ScheduledFuture;
1313
import java.util.concurrent.TimeUnit;
1414

15-
import graphql.servlet.DefaultExecutionStrategyProvider;
16-
import graphql.servlet.DefaultGraphQLContextBuilder;
17-
import graphql.servlet.DefaultGraphQLErrorHandler;
18-
import graphql.servlet.DefaultGraphQLRootObjectBuilder;
19-
import graphql.servlet.DefaultGraphQLSchemaProvider;
20-
import graphql.servlet.ExecutionStrategyProvider;
21-
import graphql.servlet.GraphQLContextBuilder;
22-
import graphql.servlet.GraphQLErrorHandler;
23-
import graphql.servlet.GraphQLMutationProvider;
24-
import graphql.servlet.GraphQLObjectMapper;
25-
import graphql.servlet.GraphQLProvider;
26-
import graphql.servlet.GraphQLQueryInvoker;
27-
import graphql.servlet.GraphQLQueryProvider;
28-
import graphql.servlet.GraphQLRootObjectBuilder;
29-
import graphql.servlet.GraphQLSchemaProvider;
30-
import graphql.servlet.GraphQLServletListener;
31-
import graphql.servlet.GraphQLSubscriptionProvider;
32-
import graphql.servlet.GraphQLTypesProvider;
33-
import graphql.servlet.InstrumentationProvider;
34-
import graphql.servlet.NoOpInstrumentationProvider;
35-
import graphql.servlet.core.AbstractGraphQLHttpServlet;
15+
import graphql.servlet.config.DefaultExecutionStrategyProvider;
16+
import graphql.servlet.context.DefaultGraphQLContextBuilder;
17+
import graphql.servlet.core.DefaultGraphQLErrorHandler;
18+
import graphql.servlet.core.DefaultGraphQLRootObjectBuilder;
19+
import graphql.servlet.config.DefaultGraphQLSchemaProvider;
20+
import graphql.servlet.config.ExecutionStrategyProvider;
21+
import graphql.servlet.context.GraphQLContextBuilder;
22+
import graphql.servlet.core.GraphQLErrorHandler;
23+
import graphql.servlet.config.GraphQLMutationProvider;
24+
import graphql.servlet.core.GraphQLObjectMapper;
25+
import graphql.servlet.config.GraphQLProvider;
26+
import graphql.servlet.core.GraphQLQueryInvoker;
27+
import graphql.servlet.config.GraphQLQueryProvider;
28+
import graphql.servlet.core.GraphQLRootObjectBuilder;
29+
import graphql.servlet.config.GraphQLSchemaProvider;
30+
import graphql.servlet.core.GraphQLServletListener;
31+
import graphql.servlet.config.GraphQLSubscriptionProvider;
32+
import graphql.servlet.config.GraphQLTypesProvider;
33+
import graphql.servlet.config.InstrumentationProvider;
34+
import graphql.servlet.instrumentation.NoOpInstrumentationProvider;
3635
import graphql.servlet.input.GraphQLInvocationInputFactory;
3736
import org.osgi.service.component.annotations.Activate;
3837
import org.osgi.service.component.annotations.Component;

src/main/java/graphql/servlet/core/SimpleGraphQLHttpServlet.java renamed to src/main/java/graphql/servlet/SimpleGraphQLHttpServlet.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
package graphql.servlet.core;
1+
package graphql.servlet;
22

33
import graphql.schema.GraphQLSchema;
4-
import graphql.servlet.GraphQLObjectMapper;
5-
import graphql.servlet.GraphQLQueryInvoker;
6-
import graphql.servlet.GraphQLSchemaProvider;
7-
import graphql.servlet.GraphQLServletListener;
4+
import graphql.servlet.core.GraphQLObjectMapper;
5+
import graphql.servlet.core.GraphQLQueryInvoker;
6+
import graphql.servlet.config.GraphQLSchemaProvider;
7+
import graphql.servlet.core.GraphQLServletListener;
8+
import graphql.servlet.config.GraphQLConfiguration;
89
import graphql.servlet.input.GraphQLInvocationInputFactory;
910

1011
import java.util.ArrayList;

src/main/java/graphql/servlet/ConfiguringObjectMapperProvider.java renamed to src/main/java/graphql/servlet/config/ConfiguringObjectMapperProvider.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
package graphql.servlet;
1+
package graphql.servlet.config;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import graphql.servlet.config.ObjectMapperConfigurer;
5+
import graphql.servlet.config.ObjectMapperProvider;
6+
import graphql.servlet.core.DefaultObjectMapperConfigurer;
47

58
public class ConfiguringObjectMapperProvider implements ObjectMapperProvider {
69

0 commit comments

Comments
 (0)