import com.vaadin.server.Extension;
import com.vaadin.server.JsonCodec;
import com.vaadin.server.SerializableComparator;
-import com.vaadin.server.SerializableFunction;
import com.vaadin.server.SerializableSupplier;
import com.vaadin.server.Setter;
import com.vaadin.server.VaadinServiceClassLoaderUtil;
*/
public static class Column<T, V> extends AbstractGridExtension<T> {
- private final SerializableFunction<T, ? extends V> valueProvider;
+ private final ValueProvider<T, V> valueProvider;
private SortOrderProvider sortOrderProvider = direction -> {
String id = getId();
*
* @since 8.0.3
*/
- public SerializableFunction<T, ? extends V> getValueProvider() {
+ public ValueProvider<T, V> getValueProvider() {
return valueProvider;
}
*/
package com.vaadin.tests.components.grid;
+import java.util.List;
+import java.util.Locale;
+import java.util.stream.Collectors;
+
import org.junit.Assert;
import org.junit.Test;
+import com.vaadin.data.provider.DataProvider;
+import com.vaadin.data.provider.ListDataProvider;
+import com.vaadin.data.provider.Query;
import com.vaadin.tests.data.bean.Person;
import com.vaadin.tests.data.bean.Sex;
import com.vaadin.ui.Grid;
Assert.assertEquals("eeemaaail", col.getValueProvider().apply(person));
}
+
+ @Test
+ public void reuseValueProviderForFilter() {
+ Grid<Person> grid = new Grid<>(Person.class);
+ Column<Person, String> col = (Column<Person, String>) grid
+ .getColumn("email");
+
+ Person lowerCasePerson = new Person("first", "last", "email", 123,
+ Sex.UNKNOWN, null);
+ Person upperCasePerson = new Person("FIRST", "LAST", "EMAIL", 123,
+ Sex.UNKNOWN, null);
+ ListDataProvider<Person> persons = DataProvider.ofItems(lowerCasePerson,
+ upperCasePerson);
+
+ persons.addFilter(col.getValueProvider(),
+ value -> value.toUpperCase(Locale.ENGLISH).equals(value));
+
+ List<Person> queryPersons = persons.fetch(new Query<>())
+ .collect(Collectors.toList());
+ Assert.assertEquals(1, queryPersons.size());
+ Assert.assertSame(upperCasePerson, queryPersons.get(0));
+ }
}