From d0184c4ccdbf8fac8b15898a37a409a718c7eb7f Mon Sep 17 00:00:00 2001 From: Aleksi Hietanen Date: Fri, 9 Dec 2016 17:24:01 +0200 Subject: [PATCH] Erase type of BeanBinder#bindInstanceFields parameter in equality test Fixes vaadin/framework8-issues#466 --- .../main/java/com/vaadin/data/BeanBinder.java | 4 +-- .../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 extends Binder { 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 extends Binder { 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, BeanToValidate> { + private enum TestEnum { + } + + private class TestClass { + private CheckBoxGroup enums; + } + + private class TestBean { + private Set enums; + + public Set getEnums() { + return enums; + } + + public void setEnums(Set enums) { + this.enums = enums; + } + } + @Before public void setUp() { binder = new BeanBinder<>(BeanToValidate.class); @@ -25,6 +46,13 @@ public class BeanBinderTest item.setAge(32); } + @Test + public void bindInstanceFields_parameters_type_erased() { + BeanBinder otherBinder = new BeanBinder<>(TestBean.class); + TestClass testClass = new TestClass(); + otherBinder.bindInstanceFields(testClass); + } + @Test public void fieldBound_bindBean_fieldValueUpdated() { binder.bind(nameField, "firstname"); -- 2.39.5