diff options
-rw-r--r-- | server/src/main/java/com/vaadin/data/BeanBinder.java | 4 | ||||
-rw-r--r-- | server/src/test/java/com/vaadin/data/BeanBinderTest.java | 28 |
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); |