Support bean validation with ArgumentValue wrapper
See gh-737
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
package org.springframework.graphql.data.method.annotation.support;
|
||||
|
||||
import jakarta.validation.valueextraction.ExtractedValue;
|
||||
import jakarta.validation.valueextraction.UnwrapByDefault;
|
||||
import jakarta.validation.valueextraction.ValueExtractor;
|
||||
import org.springframework.graphql.data.ArgumentValue;
|
||||
|
||||
@UnwrapByDefault
|
||||
public class ArgumentValueExtractor implements ValueExtractor<ArgumentValue<@ExtractedValue ?>> {
|
||||
|
||||
@Override
|
||||
public void extractValues(ArgumentValue<?> originalValue, ValueReceiver receiver) {
|
||||
if (originalValue.isPresent()) {
|
||||
receiver.value(null, originalValue.value());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
org.springframework.graphql.data.method.annotation.support.ArgumentValueExtractor
|
||||
@@ -27,6 +27,7 @@ import jakarta.validation.ConstraintViolationException;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.Validation;
|
||||
import jakarta.validation.constraints.Max;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.assertj.core.api.InstanceOfAssertFactories;
|
||||
import org.assertj.core.api.IterableAssert;
|
||||
@@ -34,6 +35,7 @@ import org.assertj.core.api.ThrowableAssert;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.graphql.data.ArgumentValue;
|
||||
import org.springframework.graphql.data.method.HandlerMethod;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
@@ -68,6 +70,9 @@ class ValidationHelperTests {
|
||||
|
||||
BiConsumer<Object, Object[]> validator2 = createValidator(MyBean.class, "myValidatedParameterMethod");
|
||||
assertViolation(() -> validator2.accept(bean, new Object[] {new ConstrainedInput(100)}), "integerValue");
|
||||
|
||||
BiConsumer<Object, Object[]> validator3 = createValidator(MyBean.class, "myValidArgumentValue");
|
||||
assertViolation(() -> validator3.accept(bean, new Object[] {ArgumentValue.ofNullable("")}), "myValidArgumentValue.arg0");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -154,6 +159,10 @@ class ValidationHelperTests {
|
||||
public Object myValidatedParameterMethod(@Validated ConstrainedInput input) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Object myValidArgumentValue(@Valid ArgumentValue<@NotBlank String> arg0) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user