use of cn.taketoday.beans.BeanWrapper in project today-framework by TAKETODAY.
the class CustomEditorTests method testComplexObjectWithOldValueAccess.
@Test
void testComplexObjectWithOldValueAccess() {
TestBean tb = new TestBean();
String newName = "Rod";
String tbString = "Kerry_34";
BeanWrapper bw = new BeanWrapperImpl(tb);
bw.setExtractOldValueForEditor(true);
bw.registerCustomEditor(ITestBean.class, new OldValueAccessingTestBeanEditor());
PropertyValues pvs = new PropertyValues();
pvs.add(new PropertyValue("age", 55));
pvs.add(new PropertyValue("name", newName));
pvs.add(new PropertyValue("touchy", "valid"));
pvs.add(new PropertyValue("spouse", tbString));
bw.setPropertyValues(pvs);
assertThat(tb.getSpouse()).as("spouse is non-null").isNotNull();
assertThat(tb.getSpouse().getName().equals("Kerry") && tb.getSpouse().getAge() == 34).as("spouse name is Kerry and age is 34").isTrue();
ITestBean spouse = tb.getSpouse();
bw.setPropertyValues(pvs);
assertThat(tb.getSpouse()).as("Should have remained same object").isSameAs(spouse);
}
use of cn.taketoday.beans.BeanWrapper in project today-framework by TAKETODAY.
the class CustomEditorTests method testConversionToOldCollections.
@Test
void testConversionToOldCollections() throws PropertyVetoException {
OldCollectionsBean tb = new OldCollectionsBean();
BeanWrapper bw = new BeanWrapperImpl(tb);
bw.registerCustomEditor(Vector.class, new CustomCollectionEditor(Vector.class));
bw.registerCustomEditor(Hashtable.class, new CustomMapEditor(Hashtable.class));
bw.setPropertyValue("vector", new String[] { "a", "b" });
assertThat(tb.getVector().size()).isEqualTo(2);
assertThat(tb.getVector().get(0)).isEqualTo("a");
assertThat(tb.getVector().get(1)).isEqualTo("b");
bw.setPropertyValue("hashtable", Collections.singletonMap("foo", "bar"));
assertThat(tb.getHashtable().size()).isEqualTo(1);
assertThat(tb.getHashtable().get("foo")).isEqualTo("bar");
}
use of cn.taketoday.beans.BeanWrapper in project today-framework by TAKETODAY.
the class CustomEditorTests method testArrayToArrayConversion.
@Test
void testArrayToArrayConversion() throws PropertyVetoException {
IndexedTestBean tb = new IndexedTestBean();
BeanWrapper bw = new BeanWrapperImpl(tb);
bw.registerCustomEditor(TestBean.class, new PropertyEditorSupport() {
@Override
public void setAsText(String text) throws IllegalArgumentException {
setValue(new TestBean(text, 99));
}
});
bw.setPropertyValue("array", new String[] { "a", "b" });
assertThat(tb.getArray().length).isEqualTo(2);
assertThat(tb.getArray()[0].getName()).isEqualTo("a");
assertThat(tb.getArray()[1].getName()).isEqualTo("b");
}
use of cn.taketoday.beans.BeanWrapper in project today-framework by TAKETODAY.
the class CustomEditorTests method testCustomNumberEditorWithAllowEmpty.
@Test
void testCustomNumberEditorWithAllowEmpty() {
NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN);
NumberTestBean tb = new NumberTestBean();
BeanWrapper bw = new BeanWrapperImpl(tb);
bw.registerCustomEditor(long.class, new CustomNumberEditor(Long.class, nf, true));
bw.registerCustomEditor(Long.class, new CustomNumberEditor(Long.class, nf, true));
bw.setPropertyValue("long1", "5");
bw.setPropertyValue("long2", "6");
assertThat(Long.valueOf("5").equals(bw.getPropertyValue("long1"))).as("Correct long1 value").isTrue();
assertThat(tb.getLong1() == 5).as("Correct long1 value").isTrue();
assertThat(Long.valueOf("6").equals(bw.getPropertyValue("long2"))).as("Correct long2 value").isTrue();
assertThat(Long.valueOf("6").equals(tb.getLong2())).as("Correct long2 value").isTrue();
bw.setPropertyValue("long2", "");
assertThat(bw.getPropertyValue("long2") == null).as("Correct long2 value").isTrue();
assertThat(tb.getLong2() == null).as("Correct long2 value").isTrue();
assertThatExceptionOfType(BeansException.class).isThrownBy(() -> bw.setPropertyValue("long1", ""));
assertThat(bw.getPropertyValue("long1")).isEqualTo(5L);
assertThat(tb.getLong1()).isEqualTo(5);
}
use of cn.taketoday.beans.BeanWrapper in project today-framework by TAKETODAY.
the class CustomEditorTests method testCharacterEditor.
@Test
void testCharacterEditor() {
CharBean cb = new CharBean();
BeanWrapper bw = new BeanWrapperImpl(cb);
bw.setPropertyValue("myChar", Character.valueOf('c'));
assertThat(cb.getMyChar()).isEqualTo('c');
bw.setPropertyValue("myChar", "c");
assertThat(cb.getMyChar()).isEqualTo('c');
bw.setPropertyValue("myChar", "\u0041");
assertThat(cb.getMyChar()).isEqualTo('A');
bw.setPropertyValue("myChar", "\\u0022");
assertThat(cb.getMyChar()).isEqualTo('"');
CharacterEditor editor = new CharacterEditor(false);
editor.setAsText("M");
assertThat(editor.getAsText()).isEqualTo("M");
}
Aggregations