Class QueryExecutorImpl
java.lang.Object
com.graphql_java_generator.client.QueryExecutorImpl
- All Implemented Interfaces:
QueryExecutor
public class QueryExecutorImpl extends java.lang.Object implements QueryExecutor
This class is the query executor : a generic class, reponsible for calling the GraphQL server, for query, mutation
and subscription.
It has one major parameter: the GraphQL endpoint. See the
It has one major parameter: the GraphQL endpoint. See the
QueryExecutorImpl(String)
for more information.- Author:
- etienne-sf
-
Field Summary
Fields inherited from interface com.graphql_java_generator.client.QueryExecutor
GRAPHQL_MARKER, GRAPHQL_MUTATION_MARKER, GRAPHQL_QUERY_MARKER, GRAPHQL_SUBSCRIPTION_MARKER
-
Constructor Summary
Constructors Constructor Description QueryExecutorImpl(java.lang.String graphqlEndpoint)
This constructor expects the URI of the GraphQL server
For example: http://my.server.com/graphql or https://my.server.com/graphqlQueryExecutorImpl(java.lang.String graphqlEndpoint, javax.net.ssl.SSLContext sslContext, javax.net.ssl.HostnameVerifier hostnameVerifier)
This constructor expects the URI of the GraphQL server.QueryExecutorImpl(java.lang.String graphqlEndpoint, javax.ws.rs.client.Client client, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
This constructor expects the URI of the GraphQL server and a configured JAX-RS client that gives the opportunity to customise the REST request
For example: http://my.server.com/graphql -
Method Summary
Modifier and Type Method Description <R, T> SubscriptionClient
execute(AbstractGraphQLRequest graphQLRequest, java.util.Map<java.lang.String,java.lang.Object> parameters, SubscriptionCallback<T> subscriptionCallback, java.lang.String subscriptionName, java.lang.Class<R> subscriptionType, java.lang.Class<T> messageType)
Executes the given subscription GraphQL request, and returns the relevantWebSocketClient
.<R> R
execute(AbstractGraphQLRequest graphQLRequest, java.util.Map<java.lang.String,java.lang.Object> parameters, java.lang.Class<R> dataResponseType)
Execution of the given query or mutation GraphQL request, and return its response mapped in the relevant POJO.
-
Constructor Details
-
QueryExecutorImpl
public QueryExecutorImpl(java.lang.String graphqlEndpoint)This constructor expects the URI of the GraphQL server
For example: http://my.server.com/graphql or https://my.server.com/graphql- Parameters:
graphqlEndpoint
- the http URI for the GraphQL endpoint
-
QueryExecutorImpl
public QueryExecutorImpl(java.lang.String graphqlEndpoint, javax.net.ssl.SSLContext sslContext, javax.net.ssl.HostnameVerifier hostnameVerifier)This constructor expects the URI of the GraphQL server. This constructor works only for https servers, not for http ones.
For example: https://my.server.com/graphql
It allows to specify the SSLContext and the HostnameVerifier. It is used in the integration test... to remove most of the control on https protocol, and allow connection to an https with a self-signed certificate.- Parameters:
graphqlEndpoint
- the https URI for the GraphQL endpointsslContext
-hostnameVerifier
-
-
QueryExecutorImpl
public QueryExecutorImpl(java.lang.String graphqlEndpoint, javax.ws.rs.client.Client client, com.fasterxml.jackson.databind.ObjectMapper objectMapper)This constructor expects the URI of the GraphQL server and a configured JAX-RS client that gives the opportunity to customise the REST request
For example: http://my.server.com/graphql- Parameters:
graphqlEndpoint
- the http URI for the GraphQL endpointclient
-Client
javax.ws.rs.client.Client to support customization of the rest requestobjectMapper
-ObjectMapper
com.fasterxml.jackson.databind.ObjectMapper to support configurable mapping
-
-
Method Details
-
execute
public <R> R execute(AbstractGraphQLRequest graphQLRequest, java.util.Map<java.lang.String,java.lang.Object> parameters, java.lang.Class<R> dataResponseType) throws GraphQLRequestExecutionExceptionExecution of the given query or mutation GraphQL request, and return its response mapped in the relevant POJO. This method executes a partial GraphQL query, or a full GraphQL request.- Specified by:
execute
in interfaceQueryExecutor
- Type Parameters:
R
- The class that is generated from the query or the mutation definition in the GraphQL schema- Parameters:
graphQLRequest
- Defines what response is expected from the server.parameters
- the input parameters for this query. If the query has no parameters, it may be null or an empty list.dataResponseType
- The class generated for the query or the mutation type. The data tag of the GraphQL server response will be mapped into an instance of this class.- Returns:
- The response mapped to the code, generated from the GraphQl server. Or a wrapper for composite responses.
- Throws:
GraphQLRequestExecutionException
- When an error occurs during the request execution, typically a network error, an error from the GraphQL server or if the server response can't be parsed
-
execute
public <R, T> SubscriptionClient execute(AbstractGraphQLRequest graphQLRequest, java.util.Map<java.lang.String,java.lang.Object> parameters, SubscriptionCallback<T> subscriptionCallback, java.lang.String subscriptionName, java.lang.Class<R> subscriptionType, java.lang.Class<T> messageType) throws GraphQLRequestExecutionExceptionExecutes the given subscription GraphQL request, and returns the relevantWebSocketClient
. The given subscriptionCallback will receive the notifications that have been subscribed by this subscription. Only one Subscription may be executed at a time: it may be a partial Request (always limited to one query), or a full request that contains only one subscription.
Note: Don't forget to free the server's resources by calling theAbstractLifeCycle.stop()
method of the returned object.- Specified by:
execute
in interfaceQueryExecutor
- Type Parameters:
R
- The class that is generated from the subscription definition in the GraphQL schema. It contains one attribute, for each available subscription. The data tag of the GraphQL server response will be mapped into an instance of this class.T
- The type that must be returned by the query or mutation: it's the class that maps to the GraphQL type returned by this subscription.- Parameters:
graphQLRequest
- Defines what response is expected from the server.parameters
- The input parameters for this subscription. If the query has no parameters, it may be null or an empty list.subscriptionCallback
- The object that will be called each time a message is received, or an error on the subscription occurs. This object is provided by the application.subscriptionName
- The name of the subscription that should be subscribed by this method call. It will be used to check that the correct GraphQLRequest has been provided by the caller.subscriptionType
- The R classmessageType
- The T class- Returns:
- The Subscription client. It allows to stop the subscription, by executing its
SubscriptionClient.unsubscribe()
method. This will stop the incoming notification flow, and will free resources on both the client and the server. - Throws:
GraphQLRequestExecutionException
- When an error occurs during the request execution, typically a network error, an error from the GraphQL server or if the server response can't be parsed
-