Search in sources :

Example 1 with CustomNumberEditor

use of org.springframework.beans.propertyeditors.CustomNumberEditor in project spring-framework by spring-projects.

the class BeanFactoryGenericsTests method testGenericMapWithCollectionValueFactoryMethod.

@Test
public void testGenericMapWithCollectionValueFactoryMethod() throws MalformedURLException {
    DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
    bf.addPropertyEditorRegistrar(new PropertyEditorRegistrar() {

        @Override
        public void registerCustomEditors(PropertyEditorRegistry registry) {
            registry.registerCustomEditor(Number.class, new CustomNumberEditor(Integer.class, false));
        }
    });
    RootBeanDefinition rbd = new RootBeanDefinition(GenericBean.class);
    rbd.setFactoryMethodName("createInstance");
    Map<String, AbstractCollection<?>> input = new HashMap<>();
    HashSet<Integer> value1 = new HashSet<>();
    value1.add(new Integer(1));
    input.put("1", value1);
    ArrayList<Boolean> value2 = new ArrayList<>();
    value2.add(Boolean.TRUE);
    input.put("2", value2);
    rbd.getConstructorArgumentValues().addGenericArgumentValue(Boolean.TRUE);
    rbd.getConstructorArgumentValues().addGenericArgumentValue(input);
    bf.registerBeanDefinition("genericBean", rbd);
    GenericBean<?> gb = (GenericBean<?>) bf.getBean("genericBean");
    assertTrue(gb.getCollectionMap().get(new Integer(1)) instanceof HashSet);
    assertTrue(gb.getCollectionMap().get(new Integer(2)) instanceof ArrayList);
}
Also used : CustomNumberEditor(org.springframework.beans.propertyeditors.CustomNumberEditor) PropertyEditorRegistry(org.springframework.beans.PropertyEditorRegistry) HashMap(java.util.HashMap) PropertyEditorRegistrar(org.springframework.beans.PropertyEditorRegistrar) AbstractCollection(java.util.AbstractCollection) ArrayList(java.util.ArrayList) GenericBean(org.springframework.tests.sample.beans.GenericBean) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 2 with CustomNumberEditor

use of org.springframework.beans.propertyeditors.CustomNumberEditor in project spring-framework by spring-projects.

the class PropertyEditorRegistrySupport method createDefaultEditors.

/**
	 * Actually register the default editors for this registry instance.
	 */
