소스 검색

Erase type of BeanBinder#bindInstanceFields parameter in equality test

Fixes vaadin/framework8-issues#466
tags/8.0.0.alpha9^0
Aleksi Hietanen 7 년 전
부모
커밋
d0184c4ccd
2개의 변경된 파일30개의 추가작업 그리고 2개의 파일을 삭제
  1. 2
    2
      server/src/main/java/com/vaadin/data/BeanBinder.java
  2. 28
    0
      server/src/test/java/com/vaadin/data/BeanBinderTest.java

+ 2
- 2
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()));
}
}

+ 28
- 0
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);
@@ -25,6 +46,13 @@ public class BeanBinderTest
item.setAge(32);
}

@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");

Loading…
취소
저장