diff --git a/spring-graphql/src/main/java/org/springframework/graphql/data/method/annotation/support/ArgumentValueValueExtractor.java b/spring-graphql/src/main/java/org/springframework/graphql/data/method/annotation/support/ArgumentValueValueExtractor.java index b9ae78e9..f2f71c74 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/data/method/annotation/support/ArgumentValueValueExtractor.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/data/method/annotation/support/ArgumentValueValueExtractor.java @@ -32,7 +32,7 @@ public final class ArgumentValueValueExtractor implements ValueExtractor argumentValue, ValueReceiver receiver) { - if (argumentValue.isPresent()) { + if (!argumentValue.isOmitted()) { receiver.value(null, argumentValue.value()); } } diff --git a/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/ValidationHelperTests.java b/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/ValidationHelperTests.java index 2d9b394f..4b0abbf4 100644 --- a/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/ValidationHelperTests.java +++ b/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/ValidationHelperTests.java @@ -73,6 +73,18 @@ class ValidationHelperTests { BiConsumer validator3 = validateFunction(MyBean.class, "myValidArgumentValue"); assertViolation(() -> validator3.accept(bean, new Object[] {ArgumentValue.ofNullable("")}), "myValidArgumentValue.arg0"); + + // Validate that an explicit null value is validated. + assertViolation(() -> validator3.accept(bean, new Object[] {ArgumentValue.ofNullable(null)}), "myValidArgumentValue.arg0"); + } + + @Test + void shouldNotRaiseValidationErrorForOmittedArgumentValue() { + MyBean bean = new MyBean(); + + // Validate that an omitted value is allowed. + BiConsumer validator3 = validateFunction(MyBean.class, "myValidArgumentValue"); + validator3.accept(bean, new Object[] {ArgumentValue.omitted()}); } @Test