private void createDefaultEditors() {
    this.defaultEditors = new HashMap<>(64);
    // Simple editors, without parameterization capabilities.
    // The JDK does not contain a default editor for any of these target types.
    this.defaultEditors.put(Charset.class, new CharsetEditor());
    this.defaultEditors.put(Class.class, new ClassEditor());
    this.defaultEditors.put(Class[].class, new ClassArrayEditor());
    this.defaultEditors.put(Currency.class, new CurrencyEditor());
    this.defaultEditors.put(File.class, new FileEditor());
    this.defaultEditors.put(InputStream.class, new InputStreamEditor());
    this.defaultEditors.put(InputSource.class, new InputSourceEditor());
    this.defaultEditors.put(Locale.class, new LocaleEditor());
    this.defaultEditors.put(Path.class, new PathEditor());
    this.defaultEditors.put(Pattern.class, new PatternEditor());
    this.defaultEditors.put(Properties.class, new PropertiesEditor());
    this.defaultEditors.put(Reader.class, new ReaderEditor());
    this.defaultEditors.put(Resource[].class, new ResourceArrayPropertyEditor());
    this.defaultEditors.put(TimeZone.class, new TimeZoneEditor());
    this.defaultEditors.put(URI.class, new URIEditor());
    this.defaultEditors.put(URL.class, new URLEditor());
    this.defaultEditors.put(UUID.class, new UUIDEditor());
    this.defaultEditors.put(ZoneId.class, new ZoneIdEditor());
    // Default instances of collection editors.
    // Can be overridden by registering custom instances of those as custom editors.
    this.defaultEditors.put(Collection.class, new CustomCollectionEditor(Collection.class));
    this.defaultEditors.put(Set.class, new CustomCollectionEditor(Set.class));
    this.defaultEditors.put(SortedSet.class, new CustomCollectionEditor(SortedSet.class));
    this.defaultEditors.put(List.class, new CustomCollectionEditor(List.class));
    this.defaultEditors.put(SortedMap.class, new CustomMapEditor(SortedMap.class));
    // Default editors for primitive arrays.
    this.defaultEditors.put(byte[].class, new ByteArrayPropertyEditor());
    this.defaultEditors.put(char[].class, new CharArrayPropertyEditor());
    // The JDK does not contain a default editor for char!
    this.defaultEditors.put(char.class, new CharacterEditor(false));
    this.defaultEditors.put(Character.class, new CharacterEditor(true));
    // Spring's CustomBooleanEditor accepts more flag values than the JDK's default editor.
    this.defaultEditors.put(boolean.class, new CustomBooleanEditor(false));
    this.defaultEditors.put(Boolean.class, new CustomBooleanEditor(true));
    // The JDK does not contain default editors for number wrapper types!
    // Override JDK primitive number editors with our own CustomNumberEditor.
    this.defaultEditors.put(byte.class, new CustomNumberEditor(Byte.class, false));
    this.defaultEditors.put(Byte.class, new CustomNumberEditor(Byte.class, true));
    this.defaultEditors.put(short.class, new CustomNumberEditor(Short.class, false));
    this.defaultEditors.put(Short.class, new CustomNumberEditor(Short.class, true));
    this.defaultEditors.put(int.class, new CustomNumberEditor(Integer.class, false));
    this.defaultEditors.put(Integer.class, new CustomNumberEditor(Integer.class, true));
    this.defaultEditors.put(long.class, new CustomNumberEditor(Long.class, false));
    this.defaultEditors.put(Long.class, new CustomNumberEditor(Long.class, true));
    this.defaultEditors.put(float.class, new CustomNumberEditor(Float.class, false));
    this.defaultEditors.put(Float.class, new CustomNumberEditor(Float.class, true));
    this.defaultEditors.put(double.class, new CustomNumberEditor(Double.class, false));
    this.defaultEditors.put(Double.class, new CustomNumberEditor(Double.class, true));
    this.defaultEditors.put(BigDecimal.class, new CustomNumberEditor(BigDecimal.class, true));
    this.defaultEditors.put(BigInteger.class, new CustomNumberEditor(BigInteger.class, true));
    // Only register config value editors if explicitly requested.
    if (this.configValueEditorsActive) {
        StringArrayPropertyEditor sae = new StringArrayPropertyEditor();
        this.defaultEditors.put(String[].class, sae);
        this.defaultEditors.put(short[].class, sae);
        this.defaultEditors.put(int[].class, sae);
        this.defaultEditors.put(long[].class, sae);
    }
}
Also used : FileEditor(org.springframework.beans.propertyeditors.FileEditor) SortedSet(java.util.SortedSet) Set(java.util.Set) CustomBooleanEditor(org.springframework.beans.propertyeditors.CustomBooleanEditor) InputStreamEditor(org.springframework.beans.propertyeditors.InputStreamEditor) LocaleEditor(org.springframework.beans.propertyeditors.LocaleEditor) InputSourceEditor(org.springframework.beans.propertyeditors.InputSourceEditor) SortedSet(java.util.SortedSet) ReaderEditor(org.springframework.beans.propertyeditors.ReaderEditor) StringArrayPropertyEditor(org.springframework.beans.propertyeditors.StringArrayPropertyEditor) CharsetEditor(org.springframework.beans.propertyeditors.CharsetEditor) ZoneIdEditor(org.springframework.beans.propertyeditors.ZoneIdEditor) List(java.util.List) LinkedList(java.util.LinkedList) TimeZoneEditor(org.springframework.beans.propertyeditors.TimeZoneEditor) PropertiesEditor(org.springframework.beans.propertyeditors.PropertiesEditor) UUIDEditor(org.springframework.beans.propertyeditors.UUIDEditor) CustomNumberEditor(org.springframework.beans.propertyeditors.CustomNumberEditor) CurrencyEditor(org.springframework.beans.propertyeditors.CurrencyEditor) Resource(org.springframework.core.io.Resource) URIEditor(org.springframework.beans.propertyeditors.URIEditor) ByteArrayPropertyEditor(org.springframework.beans.propertyeditors.ByteArrayPropertyEditor) ClassArrayEditor(org.springframework.beans.propertyeditors.ClassArrayEditor) ClassEditor(org.springframework.beans.propertyeditors.ClassEditor) ResourceArrayPropertyEditor(org.springframework.core.io.support.ResourceArrayPropertyEditor) CharArrayPropertyEditor(org.springframework.beans.propertyeditors.CharArrayPropertyEditor) BigDecimal(java.math.BigDecimal) PathEditor(org.springframework.beans.propertyeditors.PathEditor) CharacterEditor(org.springframework.beans.propertyeditors.CharacterEditor) BigInteger(java.math.BigInteger) CustomCollectionEditor(org.springframework.beans.propertyeditors.CustomCollectionEditor) PatternEditor(org.springframework.beans.propertyeditors.PatternEditor) SortedMap(java.util.SortedMap) Collection(java.util.Collection) BigInteger(java.math.BigInteger) CustomMapEditor(org.springframework.beans.propertyeditors.CustomMapEditor) URLEditor(org.springframework.beans.propertyeditors.URLEditor)

Example 3 with CustomNumberEditor

use of org.springframework.beans.propertyeditors.CustomNumberEditor in project spring-framework by spring-projects.

the class DefaultListableBeanFactoryTests method testCustomEditor.

