Skip to content

Commit 49d012e

Browse files
authored
Defaults Locale when calling validation (graphql-java#2908)
1 parent 35ff68d commit 49d012e

3 files changed

Lines changed: 21 additions & 7 deletions

File tree

‎src/main/java/graphql/GraphQL.java‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
import java.util.ArrayList;
3636
import java.util.List;
37+
import java.util.Locale;
3738
import java.util.Map;
3839
import java.util.Optional;
3940
import java.util.concurrent.CompletableFuture;
@@ -625,7 +626,8 @@ private List<ValidationError> validate(ExecutionInput executionInput, Document d
625626
validationCtx.onDispatched(cf);
626627

627628
Predicate<Class<?>> validationRulePredicate = executionInput.getGraphQLContext().getOrDefault(ParseAndValidate.INTERNAL_VALIDATION_PREDICATE_HINT, r -> true);
628-
List<ValidationError> validationErrors = ParseAndValidate.validate(graphQLSchema, document, validationRulePredicate, executionInput.getLocale());
629+
Locale locale = executionInput.getLocale() != null ? executionInput.getLocale() : Locale.getDefault();
630+
List<ValidationError> validationErrors = ParseAndValidate.validate(graphQLSchema, document, validationRulePredicate, locale);
629631

630632
validationCtx.onCompleted(validationErrors, null);
631633
cf.complete(validationErrors);

‎src/main/java/graphql/ParseAndValidate.java‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import graphql.schema.GraphQLSchema;
88
import graphql.validation.ValidationError;
99
import graphql.validation.Validator;
10+
import org.jetbrains.annotations.NotNull;
1011

1112
import java.util.List;
1213
import java.util.Locale;
@@ -40,7 +41,7 @@ public class ParseAndValidate {
4041
*
4142
* @return a result object that indicates how this operation went
4243
*/
43-
public static ParseAndValidateResult parseAndValidate(GraphQLSchema graphQLSchema, ExecutionInput executionInput) {
44+
public static ParseAndValidateResult parseAndValidate(@NotNull GraphQLSchema graphQLSchema, @NotNull ExecutionInput executionInput) {
4445
ParseAndValidateResult result = parse(executionInput);
4546
if (!result.isFailure()) {
4647
List<ValidationError> errors = validate(graphQLSchema, result.getDocument(), executionInput.getLocale());
@@ -56,7 +57,7 @@ public static ParseAndValidateResult parseAndValidate(GraphQLSchema graphQLSchem
5657
*
5758
* @return a result object that indicates how this operation went
5859
*/
59-
public static ParseAndValidateResult parse(ExecutionInput executionInput) {
60+
public static ParseAndValidateResult parse(@NotNull ExecutionInput executionInput) {
6061
try {
6162
//
6263
// we allow the caller to specify new parser options by context
@@ -80,7 +81,7 @@ public static ParseAndValidateResult parse(ExecutionInput executionInput) {
8081
*
8182
* @return a result object that indicates how this operation went
8283
*/
83-
public static List<ValidationError> validate(GraphQLSchema graphQLSchema, Document parsedDocument, Locale locale) {
84+
public static List<ValidationError> validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument, @NotNull Locale locale) {
8485
return validate(graphQLSchema, parsedDocument, ruleClass -> true, locale);
8586
}
8687

@@ -92,7 +93,7 @@ public static List<ValidationError> validate(GraphQLSchema graphQLSchema, Docume
9293
*
9394
* @return a result object that indicates how this operation went
9495
*/
95-
public static List<ValidationError> validate(GraphQLSchema graphQLSchema, Document parsedDocument) {
96+
public static List<ValidationError> validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument) {
9697
return validate(graphQLSchema, parsedDocument, ruleClass -> true, Locale.getDefault());
9798
}
9899

@@ -106,7 +107,7 @@ public static List<ValidationError> validate(GraphQLSchema graphQLSchema, Docume
106107
*
107108
* @return a result object that indicates how this operation went
108109
*/
109-
public static List<ValidationError> validate(GraphQLSchema graphQLSchema, Document parsedDocument, Predicate<Class<?>> rulePredicate, Locale locale) {
110+
public static List<ValidationError> validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument, @NotNull Predicate<Class<?>> rulePredicate, @NotNull Locale locale) {
110111
Validator validator = new Validator();
111112
return validator.validateDocument(graphQLSchema, parsedDocument, rulePredicate, locale);
112113
}
@@ -120,7 +121,7 @@ public static List<ValidationError> validate(GraphQLSchema graphQLSchema, Docume
120121
*
121122
* @return a result object that indicates how this operation went
122123
*/
123-
public static List<ValidationError> validate(GraphQLSchema graphQLSchema, Document parsedDocument, Predicate<Class<?>> rulePredicate) {
124+
public static List<ValidationError> validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument, @NotNull Predicate<Class<?>> rulePredicate) {
124125
Validator validator = new Validator();
125126
return validator.validateDocument(graphQLSchema, parsedDocument, rulePredicate, Locale.getDefault());
126127
}

‎src/test/groovy/graphql/GraphQLTest.groovy‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1352,4 +1352,15 @@ many lines''']
13521352
graphQL.getMutationStrategy() instanceof AsyncSerialExecutionStrategy
13531353
graphQL.getSubscriptionStrategy() instanceof SubscriptionExecutionStrategy
13541354
}
1355+
1356+
def "null locale on input is handled under the covers"() {
1357+
1358+
def graphQL = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema).build()
1359+
def ei = newExecutionInput("query q { validationError } ").locale(null).build()
1360+
1361+
when:
1362+
def er = graphQL.execute(ei)
1363+
then:
1364+
! er.errors.isEmpty()
1365+
}
13551366
}

0 commit comments

Comments
 (0)