diff --git a/src/main/java/graphql/servlet/GraphQLServlet.java b/src/main/java/graphql/servlet/GraphQLServlet.java index e5e79da0..fe386e8d 100644 --- a/src/main/java/graphql/servlet/GraphQLServlet.java +++ b/src/main/java/graphql/servlet/GraphQLServlet.java @@ -92,7 +92,7 @@ public GraphQLServlet(List operationListeners, List { - GraphQLContext context = createContext(Optional.of(request), Optional.of(response)); + final GraphQLContext context = createContext(Optional.of(request), Optional.of(response)); String path = request.getPathInfo(); if (path == null) { path = request.getServletPath(); @@ -101,7 +101,7 @@ public GraphQLServlet(List operationListeners, List(), getSchema(), request, response, context); } else { if (request.getParameter("query") != null) { - Map variables = new HashMap<>(); + final Map variables = new HashMap<>(); if (request.getParameter("variables") != null) { variables.putAll(mapper.readValue(request.getParameter("variables"), new TypeReference>() { })); } @@ -118,43 +118,43 @@ public GraphQLServlet(List operationListeners, List { - GraphQLContext context = createContext(Optional.of(request), Optional.of(response)); + final GraphQLContext context = createContext(Optional.of(request), Optional.of(response)); GraphQLRequest graphQLRequest = null; try { InputStream inputStream = null; if (ServletFileUpload.isMultipartContent(request)) { - Map> fileItems = fileUpload.parseParameterMap(request); + final Map> fileItems = fileUpload.parseParameterMap(request); if (fileItems.containsKey("graphql")) { - Optional graphqlItem = getFileItem(fileItems, "graphql"); - if(graphqlItem.isPresent()) { + final Optional graphqlItem = getFileItem(fileItems, "graphql"); + if (graphqlItem.isPresent()) { inputStream = graphqlItem.get().getInputStream(); } - } else if(fileItems.containsKey("query")) { - Optional queryItem = getFileItem(fileItems, "query"); - if(queryItem.isPresent()) { + } else if (fileItems.containsKey("query")) { + final Optional queryItem = getFileItem(fileItems, "query"); + if (queryItem.isPresent()) { graphQLRequest = new GraphQLRequest(); graphQLRequest.setQuery(new String(queryItem.get().get())); - Optional operationNameItem = getFileItem(fileItems, "operationName"); - if(operationNameItem.isPresent()) { + final Optional operationNameItem = getFileItem(fileItems, "operationName"); + if (operationNameItem.isPresent()) { graphQLRequest.setOperationName(new String(operationNameItem.get().get()).trim()); } - Optional variablesItem = getFileItem(fileItems, "variables"); - if(variablesItem.isPresent()) { + final Optional variablesItem = getFileItem(fileItems, "variables"); + if (variablesItem.isPresent()) { String variables = new String(variablesItem.get().get()); - if(!variables.isEmpty()) { + if (!variables.isEmpty()) { graphQLRequest.setVariables((Map) mapper.readValue(variables, Map.class)); } } } } - if(inputStream == null && graphQLRequest == null) { + if (inputStream == null && graphQLRequest == null) { response.setStatus(STATUS_BAD_REQUEST); log.info("Bad POST multipart request: no part named \"graphql\" or \"query\""); return; @@ -167,7 +167,7 @@ public GraphQLServlet(List operationListeners, List()); + final ExecutionResult result = new GraphQL(getSchema()).execute(query, createContext(Optional.empty(), Optional.empty()), new HashMap<>()); return mapper.writeValueAsString(createResultFromDataAndErrors(result.getData(), result.getErrors())); } catch (Exception e) { return e.getMessage(); @@ -268,11 +268,11 @@ public Void run() { } else { runListeners(operationListeners, l -> runListener(l, it -> it.beforeGraphQLOperation(context, operationName, query, variables))); - ExecutionResult executionResult = new GraphQL(schema, getExecutionStrategy()).execute(query, operationName, context, transformVariables(schema, query, variables)); - List errors = executionResult.getErrors(); - Object data = executionResult.getData(); + final ExecutionResult executionResult = new GraphQL(schema, getExecutionStrategy()).execute(query, operationName, context, transformVariables(schema, query, variables)); + final List errors = executionResult.getErrors(); + final Object data = executionResult.getData(); - String response = mapper.writeValueAsString(createResultFromDataAndErrors(data, errors)); + final String response = mapper.writeValueAsString(createResultFromDataAndErrors(data, errors)); resp.setContentType(APPLICATION_JSON_UTF8); resp.setStatus(STATUS_OK); @@ -288,12 +288,12 @@ public Void run() { private Map createResultFromDataAndErrors(Object data, List errors) { - Map result = new HashMap<>(); + final Map result = new HashMap<>(); result.put("data", data); if (errorsPresent(errors)) { - List clientErrors = filterGraphQLErrors(errors); - if(clientErrors.size() < errors.size()) { + final List clientErrors = filterGraphQLErrors(errors); + if (clientErrors.size() < errors.size()) { // Some errors were filtered out to hide implementation - put a generic error in place. clientErrors.add(new GenericGraphQLError("Internal Server Error(s) while executing query")); } @@ -314,7 +314,7 @@ protected List filterGraphQLErrors(List errors) { } private void runListeners(List listeners, Consumer action) { - if(listeners != null) { + if (listeners != null) { listeners.forEach(l -> runListener(l, action)); } } @@ -333,7 +333,7 @@ private void runListener(T listener, Consumer action) { protected static class VariablesDeserializer extends JsonDeserializer> { @Override public Map deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { - Object o = p.readValueAs(Object.class); + final Object o = p.readValueAs(Object.class); if (o instanceof Map) { return (Map) o; } else if (o instanceof String) { diff --git a/src/main/java/graphql/servlet/OsgiGraphQLServlet.java b/src/main/java/graphql/servlet/OsgiGraphQLServlet.java index 85063e7e..8939c967 100644 --- a/src/main/java/graphql/servlet/OsgiGraphQLServlet.java +++ b/src/main/java/graphql/servlet/OsgiGraphQLServlet.java @@ -44,25 +44,28 @@ ) public class OsgiGraphQLServlet extends GraphQLServlet { - private List queryProviders = new ArrayList<>(); - private List mutationProviders = new ArrayList<>(); - private List typesProviders = new ArrayList<>(); + private final List queryProviders = new ArrayList<>(); + private final List mutationProviders = new ArrayList<>(); + private final List typesProviders = new ArrayList<>(); + private GraphQLContextBuilder contextBuilder = new DefaultGraphQLContextBuilder(); + private ExecutionStrategyProvider executionStrategyProvider = new EnhancedExecutionStrategyProvider(); + private GraphQLSchema schema; private GraphQLSchema readOnlySchema; protected void updateSchema() { - GraphQLObjectType.Builder object = newObject().name("Query").description("Root query type"); + final GraphQLObjectType.Builder object = newObject().name("Query").description("Root query type"); for (GraphQLQueryProvider provider : queryProviders) { - if (provider.getQueries() != null && provider.getQueries().size() > 0) { + if (provider.getQueries() != null && !provider.getQueries().isEmpty()) { for (GraphQLFieldDefinition graphQLFieldDefinition : provider.getQueries()) { object.field(graphQLFieldDefinition); } } } - Set types = new HashSet<>(); + final Set types = new HashSet<>(); for (GraphQLTypesProvider typesProvider : typesProviders) { types.addAll(typesProvider.getTypes()); } @@ -72,14 +75,14 @@ protected void updateSchema() { if (mutationProviders.isEmpty()) { schema = readOnlySchema; } else { - GraphQLObjectType.Builder mutationObject = newObject().name("Mutation").description("Root mutation type"); + final GraphQLObjectType.Builder mutationObject = newObject().name("Mutation").description("Root mutation type"); for (GraphQLMutationProvider provider : mutationProviders) { provider.getMutations().forEach(mutationObject::field); } - GraphQLObjectType mutationType = mutationObject.build(); - if (mutationType.getFieldDefinitions().size() == 0) { + final GraphQLObjectType mutationType = mutationObject.build(); + if (mutationType.getFieldDefinitions().isEmpty()) { schema = readOnlySchema; } else { schema = newSchema().query(object.build()).mutation(mutationType).build(); @@ -121,9 +124,6 @@ public void unbindTypesProvider(GraphQLTypesProvider typesProvider) { updateSchema(); } - private GraphQLContextBuilder contextBuilder = new DefaultGraphQLContextBuilder(); - private ExecutionStrategyProvider executionStrategyProvider = new EnhancedExecutionStrategyProvider(); - @Reference(cardinality = ReferenceCardinality.OPTIONAL, policyOption = ReferencePolicyOption.GREEDY) public void setContextProvider(GraphQLContextBuilder contextBuilder) { this.contextBuilder = contextBuilder;