package graphql.schema; import graphql.execution.ExecutionId; import graphql.language.Field; import graphql.language.FragmentDefinition; import java.util.List; import java.util.Map; @SuppressWarnings("unchecked") public class DataFetchingEnvironmentImpl implements DataFetchingEnvironment { private final Object source; private final Map<String, Object> arguments; private final Object context; private final List<Field> fields; private final GraphQLOutputType fieldType; private final GraphQLType parentType; private final GraphQLSchema graphQLSchema; private final Map<String, FragmentDefinition> fragmentsByName; private final ExecutionId executionId; private final DataFetchingFieldSelectionSet selectionSet; public DataFetchingEnvironmentImpl(Object source, Map<String, Object> arguments, Object context, List<Field> fields, GraphQLOutputType fieldType, GraphQLType parentType, GraphQLSchema graphQLSchema, Map<String, FragmentDefinition> fragmentsByName, ExecutionId executionId, DataFetchingFieldSelectionSet selectionSet) { this.source = source; this.arguments = arguments; this.context = context; this.fields = fields; this.fieldType = fieldType; this.parentType = parentType; this.graphQLSchema = graphQLSchema; this.fragmentsByName = fragmentsByName; this.executionId = executionId; this.selectionSet = selectionSet; } @Override public <T> T getSource() { return (T) source; } @Override public Map<String, Object> getArguments() { return arguments; } @Override public boolean containsArgument(String name) { return arguments.containsKey(name); } @Override public <T> T getArgument(String name) { return (T) arguments.get(name); } @Override public <T> T getContext() { return (T) context; } @Override public List<Field> getFields() { return fields; } @Override public GraphQLOutputType getFieldType() { return fieldType; } @Override public GraphQLType getParentType() { return parentType; } @Override public GraphQLSchema getGraphQLSchema() { return graphQLSchema; } @Override public Map<String, FragmentDefinition> getFragmentsByName() { return fragmentsByName; } @Override public ExecutionId getExecutionId() { return executionId; } @Override public DataFetchingFieldSelectionSet getSelectionSet() { return selectionSet; } }