summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/src/main/java/com/vaadin/data/BeanBinder.java4
-rw-r--r--server/src/test/java/com/vaadin/data/BeanBinderTest.java28
2 files changed, 30 insertions, 2 deletions
diff --git a/server/src/main/java/com/vaadin/data/BeanBinder.java b/server/src/main/java/com/vaadin/data/BeanBinder.java
index 22761c2cd7..c04a36186a 100644
--- a/server/src/main/java/com/vaadin/data/BeanBinder.java
+++ b/server/src/main/java/com/vaadin/data/BeanBinder.java
@@ -464,7 +464,7 @@ public class BeanBinder<BEAN> extends Binder<BEAN> {
memberField.getName(),
objectWithMemberFields.getClass().getName()));
}
- if (propertyType.equals(valueType)) {
+ if (propertyType.equals(GenericTypeReflector.erase(valueType))) {
HasValue<?> field;
// Get the field from the object
try {
@@ -485,7 +485,7 @@ public class BeanBinder<BEAN> extends Binder<BEAN> {
throw new IllegalStateException(String.format(
"Property type '%s' doesn't "
+ "match the field type '%s'. "
- + "Binding should be configured manulaly using converter.",
+ + "Binding should be configured manually using converter.",
propertyType.getName(), valueType.getTypeName()));
}
}
diff --git a/server/src/test/java/com/vaadin/data/BeanBinderTest.java b/server/src/test/java/com/vaadin/data/BeanBinderTest.java
index fd15d3981c..14f32bd1ec 100644
--- a/server/src/test/java/com/vaadin/data/BeanBinderTest.java
+++ b/server/src/test/java/com/vaadin/data/BeanBinderTest.java
@@ -5,6 +5,7 @@ import static org.junit.Assert.assertSame;
import java.lang.reflect.Method;
import java.util.List;
+import java.util.Set;
import org.junit.Assert;
import org.junit.Before;
@@ -13,10 +14,30 @@ import org.junit.Test;
import com.vaadin.data.BeanBinder.BeanBindingBuilder;
import com.vaadin.data.Binder.BindingBuilder;
import com.vaadin.tests.data.bean.BeanToValidate;
+import com.vaadin.ui.CheckBoxGroup;
public class BeanBinderTest
extends BinderTestBase<BeanBinder<BeanToValidate>, BeanToValidate> {
+ private enum TestEnum {
+ }
+
+ private class TestClass {
+ private CheckBoxGroup<TestEnum> enums;
+ }
+
+ private class TestBean {
+ private Set<TestEnum> enums;
+
+ public Set<TestEnum> getEnums() {
+ return enums;
+ }
+
+ public void setEnums(Set<TestEnum> enums) {
+ this.enums = enums;
+ }
+ }
+
@Before
public void setUp() {
binder = new BeanBinder<>(BeanToValidate.class);
@@ -26,6 +47,13 @@ public class BeanBinderTest
}
@Test
+ public void bindInstanceFields_parameters_type_erased() {
+ BeanBinder<TestBean> otherBinder = new BeanBinder<>(TestBean.class);
+ TestClass testClass = new TestClass();
+ otherBinder.bindInstanceFields(testClass);
+ }
+
+ @Test
public void fieldBound_bindBean_fieldValueUpdated() {
binder.bind(nameField, "firstname");
binder.setBean(item);