graphql.schema.DataFetchingEnvironment Maven / Gradle / Ivy
package graphql.schema;
import graphql.PublicApi;
import graphql.execution.ExecutionId;
import graphql.execution.ExecutionTypeInfo;
import graphql.language.Field;
import graphql.language.FragmentDefinition;
import java.util.List;
import java.util.Map;
/**
* A DataFetchingEnvironment instance of passed to a {@link DataFetcher} as an execution context parameter
*/
@PublicApi
public interface DataFetchingEnvironment {
/**
* This is the value of the current object to be queried.
* Or to put it differently: it is the value of the parent field.
*
* For the root query, it is equal to {{@link DataFetchingEnvironment#getRoot}
*
* @param you decide what type it is
*
* @return can be null for the root query, otherwise it is never null
*/
T getSource();
/**
* @return the arguments that have been passed in via the graphql query
*/
Map getArguments();
/**
* Returns true of the named argument is present
*
* @param name the name of the argument
*
* @return true of the named argument is present
*/
boolean containsArgument(String name);
/**
* Returns the named argument
*
* @param name the name of the argument
* @param you decide what type it is
*
* @return the named argument or null if its not [present
*/
T getArgument(String name);
/**
* Returns a context argument that is set up when the {@link graphql.GraphQL#execute} method
* is invoked.
*
* This is a info object which is provided to all DataFetcher, but never used by graphql-java itself.
*
* @param you decide what type it is
*
* @return can be null
*/
T getContext();
/**
* This is the source object for the root query.
*
* @param you decide what type it is
*
* @return can be null
*/
T getRoot();
/**
* @return the definition of the current field
*/
GraphQLFieldDefinition getFieldDefinition();
/**
* @return the list of fields currently in query context
*/
List getFields();
/**
* @return graphql type of the current field
*/
GraphQLOutputType getFieldType();
/**
* @return the field {@link ExecutionTypeInfo} for the current data fetch operation
*/
ExecutionTypeInfo getFieldTypeInfo();
/**
* @return the type of the parent of the current field
*/
GraphQLType getParentType();
/**
* @return the underlying graphql schema
*/
GraphQLSchema getGraphQLSchema();
/**
* @return the {@link FragmentDefinition} map for the current data fetch operation
*/
Map getFragmentsByName();
/**
* @return the {@link ExecutionId} for the current data fetch operation
*/
ExecutionId getExecutionId();
/**
* @return the {@link DataFetchingFieldSelectionSet} for the current data fetch operation
*/
DataFetchingFieldSelectionSet getSelectionSet();
}