Class GraphQLHandler

java.lang.Object
io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
io.evitadb.externalApi.graphql.io.GraphQLHandler
All Implemented Interfaces:
com.linecorp.armeria.common.util.Unwrappable, com.linecorp.armeria.server.HttpService, com.linecorp.armeria.server.Service<com.linecorp.armeria.common.HttpRequest,com.linecorp.armeria.common.HttpResponse>

public class GraphQLHandler extends io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
HTTP request handler for processing GraphQLRequests and returning GraphQLResponses using passed configured instance of GraphQL.
Author:
Lukáš Hornych, FG Forrest a.s. 2022
  • Constructor Summary

    Constructors
    Constructor
    Description
    GraphQLHandler(Evita evita, io.evitadb.externalApi.configuration.HeaderOptions headers, com.fasterxml.jackson.databind.ObjectMapper objectMapper, GraphQLInstanceType instanceType, AtomicReference<graphql.GraphQL> graphQL)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext
    createExecutionContext(com.linecorp.armeria.common.HttpRequest httpRequest)
     
    protected <T extends io.evitadb.externalApi.exception.ExternalApiInternalError>
    T
     
    protected <T extends io.evitadb.externalApi.exception.ExternalApiInternalError>
    T
     
    protected <T extends io.evitadb.externalApi.exception.ExternalApiInvalidUsageException>
    T
     
    protected CompletableFuture<io.evitadb.externalApi.http.EndpointResponse>
    doHandleRequest(io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext executionContext)
     
    Set<com.linecorp.armeria.common.HttpMethod>
     
     
     
    protected <T> CompletableFuture<T>
    parseRequestBody(io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext executionContext, Class<T> dataClass)
     
    com.linecorp.armeria.common.HttpResponse
    serve(com.linecorp.armeria.server.ServiceRequestContext ctx, com.linecorp.armeria.common.HttpRequest req)
     
    protected void
    writeResponse(io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext executionContext, com.linecorp.armeria.common.HttpResponseWriter responseWriter, Object response, io.netty.channel.EventLoop eventExecutors)
     

    Methods inherited from class io.evitadb.externalApi.http.EndpointHandler

    afterRequestHandled, beforeRequestHandled, readRawRequestBody, validateRequest

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface com.linecorp.armeria.server.HttpService

    decorate, decorate, exchangeType, options

    Methods inherited from interface com.linecorp.armeria.server.Service

    as, serviceAdded, shouldCachePath, unwrap

    Methods inherited from interface com.linecorp.armeria.common.util.Unwrappable

    equalsIgnoreWrapper, unwrapAll
  • Constructor Details

    • GraphQLHandler

      public GraphQLHandler(@Nonnull Evita evita, @Nonnull io.evitadb.externalApi.configuration.HeaderOptions headers, @Nonnull com.fasterxml.jackson.databind.ObjectMapper objectMapper, @Nonnull GraphQLInstanceType instanceType, @Nonnull AtomicReference<graphql.GraphQL> graphQL)
  • Method Details

    • serve

      @Nonnull public com.linecorp.armeria.common.HttpResponse serve(@Nonnull com.linecorp.armeria.server.ServiceRequestContext ctx, @Nonnull com.linecorp.armeria.common.HttpRequest req)
      Specified by:
      serve in interface com.linecorp.armeria.server.HttpService
      Specified by:
      serve in interface com.linecorp.armeria.server.Service<com.linecorp.armeria.common.HttpRequest,com.linecorp.armeria.common.HttpResponse>
      Overrides:
      serve in class io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
    • createExecutionContext

      @Nonnull protected io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext createExecutionContext(@Nonnull com.linecorp.armeria.common.HttpRequest httpRequest)
      Specified by:
      createExecutionContext in class io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
    • doHandleRequest

      @Nonnull protected CompletableFuture<io.evitadb.externalApi.http.EndpointResponse> doHandleRequest(@Nonnull io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext executionContext)
      Specified by:
      doHandleRequest in class io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
    • createInternalError

      @Nonnull protected <T extends io.evitadb.externalApi.exception.ExternalApiInternalError> T createInternalError(@Nonnull String message)
      Specified by:
      createInternalError in class io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
    • createInternalError

      @Nonnull protected <T extends io.evitadb.externalApi.exception.ExternalApiInternalError> T createInternalError(@Nonnull String message, @Nonnull Throwable cause)
      Specified by:
      createInternalError in class io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
    • createInvalidUsageException

      @Nonnull protected <T extends io.evitadb.externalApi.exception.ExternalApiInvalidUsageException> T createInvalidUsageException(@Nonnull String message)
      Specified by:
      createInvalidUsageException in class io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
    • getSupportedHttpMethods

      @Nonnull public Set<com.linecorp.armeria.common.HttpMethod> getSupportedHttpMethods()
      Specified by:
      getSupportedHttpMethods in class io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
    • getSupportedRequestContentTypes

      @Nonnull public Set<String> getSupportedRequestContentTypes()
      Overrides:
      getSupportedRequestContentTypes in class io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
    • getSupportedResponseContentTypes

      @Nonnull public LinkedHashSet<String> getSupportedResponseContentTypes()
      Overrides:
      getSupportedResponseContentTypes in class io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
    • parseRequestBody

      @Nonnull protected <T> CompletableFuture<T> parseRequestBody(@Nonnull io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext executionContext, @Nonnull Class<T> dataClass)
      Overrides:
      parseRequestBody in class io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>
    • writeResponse

      protected void writeResponse(@Nonnull io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext executionContext, @Nonnull com.linecorp.armeria.common.HttpResponseWriter responseWriter, @Nonnull Object response, @Nonnull io.netty.channel.EventLoop eventExecutors)
      Overrides:
      writeResponse in class io.evitadb.externalApi.http.EndpointHandler<io.evitadb.externalApi.graphql.io.GraphQLEndpointExecutionContext>