Skip to content

Commit

Permalink
Renamed handler/factory to match intent
Browse files Browse the repository at this point in the history
  • Loading branch information
jmccaull committed Feb 25, 2019
1 parent 4fb82ff commit 240f81b
Show file tree
Hide file tree
Showing 13 changed files with 60 additions and 65 deletions.
16 changes: 8 additions & 8 deletions src/main/java/graphql/servlet/AbstractGraphQLHttpServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public abstract class AbstractGraphQLHttpServlet extends HttpServlet implements
* @deprecated override {@link #getConfiguration()} instead
*/
@Deprecated
protected abstract GraphQLExecutionResultHandlerFactory getBatchInputHandler();
protected abstract GraphQLBatchExecutionHandlerFactory getBatchExecutionHandlerFactory();

/**
* @deprecated override {@link #getConfiguration()} instead
Expand All @@ -91,7 +91,7 @@ protected GraphQLConfiguration getConfiguration() {
.with(getGraphQLObjectMapper())
.with(isAsyncServletMode())
.with(listeners)
.with(getBatchInputHandler())
.with(getBatchExecutionHandlerFactory())
.build();
}

Expand Down Expand Up @@ -120,7 +120,7 @@ public void init(ServletConfig servletConfig) {
GraphQLInvocationInputFactory invocationInputFactory = configuration.getInvocationInputFactory();
GraphQLObjectMapper graphQLObjectMapper = configuration.getObjectMapper();
GraphQLQueryInvoker queryInvoker = configuration.getQueryInvoker();
GraphQLExecutionResultHandlerFactory batchInputHandlerFactory = configuration.getBatchInputHandlerFactory();
GraphQLBatchExecutionHandlerFactory batchExecutionHandlerFactory = configuration.getBatchExecutionHandlerFactory();

String path = request.getPathInfo();
if (path == null) {
Expand All @@ -133,7 +133,7 @@ public void init(ServletConfig servletConfig) {
if (query != null) {

if (isBatchedQuery(query)) {
queryBatched(batchInputHandlerFactory, queryInvoker, graphQLObjectMapper, invocationInputFactory.createReadOnly(graphQLObjectMapper.readBatchedGraphQLRequest(query), request, response), response);
queryBatched(batchExecutionHandlerFactory, queryInvoker, graphQLObjectMapper, invocationInputFactory.createReadOnly(graphQLObjectMapper.readBatchedGraphQLRequest(query), request, response), response);
} else {
final Map<String, Object> variables = new HashMap<>();
if (request.getParameter("variables") != null) {
Expand All @@ -155,7 +155,7 @@ public void init(ServletConfig servletConfig) {
GraphQLInvocationInputFactory invocationInputFactory = configuration.getInvocationInputFactory();
GraphQLObjectMapper graphQLObjectMapper = configuration.getObjectMapper();
GraphQLQueryInvoker queryInvoker = configuration.getQueryInvoker();
GraphQLExecutionResultHandlerFactory batchInputHandlerFactory = configuration.getBatchInputHandlerFactory();
GraphQLBatchExecutionHandlerFactory batchExecutionHandlerFactory = configuration.getBatchExecutionHandlerFactory();

try {
if (APPLICATION_GRAPHQL.equals(request.getContentType())) {
Expand Down Expand Up @@ -190,7 +190,7 @@ public void init(ServletConfig servletConfig) {
GraphQLBatchedInvocationInput invocationInput =
invocationInputFactory.create(graphQLRequests, request, response);
invocationInput.getContext().setParts(fileItems);
queryBatched(batchInputHandlerFactory, queryInvoker, graphQLObjectMapper, invocationInput, response);
queryBatched(batchExecutionHandlerFactory, queryInvoker, graphQLObjectMapper, invocationInput, response);
return;
} else {
GraphQLRequest graphQLRequest;
Expand All @@ -216,7 +216,7 @@ public void init(ServletConfig servletConfig) {
InputStream inputStream = asMarkableInputStream(request.getInputStream());

if (isBatchedQuery(inputStream)) {
queryBatched(batchInputHandlerFactory, queryInvoker, graphQLObjectMapper, invocationInputFactory.create(graphQLObjectMapper.readBatchedGraphQLRequest(inputStream), request, response), response);
queryBatched(batchExecutionHandlerFactory, queryInvoker, graphQLObjectMapper, invocationInputFactory.create(graphQLObjectMapper.readBatchedGraphQLRequest(inputStream), request, response), response);
} else {
query(queryInvoker, graphQLObjectMapper, invocationInputFactory.create(graphQLObjectMapper.readGraphQLRequest(inputStream), request, response), response);
}
Expand Down Expand Up @@ -373,7 +373,7 @@ private void query(GraphQLQueryInvoker queryInvoker, GraphQLObjectMapper graphQL
}
}

private void queryBatched(GraphQLExecutionResultHandlerFactory batchInputHandlerFactory, GraphQLQueryInvoker queryInvoker, GraphQLObjectMapper graphQLObjectMapper, GraphQLBatchedInvocationInput invocationInput, HttpServletResponse resp) throws Exception {
private void queryBatched(GraphQLBatchExecutionHandlerFactory batchInputHandlerFactory, GraphQLQueryInvoker queryInvoker, GraphQLObjectMapper graphQLObjectMapper, GraphQLBatchedInvocationInput invocationInput, HttpServletResponse resp) throws Exception {
resp.setContentType(APPLICATION_JSON_UTF8);
resp.setStatus(STATUS_OK);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
/**
* @author Andrew Potter
*/
public interface ExecutionResultHandler {
public interface BatchExecutionHandler {
/**
* Allows separating the logic of handling batch queries from how each individual query is resolved.
* @param batchedInvocationInput the batch query input
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@
import java.util.Iterator;
import java.util.function.BiFunction;

public class DefaultGraphQLExecutionResultHandlerFactory implements GraphQLExecutionResultHandlerFactory {
public class DefaultGraphQLBatchExecutionHandlerFactory implements GraphQLBatchExecutionHandlerFactory {
@Override
public ExecutionResultHandler getBatchHandler(Writer respWriter, GraphQLObjectMapper graphQLObjectMapper) {
return new DefaultGraphQLExecutionResultHandler(respWriter, graphQLObjectMapper);
public BatchExecutionHandler getBatchHandler(Writer respWriter, GraphQLObjectMapper graphQLObjectMapper) {
return new DefaultGraphQLBatchExecutionHandler(respWriter, graphQLObjectMapper);
}

private class DefaultGraphQLExecutionResultHandler implements ExecutionResultHandler {
private class DefaultGraphQLBatchExecutionHandler implements BatchExecutionHandler {

private final Writer respWriter;

private final GraphQLObjectMapper graphQLObjectMapper;

private DefaultGraphQLExecutionResultHandler(Writer respWriter, GraphQLObjectMapper graphQLObjectMapper) {
private DefaultGraphQLBatchExecutionHandler(Writer respWriter, GraphQLObjectMapper graphQLObjectMapper) {
this.respWriter = respWriter;
this.graphQLObjectMapper = graphQLObjectMapper;
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/graphql/servlet/DefaultGraphQLServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ protected GraphQLObjectMapper getGraphQLObjectMapper() {
}

@Override
protected GraphQLExecutionResultHandlerFactory getBatchInputHandler() {
protected GraphQLBatchExecutionHandlerFactory getBatchExecutionHandlerFactory() {
return null;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package graphql.servlet;

import java.io.Writer;

/**
* Interface to allow customization of how batched queries are handled.
*/
public interface GraphQLBatchExecutionHandlerFactory {
/**
* Produces an BatchExecutionHandler instance for a specific response. Can maintain state across each request within a batch.
* @param respWriter to send the response back
* @param graphQLObjectMapper to serialize results.
* @return a handler instance
*/
BatchExecutionHandler getBatchHandler(Writer respWriter, GraphQLObjectMapper graphQLObjectMapper);
}
20 changes: 10 additions & 10 deletions src/main/java/graphql/servlet/GraphQLConfiguration.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class GraphQLConfiguration {
private GraphQLInvocationInputFactory invocationInputFactory;
private GraphQLQueryInvoker queryInvoker;
private GraphQLObjectMapper objectMapper;
private GraphQLExecutionResultHandlerFactory batchInputHandlerFactory;
private GraphQLBatchExecutionHandlerFactory batchExecutionHandlerFactory;
private List<GraphQLServletListener> listeners;
private boolean asyncServletModeEnabled;
private Executor asyncExecutor;
Expand All @@ -31,11 +31,11 @@ public static GraphQLConfiguration.Builder with(GraphQLInvocationInputFactory in
return new Builder(invocationInputFactory);
}

private GraphQLConfiguration(GraphQLInvocationInputFactory invocationInputFactory, GraphQLQueryInvoker queryInvoker, GraphQLObjectMapper objectMapper, GraphQLExecutionResultHandlerFactory batchInputHandlerFactory, List<GraphQLServletListener> listeners, boolean asyncServletModeEnabled, Executor asyncExecutor, long subscriptionTimeout) {
private GraphQLConfiguration(GraphQLInvocationInputFactory invocationInputFactory, GraphQLQueryInvoker queryInvoker, GraphQLObjectMapper objectMapper, GraphQLBatchExecutionHandlerFactory batchExecutionHandlerFactory, List<GraphQLServletListener> listeners, boolean asyncServletModeEnabled, Executor asyncExecutor, long subscriptionTimeout) {
this.invocationInputFactory = invocationInputFactory;
this.queryInvoker = queryInvoker;
this.objectMapper = objectMapper;
this.batchInputHandlerFactory = batchInputHandlerFactory;
this.batchExecutionHandlerFactory = batchExecutionHandlerFactory;
this.listeners = listeners;
this.asyncServletModeEnabled = asyncServletModeEnabled;
this.asyncExecutor = asyncExecutor;
Expand All @@ -54,8 +54,8 @@ public GraphQLObjectMapper getObjectMapper() {
return objectMapper;
}

public GraphQLExecutionResultHandlerFactory getBatchInputHandlerFactory() {
return batchInputHandlerFactory;
public GraphQLBatchExecutionHandlerFactory getBatchExecutionHandlerFactory() {
return batchExecutionHandlerFactory;
}

public List<GraphQLServletListener> getListeners() {
Expand Down Expand Up @@ -88,7 +88,7 @@ public static class Builder {
private GraphQLInvocationInputFactory invocationInputFactory;
private GraphQLQueryInvoker queryInvoker = GraphQLQueryInvoker.newBuilder().build();
private GraphQLObjectMapper objectMapper = GraphQLObjectMapper.newBuilder().build();
private GraphQLExecutionResultHandlerFactory batchInputHandler = new DefaultGraphQLExecutionResultHandlerFactory();
private GraphQLBatchExecutionHandlerFactory graphQLBatchExecutionHandlerFactory = new DefaultGraphQLBatchExecutionHandlerFactory();
private List<GraphQLServletListener> listeners = new ArrayList<>();
private boolean asyncServletModeEnabled = false;
private Executor asyncExecutor = Executors.newCachedThreadPool(new GraphQLThreadFactory());
Expand Down Expand Up @@ -116,9 +116,9 @@ public Builder with(GraphQLObjectMapper objectMapper) {
return this;
}

public Builder with(GraphQLExecutionResultHandlerFactory batchInputHandlerFactory) {
if (batchInputHandlerFactory != null) {
this.batchInputHandler = batchInputHandlerFactory;
public Builder with(GraphQLBatchExecutionHandlerFactory batchExecutionHandlerFactory) {
if (batchExecutionHandlerFactory != null) {
this.graphQLBatchExecutionHandlerFactory = batchExecutionHandlerFactory;
}
return this;
}
Expand Down Expand Up @@ -162,7 +162,7 @@ public GraphQLConfiguration build() {
this.invocationInputFactory != null ? this.invocationInputFactory : invocationInputFactoryBuilder.build(),
queryInvoker,
objectMapper,
batchInputHandler,
graphQLBatchExecutionHandlerFactory,
listeners,
asyncServletModeEnabled,
asyncExecutor,
Expand Down

This file was deleted.

6 changes: 1 addition & 5 deletions src/main/java/graphql/servlet/GraphQLHttpServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@

import graphql.schema.GraphQLSchema;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
* @author Michiel Oliemans
*/
Expand Down Expand Up @@ -38,7 +34,7 @@ protected GraphQLObjectMapper getGraphQLObjectMapper() {
}

@Override
protected GraphQLExecutionResultHandlerFactory getBatchInputHandler() {
protected GraphQLBatchExecutionHandlerFactory getBatchExecutionHandlerFactory() {
throw new UnsupportedOperationException();
}

Expand Down
5 changes: 2 additions & 3 deletions src/main/java/graphql/servlet/GraphQLQueryInvoker.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Supplier;

Expand All @@ -41,8 +40,8 @@ public ExecutionResult query(GraphQLSingleInvocationInput singleInvocationInput)
return query(singleInvocationInput, singleInvocationInput.getExecutionInput());
}

public void query(GraphQLBatchedInvocationInput batchedInvocationInput, ExecutionResultHandler executionResultHandler) {
executionResultHandler.handleBatch(batchedInvocationInput, this::query);
public void query(GraphQLBatchedInvocationInput batchedInvocationInput, BatchExecutionHandler batchExecutionHandler) {
batchExecutionHandler.handleBatch(batchedInvocationInput, this::query);
}

private GraphQL newGraphQL(GraphQLSchema schema, Object context) {
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/graphql/servlet/OsgiGraphQLHttpServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public class OsgiGraphQLHttpServlet extends AbstractGraphQLHttpServlet {
private InstrumentationProvider instrumentationProvider = new NoOpInstrumentationProvider();
private GraphQLErrorHandler errorHandler = new DefaultGraphQLErrorHandler();
private PreparsedDocumentProvider preparsedDocumentProvider = NoOpPreparsedDocumentProvider.INSTANCE;
private GraphQLExecutionResultHandlerFactory executionResultHandlerFactory = new DefaultGraphQLExecutionResultHandlerFactory();
private GraphQLBatchExecutionHandlerFactory executionResultHandlerFactory = new DefaultGraphQLBatchExecutionHandlerFactory();

private GraphQLSchemaProvider schemaProvider;

Expand Down Expand Up @@ -86,7 +86,7 @@ protected GraphQLObjectMapper getGraphQLObjectMapper() {
}

@Override
protected GraphQLExecutionResultHandlerFactory getBatchInputHandler() {
protected GraphQLBatchExecutionHandlerFactory getBatchExecutionHandlerFactory() {
return executionResultHandlerFactory;
}

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/graphql/servlet/SimpleGraphQLHttpServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ protected GraphQLObjectMapper getGraphQLObjectMapper() {
}

@Override
protected GraphQLExecutionResultHandlerFactory getBatchInputHandler() {
return configuration.getBatchInputHandlerFactory();
protected GraphQLBatchExecutionHandlerFactory getBatchExecutionHandlerFactory() {
return configuration.getBatchExecutionHandlerFactory();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@
import java.util.function.BiFunction;
import java.util.stream.Collectors;

public class TestBatchInputHandlerFactory implements GraphQLExecutionResultHandlerFactory {
public class TestBatchExecutionHandlerFactoryBatch implements GraphQLBatchExecutionHandlerFactory {
@Override
public ExecutionResultHandler getBatchHandler(Writer respWriter, GraphQLObjectMapper graphQLObjectMapper) {
return new LimitedBatchSizeHandler(respWriter, graphQLObjectMapper);
public BatchExecutionHandler getBatchHandler(Writer respWriter, GraphQLObjectMapper graphQLObjectMapper) {
return new LimitedBatchSizeHandlerBatch(respWriter, graphQLObjectMapper);
}

private class LimitedBatchSizeHandler implements ExecutionResultHandler {
private class LimitedBatchSizeHandlerBatch implements BatchExecutionHandler {

Writer writer;
GraphQLObjectMapper mapper;

private LimitedBatchSizeHandler(Writer respWriter, GraphQLObjectMapper graphQLObjectMapper) {
private LimitedBatchSizeHandlerBatch(Writer respWriter, GraphQLObjectMapper graphQLObjectMapper) {
this.mapper = graphQLObjectMapper;
this.writer = respWriter;
}
Expand Down
14 changes: 7 additions & 7 deletions src/test/groovy/graphql/servlet/TestUtils.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class TestUtils {
}))
return publisherRef.get()
}, boolean asyncServletModeEnabled = false) {
GraphQLExecutionResultHandlerFactory defaultHandler = new DefaultGraphQLExecutionResultHandlerFactory();
GraphQLBatchExecutionHandlerFactory defaultHandler = new DefaultGraphQLBatchExecutionHandlerFactory();
createServlet(queryDataFetcher, mutationDataFetcher, subscriptionDataFetcher, asyncServletModeEnabled, defaultHandler)
}

Expand All @@ -34,20 +34,20 @@ class TestUtils {
}))
return publisherRef.get()
}, boolean asyncServletModeEnabled = false) {
createServlet(queryDataFetcher, mutationDataFetcher, subscriptionDataFetcher, asyncServletModeEnabled, createBatchInputHandlerFactory())
createServlet(queryDataFetcher, mutationDataFetcher, subscriptionDataFetcher, asyncServletModeEnabled, createBatchExecutionHandlerFactory())
}

private static def createServlet(DataFetcher queryDataFetcher = { env -> env.arguments.arg },
DataFetcher mutationDataFetcher = { env -> env.arguments.arg },
DataFetcher subscriptionDataFetcher = { env ->
DataFetcher mutationDataFetcher = { env -> env.arguments.arg },
DataFetcher subscriptionDataFetcher = { env ->
AtomicReference<SingleSubscriberPublisher<String>> publisherRef = new AtomicReference<>();
publisherRef.set(new SingleSubscriberPublisher<>({ subscription ->
publisherRef.get().offer(env.arguments.arg)
publisherRef.get().noMoreData()
}))
return publisherRef.get()
}, boolean asyncServletModeEnabled = false,
GraphQLExecutionResultHandlerFactory batchHandlerFactory) {
GraphQLBatchExecutionHandlerFactory batchHandlerFactory) {
GraphQLHttpServlet servlet = GraphQLHttpServlet.with(GraphQLConfiguration
.with(createGraphQlSchema(queryDataFetcher, mutationDataFetcher, subscriptionDataFetcher))
.with(createInstrumentedQueryInvoker())
Expand All @@ -63,8 +63,8 @@ class TestUtils {
GraphQLQueryInvoker.newBuilder().with([instrumentation]).build()
}

static def createBatchInputHandlerFactory() {
new TestBatchInputHandlerFactory()
static def createBatchExecutionHandlerFactory() {
new TestBatchExecutionHandlerFactoryBatch()
}

static def createGraphQlSchema(DataFetcher queryDataFetcher = { env -> env.arguments.arg },
Expand Down

0 comments on commit 240f81b

Please sign in to comment.