/** * Specify the {@link PropertyEditor custom editors} to register. * * * @param customEditors a map of Class to PropertyEditor (or class name to * PropertyEditor). * @see CustomEditorConfigurer#setCustomEditors(Map) */ @Override public void setCustomEditors(Map<? extends Object, ? extends PropertyEditor> customEditors) { this.isCustomEditorsSet = true; super.setCustomEditors(customEditors); }
@Test public void testSetCustomEditorsWithStringTypeName() throws Exception { DefaultPropertyEditorRegistrar mapper = new DefaultPropertyEditorRegistrar(); mapper.setCustomEditors(Collections.singletonMap("java.lang.Long", new CustomNumberEditor(Long.class, true))); BeanWithIntArray result = new BeanWithIntArray(); BeanWrapperImpl wrapper = new BeanWrapperImpl(result); mapper.registerCustomEditors(wrapper); wrapper.setPropertyValues(new MutablePropertyValues(Collections.singletonMap("number", "123"))); assertEquals(123L, result.number); }
@Test(expected = IllegalArgumentException.class) public void testSetCustomEditorsWithInvalidTypeName() throws Exception { DefaultPropertyEditorRegistrar mapper = new DefaultPropertyEditorRegistrar(); mapper.setCustomEditors(Collections.singletonMap("FOO", new CustomNumberEditor(Long.class, true))); }
@Test public void testIntArray() throws Exception { DefaultPropertyEditorRegistrar mapper = new DefaultPropertyEditorRegistrar(); BeanWithIntArray result = new BeanWithIntArray(); mapper.setCustomEditors(Collections.singletonMap(int[].class, new IntArrayPropertyEditor())); BeanWrapperImpl wrapper = new BeanWrapperImpl(result); mapper.registerCustomEditors(wrapper); PropertiesEditor editor = new PropertiesEditor(); editor.setAsText("numbers=1,2,3, 4"); Properties props = (Properties) editor.getValue(); wrapper.setPropertyValues(props); assertEquals(4, result.numbers[3]); }
@Test(expected = IllegalArgumentException.class) public void testSetCustomEditorsWithInvalidType() throws Exception { DefaultPropertyEditorRegistrar mapper = new DefaultPropertyEditorRegistrar(); mapper.setCustomEditors(Collections.singletonMap(new Object(), new CustomNumberEditor(Long.class, true))); }
/** * Specify the {@link PropertyEditor custom editors} to register. * * * @param customEditors a map of Class to PropertyEditor (or class name to * PropertyEditor). * @see CustomEditorConfigurer#setCustomEditors(Map) */ @Override public void setCustomEditors(Map<? extends Object, ? extends PropertyEditor> customEditors) { this.isCustomEditorsSet = true; super.setCustomEditors(customEditors); }