@Test
public void testCustomEditor() {
    DefaultListableBeanFactory lbf = new DefaultListableBeanFactory();
    lbf.addPropertyEditorRegistrar(new PropertyEditorRegistrar() {

        @Override
        public void registerCustomEditors(PropertyEditorRegistry registry) {
            NumberFormat nf = NumberFormat.getInstance(Locale.GERMAN);
            registry.registerCustomEditor(Float.class, new CustomNumberEditor(Float.class, nf, true));
        }
    });
    MutablePropertyValues pvs = new MutablePropertyValues();
    pvs.add("myFloat", "1,1");
    RootBeanDefinition bd = new RootBeanDefinition(TestBean.class);
    bd.setPropertyValues(pvs);
    lbf.registerBeanDefinition("testBean", bd);
    TestBean testBean = (TestBean) lbf.getBean("testBean");
    assertTrue(testBean.getMyFloat().floatValue() == 1.1f);
}
Also used : CustomNumberEditor(org.springframework.beans.propertyeditors.CustomNumberEditor) PropertyEditorRegistry(org.springframework.beans.PropertyEditorRegistry) ITestBean(org.springframework.tests.sample.beans.ITestBean) DerivedTestBean(org.springframework.tests.sample.beans.DerivedTestBean) TestBean(org.springframework.tests.sample.beans.TestBean) NestedTestBean(org.springframework.tests.sample.beans.NestedTestBean) MutablePropertyValues(org.springframework.beans.MutablePropertyValues) DefaultListableBeanFactory(org.springframework.beans.factory.support.DefaultListableBeanFactory) PropertyEditorRegistrar(org.springframework.beans.PropertyEditorRegistrar) RootBeanDefinition(org.springframework.beans.factory.support.RootBeanDefinition) NumberFormat(java.text.NumberFormat) Test(org.junit.Test)

Example 4 with CustomNumberEditor

use of org.springframework.beans.propertyeditors.CustomNumberEditor in project spring-framework by spring-projects.

the class BeanWrapperGenericsTests method testGenericMapWithCollectionValue.

@Test
public void testGenericMapWithCollectionValue() {
    GenericBean<?> gb = new GenericBean<>();
    BeanWrapper bw = new BeanWrapperImpl(gb);
    bw.registerCustomEditor(Number.class, new CustomNumberEditor(Integer.class, false));
    Map<String, Collection> input = new HashMap<>();
    HashSet<Integer> value1 = new HashSet<>();
    value1.add(new Integer(1));
    input.put("1", value1);
    ArrayList<Boolean> value2 = new ArrayList<>();
    value2.add(Boolean.TRUE);
    input.put("2", value2);
    bw.setPropertyValue("collectionMap", input);
    assertTrue(gb.getCollectionMap().get(new Integer(1)) instanceof HashSet);
    assertTrue(gb.getCollectionMap().get(new Integer(2)) instanceof ArrayList);
}
Also used : CustomNumberEditor(org.springframework.beans.propertyeditors.CustomNumberEditor) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) GenericBean(org.springframework.tests.sample.beans.GenericBean) Collection(java.util.Collection) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 5 with CustomNumberEditor

use of org.springframework.beans.propertyeditors.CustomNumberEditor in project spring-framework by spring-projects.

the class BeanWrapperGenericsTests method testGenericLowerBoundedSet.

@Test
public void testGenericLowerBoundedSet() {
    GenericBean<?> gb = new GenericBean<>();
    BeanWrapper bw = new BeanWrapperImpl(gb);
    bw.registerCustomEditor(Number.class, new CustomNumberEditor(Integer.class, true));
    Set<String> input = new HashSet<>();
    input.add("4");
    input.add("5");
    bw.setPropertyValue("numberSet", input);
    assertTrue(gb.getNumberSet().contains(new Integer(4)));
    assertTrue(gb.getNumberSet().contains(new Integer(5)));
}
Also used : CustomNumberEditor(org.springframework.beans.propertyeditors.CustomNumberEditor) GenericBean(org.springframework.tests.sample.beans.GenericBean) HashSet(java.util.HashSet) Test(org.junit.Test)

Aggregations

CustomNumberEditor (org.springframework.beans.propertyeditors.CustomNumberEditor)10 Test (org.junit.Test)9 HashSet (java.util.HashSet)5 GenericBean (org.springframework.tests.sample.beans.GenericBean)5 PropertyEditorRegistrar (org.springframework.beans.PropertyEditorRegistrar)4 PropertyEditorRegistry (org.springframework.beans.PropertyEditorRegistry)4 ArrayList (java.util.ArrayList)3 HashMap (java.util.HashMap)3 MutablePropertyValues (org.springframework.beans.MutablePropertyValues)3 BigInteger (java.math.BigInteger)2 NumberFormat (java.text.NumberFormat)2 AbstractCollection (java.util.AbstractCollection)2 Collection (java.util.Collection)2 DefaultListableBeanFactory (org.springframework.beans.factory.support.DefaultListableBeanFactory)2 RootBeanDefinition (org.springframework.beans.factory.support.RootBeanDefinition)2 BigDecimal (java.math.BigDecimal)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 Set (java.util.Set)1 SortedMap (java.util.SortedMap)1