diff --git a/src/main/java/graphql/validation/rules/ValidationEnvironment.java b/src/main/java/graphql/validation/rules/ValidationEnvironment.java index 088063b..9fdfbfb 100644 --- a/src/main/java/graphql/validation/rules/ValidationEnvironment.java +++ b/src/main/java/graphql/validation/rules/ValidationEnvironment.java @@ -1,5 +1,13 @@ package graphql.validation.rules; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.function.Consumer; + +import graphql.GraphQLContext; import graphql.PublicApi; import graphql.execution.ResultPath; import graphql.language.SourceLocation; @@ -11,13 +19,6 @@ import graphql.schema.GraphQLInputType; import graphql.validation.interpolation.MessageInterpolator; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.function.Consumer; - /** * The environment in which validation runs */ @@ -56,6 +57,7 @@ public enum ValidatedElement { private final GraphQLInputType validatedType; private final ValidatedElement validatedElement; private final List directives; + private final GraphQLContext graphQLContext; private ValidationEnvironment(Builder builder) { this.argument = builder.argument; @@ -72,6 +74,7 @@ private ValidationEnvironment(Builder builder) { this.validatedValue = builder.validatedValue; this.validatedElement = builder.validatedElement; this.directives = builder.directives; + this.graphQLContext = builder.graphQLContext; } public static Builder newValidationEnvironment() { @@ -135,6 +138,10 @@ public List getDirectives() { return directives; } + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + public ValidationEnvironment transform(Consumer builderConsumer) { Builder builder = newValidationEnvironment().validationEnvironment(this); builderConsumer.accept(builder); @@ -156,6 +163,7 @@ public static class Builder { private GraphQLInputType validatedType; private ValidatedElement validatedElement; private List directives = Collections.emptyList(); + private GraphQLContext graphQLContext; public Builder validationEnvironment(ValidationEnvironment validationEnvironment) { this.argument = validationEnvironment.argument; @@ -172,6 +180,7 @@ public Builder validationEnvironment(ValidationEnvironment validationEnvironment this.validatedValue = validationEnvironment.validatedValue; this.validatedElement = validationEnvironment.validatedElement; this.directives = validationEnvironment.directives; + this.graphQLContext = validationEnvironment.graphQLContext; return this; } @@ -184,6 +193,7 @@ public Builder dataFetchingEnvironment(DataFetchingEnvironment dataFetchingEnvir location(dataFetchingEnvironment.getField().getSourceLocation()); argumentValues(dataFetchingEnvironment.getArguments()); validatedElement(ValidatedElement.FIELD); + this.graphQLContext = dataFetchingEnvironment.getGraphQlContext(); return this; }