summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <teemusa@vaadin.com>2016-10-25 16:28:15 +0300
committerTeemu Suo-Anttila <teemusa@vaadin.com>2016-10-26 16:12:26 +0300
commit524a69fd2ddaa1405d11b74382e235f10144c154 (patch)
treedd28c42dce35c7073d6b86dfea7d915b35c3a75a /server
parent54e1edcfe045604729c2f16cece87ae754c0036c (diff)
downloadvaadin-framework-524a69fd2ddaa1405d11b74382e235f10144c154.tar.gz
vaadin-framework-524a69fd2ddaa1405d11b74382e235f10144c154.zip
Add ValueContext to Validators
Change-Id: I2ac99adf1fdb60dc0638e6fe98c4542ebd5f21a5
Diffstat (limited to 'server')
-rw-r--r--server/src/main/java/com/vaadin/data/Binder.java32
-rw-r--r--server/src/main/java/com/vaadin/data/Validator.java40
-rw-r--r--server/src/main/java/com/vaadin/data/util/converter/ValueContext.java2
-rw-r--r--server/src/main/java/com/vaadin/data/validator/BeanValidator.java3
-rw-r--r--server/src/main/java/com/vaadin/data/validator/NotEmptyValidator.java3
-rw-r--r--server/src/main/java/com/vaadin/data/validator/NotNullValidator.java3
-rw-r--r--server/src/main/java/com/vaadin/data/validator/RangeValidator.java3
-rw-r--r--server/src/main/java/com/vaadin/data/validator/RegexpValidator.java3
-rw-r--r--server/src/main/java/com/vaadin/data/validator/StringLengthValidator.java5
-rw-r--r--server/src/main/java/com/vaadin/ui/AbstractDateField.java4
-rw-r--r--server/src/test/java/com/vaadin/data/BinderBookOfVaadinTest.java15
-rw-r--r--server/src/test/java/com/vaadin/data/BinderConverterValidatorTest.java9
-rw-r--r--server/src/test/java/com/vaadin/data/BinderValidationStatusTest.java15
-rw-r--r--server/src/test/java/com/vaadin/data/ValidatorTest.java53
-rw-r--r--server/src/test/java/com/vaadin/data/validator/NotEmptyValidatorTest.java7
-rw-r--r--server/src/test/java/com/vaadin/data/validator/NotNullValidatorTest.java5
-rw-r--r--server/src/test/java/com/vaadin/data/validator/ValidatorTestBase.java8
17 files changed, 88 insertions, 122 deletions
diff --git a/server/src/main/java/com/vaadin/data/Binder.java b/server/src/main/java/com/vaadin/data/Binder.java
index effd315ab3..f500ef9a0a 100644
--- a/server/src/main/java/com/vaadin/data/Binder.java
+++ b/server/src/main/java/com/vaadin/data/Binder.java
@@ -708,7 +708,8 @@ public class Binder<BEAN> implements Serializable {
@Override
public Result<T> convertToModel(T value, ValueContext context) {
- Result<? super T> validationResult = validator.apply(value);
+ Result<? super T> validationResult = validator.apply(value,
+ context);
if (validationResult.isError()) {
return Result.error(validationResult.getMessage().get());
} else {
@@ -1073,6 +1074,28 @@ public class Binder<BEAN> implements Serializable {
}
/**
+ * A convenience method to add a validator to this binder using the
+ * {@link Validator#from(SerializablePredicate, String)} factory method.
+ * <p>
+ * Bean level validators are applied on the bean instance after the bean is
+ * updated. If the validators fail, the bean instance is reverted to its
+ * previous state.
+ *
+ * @see #save(Object)
+ * @see #saveIfValid(Object)
+ *
+ * @param predicate
+ * the predicate performing validation, not null
+ * @param message
+ * the error message to report in case validation failure
+ * @return this binder, for chaining
+ */
+ public Binder<BEAN> withValidator(SerializablePredicate<BEAN> predicate,
+ String message) {
+ return withValidator(Validator.from(predicate, message));
+ }
+
+ /**
* Validates the values of all bound fields and returns the validation
* status.
* <p>
@@ -1134,9 +1157,10 @@ public class Binder<BEAN> implements Serializable {
*/
private List<Result<?>> validateBean(BEAN bean) {
Objects.requireNonNull(bean, "bean cannot be null");
- List<Result<?>> results = Collections.unmodifiableList(
- validators.stream().map(validator -> validator.apply(bean))
- .collect(Collectors.toList()));
+ List<Result<?>> results = Collections.unmodifiableList(validators
+ .stream()
+ .map(validator -> validator.apply(bean, new ValueContext()))
+ .collect(Collectors.toList()));
return results;
}
diff --git a/server/src/main/java/com/vaadin/data/Validator.java b/server/src/main/java/com/vaadin/data/Validator.java
index 4d4a19fbe8..6f1d5827ec 100644
--- a/server/src/main/java/com/vaadin/data/Validator.java
+++ b/server/src/main/java/com/vaadin/data/Validator.java
@@ -18,9 +18,9 @@ package com.vaadin.data;
import java.io.Serializable;
import java.util.Objects;
-import java.util.function.Function;
-import java.util.function.Predicate;
+import java.util.function.BiFunction;
+import com.vaadin.data.util.converter.ValueContext;
import com.vaadin.server.SerializablePredicate;
/**
@@ -48,32 +48,8 @@ import com.vaadin.server.SerializablePredicate;
* @see Result
*/
@FunctionalInterface
-public interface Validator<T> extends Function<T, Result<T>>, Serializable {
-
- /**
- * Returns a validator that chains this validator with the given function.
- * Specifically, the function may be another validator. The resulting
- * validator first applies this validator, and if the value passes, then the
- * given validator.
- * <p>
- * For instance, the following chained validator checks if a number is
- * between 0 and 10, inclusive:
- *
- * <pre>
- * Validator&lt;Integer&gt; v = Validator.from(num -> num >= 0, "number must be >= 0")
- * .chain(Validator.from(num -> num <= 10, "number must be <= 10"));
- * </pre>
- *
- * @param next
- * the validator to apply next, not null
- * @return a chained validator
- *
- * @see #from(Predicate, String)
- */
- public default Validator<T> chain(Function<T, Result<T>> next) {
- Objects.requireNonNull(next, "next cannot be null");
- return val -> apply(val).flatMap(next);
- }
+public interface Validator<T>
+ extends BiFunction<T, ValueContext, Result<T>>, Serializable {
/**
* Validates the given value. Returns a {@code Result} instance representing
@@ -81,10 +57,12 @@ public interface Validator<T> extends Function<T, Result<T>>, Serializable {
*
* @param value
* the input value to validate
+ * @param context
+ * the value context for validation
* @return the validation result
*/
@Override
- public Result<T> apply(T value);
+ public Result<T> apply(T value, ValueContext context);
/**
* Returns a validator that passes any value.
@@ -94,7 +72,7 @@ public interface Validator<T> extends Function<T, Result<T>>, Serializable {
* @return an always-passing validator
*/
public static <T> Validator<T> alwaysPass() {
- return v -> Result.ok(v);
+ return (v, ctx) -> Result.ok(v);
}
/**
@@ -123,7 +101,7 @@ public interface Validator<T> extends Function<T, Result<T>>, Serializable {
String errorMessage) {
Objects.requireNonNull(guard, "guard cannot be null");
Objects.requireNonNull(errorMessage, "errorMessage cannot be null");
- return value -> {
+ return (value, context) -> {
try {
if (guard.test(value)) {
return Result.ok(value);
diff --git a/server/src/main/java/com/vaadin/data/util/converter/ValueContext.java b/server/src/main/java/com/vaadin/data/util/converter/ValueContext.java
index a8fdf296f5..d478692b4f 100644
--- a/server/src/main/java/com/vaadin/data/util/converter/ValueContext.java
+++ b/server/src/main/java/com/vaadin/data/util/converter/ValueContext.java
@@ -39,8 +39,8 @@ public class ValueContext implements Serializable {
* Constructor for {@code ValueContext} without a {@code Locale}.
*/
public ValueContext() {
- this.locale = null;
this.component = null;
+ this.locale = findLocale();
}
/**
diff --git a/server/src/main/java/com/vaadin/data/validator/BeanValidator.java b/server/src/main/java/com/vaadin/data/validator/BeanValidator.java
index 9ac9c9a649..170f5a5f04 100644
--- a/server/src/main/java/com/vaadin/data/validator/BeanValidator.java
+++ b/server/src/main/java/com/vaadin/data/validator/BeanValidator.java
@@ -31,6 +31,7 @@ import javax.validation.metadata.ConstraintDescriptor;
import com.vaadin.data.Result;
import com.vaadin.data.Validator;
import com.vaadin.data.util.BeanUtil;
+import com.vaadin.data.util.converter.ValueContext;
/**
* A {@code Validator} using the JSR-303 (javax.validation) annotation-based
@@ -130,7 +131,7 @@ public class BeanValidator implements Validator<Object> {
* annotation or equivalent.
*/
@Override
- public Result<Object> apply(final Object value) {
+ public Result<Object> apply(final Object value, ValueContext context) {
Set<? extends ConstraintViolation<?>> violations = getJavaxBeanValidator()
.validateValue(beanType, propertyName, value);
diff --git a/server/src/main/java/com/vaadin/data/validator/NotEmptyValidator.java b/server/src/main/java/com/vaadin/data/validator/NotEmptyValidator.java
index 0bd989bf66..99532c34d1 100644
--- a/server/src/main/java/com/vaadin/data/validator/NotEmptyValidator.java
+++ b/server/src/main/java/com/vaadin/data/validator/NotEmptyValidator.java
@@ -20,6 +20,7 @@ import java.util.Objects;
import com.vaadin.data.HasRequired;
import com.vaadin.data.Result;
import com.vaadin.data.Validator;
+import com.vaadin.data.util.converter.ValueContext;
/**
* Simple validator to check against {@code null} value and empty {@link String}
@@ -65,7 +66,7 @@ public class NotEmptyValidator<T> implements Validator<T> {
}
@Override
- public Result<T> apply(T value) {
+ public Result<T> apply(T value, ValueContext context) {
if (Objects.isNull(value) || Objects.equals(value, "")) {
return Result.error(message);
} else {
diff --git a/server/src/main/java/com/vaadin/data/validator/NotNullValidator.java b/server/src/main/java/com/vaadin/data/validator/NotNullValidator.java
index b5f33c04c8..349e000c68 100644
--- a/server/src/main/java/com/vaadin/data/validator/NotNullValidator.java
+++ b/server/src/main/java/com/vaadin/data/validator/NotNullValidator.java
@@ -19,6 +19,7 @@ package com.vaadin.data.validator;
import java.util.Objects;
import com.vaadin.data.Result;
+import com.vaadin.data.util.converter.ValueContext;
/**
* This validator is used for validating properties that do not allow null
@@ -41,7 +42,7 @@ public class NotNullValidator extends AbstractValidator<String> {
}
@Override
- public Result<String> apply(String value) {
+ public Result<String> apply(String value, ValueContext context) {
return Objects.isNull(value) ? Result.error(getMessage(value))
: Result.ok(value);
}
diff --git a/server/src/main/java/com/vaadin/data/validator/RangeValidator.java b/server/src/main/java/com/vaadin/data/validator/RangeValidator.java
index a6a0946035..32effdd811 100644
--- a/server/src/main/java/com/vaadin/data/validator/RangeValidator.java
+++ b/server/src/main/java/com/vaadin/data/validator/RangeValidator.java
@@ -19,6 +19,7 @@ import java.util.Comparator;
import java.util.Objects;
import com.vaadin.data.Result;
+import com.vaadin.data.util.converter.ValueContext;
/**
* Verifies that a value is within the given range.
@@ -97,7 +98,7 @@ public class RangeValidator<T> extends AbstractValidator<T> {
* behavior depends on the used comparator.
*/
@Override
- public Result<T> apply(T value) {
+ public Result<T> apply(T value, ValueContext context) {
return toResult(value, isValid(value));
}
diff --git a/server/src/main/java/com/vaadin/data/validator/RegexpValidator.java b/server/src/main/java/com/vaadin/data/validator/RegexpValidator.java
index f72764a860..b9763e5199 100644
--- a/server/src/main/java/com/vaadin/data/validator/RegexpValidator.java
+++ b/server/src/main/java/com/vaadin/data/validator/RegexpValidator.java
@@ -19,6 +19,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.vaadin.data.Result;
+import com.vaadin.data.util.converter.ValueContext;
/**
* A string validator comparing the string against a Java regular expression.
@@ -70,7 +71,7 @@ public class RegexpValidator extends AbstractValidator<String> {
}
@Override
- public Result<String> apply(String value) {
+ public Result<String> apply(String value, ValueContext context) {
return toResult(value, isValid(value));
}
diff --git a/server/src/main/java/com/vaadin/data/validator/StringLengthValidator.java b/server/src/main/java/com/vaadin/data/validator/StringLengthValidator.java
index e1d07f9ec3..421cf13a29 100644
--- a/server/src/main/java/com/vaadin/data/validator/StringLengthValidator.java
+++ b/server/src/main/java/com/vaadin/data/validator/StringLengthValidator.java
@@ -17,6 +17,7 @@
package com.vaadin.data.validator;
import com.vaadin.data.Result;
+import com.vaadin.data.util.converter.ValueContext;
/**
* Verifies that the length of a string is within the given range.
@@ -49,11 +50,11 @@ public class StringLengthValidator extends AbstractValidator<String> {
}
@Override
- public Result<String> apply(String value) {
+ public Result<String> apply(String value, ValueContext context) {
if (value == null) {
return toResult(value, true);
}
- Result<?> lengthCheck = validator.apply(value.length());
+ Result<?> lengthCheck = validator.apply(value.length(), context);
return toResult(value, !lengthCheck.isError());
}
diff --git a/server/src/main/java/com/vaadin/ui/AbstractDateField.java b/server/src/main/java/com/vaadin/ui/AbstractDateField.java
index c62c76ac9c..bb90ce53be 100644
--- a/server/src/main/java/com/vaadin/ui/AbstractDateField.java
+++ b/server/src/main/java/com/vaadin/ui/AbstractDateField.java
@@ -30,6 +30,7 @@ import java.util.logging.Logger;
import org.jsoup.nodes.Element;
import com.vaadin.data.Result;
+import com.vaadin.data.util.converter.ValueContext;
import com.vaadin.data.validator.DateRangeValidator;
import com.vaadin.event.FieldEvents.BlurEvent;
import com.vaadin.event.FieldEvents.BlurListener;
@@ -677,7 +678,8 @@ public abstract class AbstractDateField extends AbstractField<LocalDate>
getDateOutOfRangeMessage(),
getDate(getRangeStart(), getResolution()),
getDate(getRangeEnd(), getResolution()));
- Result<LocalDate> result = validator.apply(value);
+ Result<LocalDate> result = validator.apply(value,
+ new ValueContext(this));
if (result.isError()) {
setComponentError(new UserError(getDateOutOfRangeMessage()));
}
diff --git a/server/src/test/java/com/vaadin/data/BinderBookOfVaadinTest.java b/server/src/test/java/com/vaadin/data/BinderBookOfVaadinTest.java
index e8007d5f1d..9c0ffd31e7 100644
--- a/server/src/test/java/com/vaadin/data/BinderBookOfVaadinTest.java
+++ b/server/src/test/java/com/vaadin/data/BinderBookOfVaadinTest.java
@@ -598,10 +598,8 @@ public class BinderBookOfVaadinTest {
binder.forField(yearOfBirth)
.withConverter(new StringToIntegerConverter("err"))
.bind(BookPerson::getYearOfBirth, BookPerson::setYearOfBirth);
- binder.withValidator(bean -> bean.yearOfBirth < 2000 ? Result.ok(bean)
- : Result.error(message))
- .withValidator(bean -> bean.yearOfBirth == 2000
- ? Result.error(message2) : Result.ok(bean));
+ binder.withValidator(bean -> bean.yearOfBirth < 2000, message)
+ .withValidator(bean -> bean.yearOfBirth != 2000, message2);
binder.setBean(p);
@@ -664,13 +662,10 @@ public class BinderBookOfVaadinTest {
BookPerson p = new BookPerson(1500, 12);
binder.forField(yearOfBirth)
.withConverter(new StringToIntegerConverter("err"))
- .withValidator(value -> value % 2 == 0 ? Result.ok(value)
- : Result.error(bindingMessage))
+ .withValidator(value -> value % 2 == 0, bindingMessage)
.bind(BookPerson::getYearOfBirth, BookPerson::setYearOfBirth);
- binder.withValidator(bean -> bean.yearOfBirth < 2000 ? Result.ok(bean)
- : Result.error(message))
- .withValidator(bean -> bean.yearOfBirth == 2000
- ? Result.error(message2) : Result.ok(bean));
+ binder.withValidator(bean -> bean.yearOfBirth < 2000, message)
+ .withValidator(bean -> bean.yearOfBirth != 2000, message2);
binder.setBean(p);
diff --git a/server/src/test/java/com/vaadin/data/BinderConverterValidatorTest.java b/server/src/test/java/com/vaadin/data/BinderConverterValidatorTest.java
index d03f81e873..a0fc5cc6fa 100644
--- a/server/src/test/java/com/vaadin/data/BinderConverterValidatorTest.java
+++ b/server/src/test/java/com/vaadin/data/BinderConverterValidatorTest.java
@@ -30,6 +30,7 @@ import org.junit.Test;
import com.vaadin.data.Binder.Binding;
import com.vaadin.data.util.converter.StringToIntegerConverter;
+import com.vaadin.data.util.converter.ValueContext;
import com.vaadin.data.validator.NotEmptyValidator;
import com.vaadin.server.AbstractErrorMessage;
import com.vaadin.server.ErrorMessage;
@@ -92,7 +93,7 @@ public class BinderConverterValidatorTest
String msg2 = "bar";
binding.withValidator(new Validator<String>() {
@Override
- public Result<String> apply(String value) {
+ public Result<String> apply(String value, ValueContext context) {
return new SimpleResult<>(null, msg1);
}
});
@@ -125,7 +126,7 @@ public class BinderConverterValidatorTest
// validator for Number can be used on a Double
TextField salaryField = new TextField();
- Validator<Number> positiveNumberValidator = value -> {
+ Validator<Number> positiveNumberValidator = (value, context) -> {
if (value.doubleValue() >= 0) {
return Result.ok(value);
} else {
@@ -568,8 +569,8 @@ public class BinderConverterValidatorTest
Binding<Person, String, String> binding = binder.forField(nameField)
.withValidator(notEmpty);
binding.bind(Person::getFirstName, Person::setFirstName);
- binder.withValidator(bean -> bean.getFirstName().contains("error")
- ? Result.error("error") : Result.ok(bean));
+ binder.withValidator(bean -> !bean.getFirstName().contains("error"),
+ "error");
Person person = new Person();
person.setFirstName("");
binder.setBean(person);
diff --git a/server/src/test/java/com/vaadin/data/BinderValidationStatusTest.java b/server/src/test/java/com/vaadin/data/BinderValidationStatusTest.java
index e85132fef3..9066bf4dbe 100644
--- a/server/src/test/java/com/vaadin/data/BinderValidationStatusTest.java
+++ b/server/src/test/java/com/vaadin/data/BinderValidationStatusTest.java
@@ -1,12 +1,12 @@
/*
* Copyright 2000-2016 Vaadin Ltd.
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -27,8 +27,8 @@ import com.vaadin.data.ValidationStatus.Status;
import com.vaadin.tests.data.bean.Person;
import com.vaadin.ui.Label;
-public class BinderValidationStatusTest extends
- BinderTestBase<Binder<Person>, Person> {
+public class BinderValidationStatusTest
+ extends BinderTestBase<Binder<Person>, Person> {
protected final static ValidationStatusHandler NOOP = event -> {
};
@@ -307,9 +307,8 @@ public class BinderValidationStatusTest extends
"Using a custom status change handler so no change should end up here");
}).bind(Person::getAge, Person::setAge);
binder.withValidator(
- bean -> !bean.getFirstName().isEmpty() && bean.getAge() > 0
- ? Result.ok(bean)
- : Result.error("Need first name and age"));
+ bean -> !bean.getFirstName().isEmpty() && bean.getAge() > 0,
+ "Need first name and age");
binder.setValidationStatusHandler(r -> {
statusCapture.set(r);
diff --git a/server/src/test/java/com/vaadin/data/ValidatorTest.java b/server/src/test/java/com/vaadin/data/ValidatorTest.java
index d3f7fc23de..ead9991b4c 100644
--- a/server/src/test/java/com/vaadin/data/ValidatorTest.java
+++ b/server/src/test/java/com/vaadin/data/ValidatorTest.java
@@ -20,6 +20,8 @@ import java.util.Objects;
import org.junit.Assert;
import org.junit.Test;
+import com.vaadin.data.util.converter.ValueContext;
+
/**
* @author Vaadin Ltd
*
@@ -29,65 +31,20 @@ public class ValidatorTest {
@Test
public void alwaysPass() {
Validator<String> alwaysPass = Validator.alwaysPass();
- Result<String> result = alwaysPass.apply("foo");
+ Result<String> result = alwaysPass.apply("foo", new ValueContext());
Assert.assertTrue(result instanceof SimpleResult);
SimpleResult<String> implRes = (SimpleResult<String>) result;
Assert.assertFalse(implRes.getMessage().isPresent());
}
@Test
- public void chain_alwaysPassAndError() {
- Validator<String> alwaysPass = Validator.alwaysPass();
- Validator<String> chain = alwaysPass
- .chain(value -> Result.error("foo"));
- Result<String> result = chain.apply("bar");
- Assert.assertTrue(result.isError());
- Assert.assertEquals("foo", result.getMessage().get());
- }
-
- @SuppressWarnings("serial")
- @Test
- public void chain_mixture() {
- Validator<String> first = new Validator<String>() {
-
- @Override
- public Result<String> apply(String value) {
- if (value == null) {
- return Result.error("Cannot be null");
- }
- return Result.ok(value);
- }
- };
- Validator<String> second = new Validator<String>() {
-
- @Override
- public Result<String> apply(String value) {
- if (value != null && value.isEmpty()) {
- return Result.error("Cannot be empty");
- }
- return Result.ok(value);
- }
- };
-
- Validator<String> chain = first.chain(second);
- Result<String> result = chain.apply("bar");
- Assert.assertFalse(result.isError());
-
- result = chain.apply(null);
- Assert.assertTrue(result.isError());
-
- result = chain.apply("");
- Assert.assertTrue(result.isError());
- }
-
- @Test
public void from() {
Validator<String> validator = Validator.from(Objects::nonNull,
"Cannot be null");
- Result<String> result = validator.apply(null);
+ Result<String> result = validator.apply(null, new ValueContext());
Assert.assertTrue(result.isError());
- result = validator.apply("");
+ result = validator.apply("", new ValueContext());
Assert.assertFalse(result.isError());
}
}
diff --git a/server/src/test/java/com/vaadin/data/validator/NotEmptyValidatorTest.java b/server/src/test/java/com/vaadin/data/validator/NotEmptyValidatorTest.java
index 78101b898e..85e43d2c65 100644
--- a/server/src/test/java/com/vaadin/data/validator/NotEmptyValidatorTest.java
+++ b/server/src/test/java/com/vaadin/data/validator/NotEmptyValidatorTest.java
@@ -19,6 +19,7 @@ import org.junit.Assert;
import org.junit.Test;
import com.vaadin.data.Result;
+import com.vaadin.data.util.converter.ValueContext;
/**
* @author Vaadin Ltd
@@ -29,7 +30,7 @@ public class NotEmptyValidatorTest {
@Test
public void nullValueIsDisallowed() {
NotEmptyValidator<String> validator = new NotEmptyValidator<>("foo");
- Result<String> result = validator.apply(null);
+ Result<String> result = validator.apply(null, new ValueContext());
Assert.assertTrue(result.isError());
Assert.assertEquals("foo", result.getMessage().get());
}
@@ -37,7 +38,7 @@ public class NotEmptyValidatorTest {
@Test
public void emptyValueIsDisallowed() {
NotEmptyValidator<String> validator = new NotEmptyValidator<>("foo");
- Result<String> result = validator.apply("");
+ Result<String> result = validator.apply("", new ValueContext());
Assert.assertTrue(result.isError());
Assert.assertEquals("foo", result.getMessage().get());
}
@@ -46,7 +47,7 @@ public class NotEmptyValidatorTest {
public void nonNullValueIsAllowed() {
NotEmptyValidator<Object> validator = new NotEmptyValidator<>("foo");
Object value = new Object();
- Result<Object> result = validator.apply(value);
+ Result<Object> result = validator.apply(value, new ValueContext());
Assert.assertFalse(result.isError());
result.ifOk(val -> Assert.assertEquals(value, val));
result.ifError(msg -> Assert.fail());
diff --git a/server/src/test/java/com/vaadin/data/validator/NotNullValidatorTest.java b/server/src/test/java/com/vaadin/data/validator/NotNullValidatorTest.java
index 8762e74fa3..e3e76fbf53 100644
--- a/server/src/test/java/com/vaadin/data/validator/NotNullValidatorTest.java
+++ b/server/src/test/java/com/vaadin/data/validator/NotNullValidatorTest.java
@@ -19,13 +19,14 @@ import org.junit.Assert;
import org.junit.Test;
import com.vaadin.data.Result;
+import com.vaadin.data.util.converter.ValueContext;
public class NotNullValidatorTest {
@Test
public void nullValueIsDisallowed() {
NotNullValidator validator = new NotNullValidator("foo");
- Result<String> result = validator.apply(null);
+ Result<String> result = validator.apply(null, new ValueContext());
Assert.assertTrue(result.isError());
Assert.assertEquals("foo", result.getMessage().get());
}
@@ -33,7 +34,7 @@ public class NotNullValidatorTest {
@Test
public void nonNullValueIsAllowed() {
NotNullValidator validator = new NotNullValidator("foo");
- Result<String> result = validator.apply("bar");
+ Result<String> result = validator.apply("bar", new ValueContext());
Assert.assertFalse(result.isError());
result.ifOk(value -> Assert.assertEquals("bar", value));
result.ifError(msg -> Assert.fail());
diff --git a/server/src/test/java/com/vaadin/data/validator/ValidatorTestBase.java b/server/src/test/java/com/vaadin/data/validator/ValidatorTestBase.java
index 2845fda5c0..3d6cd2afe1 100644
--- a/server/src/test/java/com/vaadin/data/validator/ValidatorTestBase.java
+++ b/server/src/test/java/com/vaadin/data/validator/ValidatorTestBase.java
@@ -3,18 +3,20 @@ package com.vaadin.data.validator;
import org.junit.Assert;
import com.vaadin.data.Validator;
+import com.vaadin.data.util.converter.ValueContext;
public class ValidatorTestBase {
protected <T> void assertPasses(T value, Validator<? super T> v) {
- v.apply(value).handle(val -> Assert.assertEquals(value, val),
- err -> Assert
+ v.apply(value, new ValueContext())
+ .handle(val -> Assert.assertEquals(value, val), err -> Assert
.fail(value + " should pass " + v + " but got " + err));
}
protected <T> void assertFails(T value, String errorMessage,
Validator<? super T> v) {
- v.apply(value).handle(val -> Assert.fail(value + " should fail " + v),
+ v.apply(value, new ValueContext()).handle(
+ val -> Assert.fail(value + " should fail " + v),
err -> Assert.assertEquals(errorMessage, err));
}