bean properties of type enum array/collection can be populated with comma-separated String (SPR-6547)

This commit is contained in:
Juergen Hoeller
2009-12-13 13:21:30 +00:00
parent b497f6ccad
commit 5f9b444319
3 changed files with 89 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2008 the original author or authors.
* Copyright 2002-2009 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,9 +17,7 @@
package org.springframework.beans;
import static org.junit.Assert.*;
import org.junit.Test;
import test.beans.CustomEnum;
import test.beans.GenericBean;
@@ -53,4 +51,62 @@ public final class BeanWrapperEnumTests {
assertEquals(null, gb.getCustomEnum());
}
@Test
public void testCustomEnumArrayWithSingleValue() {
GenericBean<?> gb = new GenericBean<Object>();
BeanWrapper bw = new BeanWrapperImpl(gb);
bw.setPropertyValue("customEnumArray", "VALUE_1");
assertEquals(1, gb.getCustomEnumArray().length);
assertEquals(CustomEnum.VALUE_1, gb.getCustomEnumArray()[0]);
}
@Test
public void testCustomEnumArrayWithMultipleValues() {
GenericBean<?> gb = new GenericBean<Object>();
BeanWrapper bw = new BeanWrapperImpl(gb);
bw.setPropertyValue("customEnumArray", new String[] {"VALUE_1", "VALUE_2"});
assertEquals(2, gb.getCustomEnumArray().length);
assertEquals(CustomEnum.VALUE_1, gb.getCustomEnumArray()[0]);
assertEquals(CustomEnum.VALUE_2, gb.getCustomEnumArray()[1]);
}
@Test
public void testCustomEnumArrayWithMultipleValuesAsCsv() {
GenericBean<?> gb = new GenericBean<Object>();
BeanWrapper bw = new BeanWrapperImpl(gb);
bw.setPropertyValue("customEnumArray", "VALUE_1,VALUE_2");
assertEquals(2, gb.getCustomEnumArray().length);
assertEquals(CustomEnum.VALUE_1, gb.getCustomEnumArray()[0]);
assertEquals(CustomEnum.VALUE_2, gb.getCustomEnumArray()[1]);
}
@Test
public void testCustomEnumSetWithSingleValue() {
GenericBean<?> gb = new GenericBean<Object>();
BeanWrapper bw = new BeanWrapperImpl(gb);
bw.setPropertyValue("customEnumSet", "VALUE_1");
assertEquals(1, gb.getCustomEnumSet().size());
assertTrue(gb.getCustomEnumSet().contains(CustomEnum.VALUE_1));
}
@Test
public void testCustomEnumSetWithMultipleValues() {
GenericBean<?> gb = new GenericBean<Object>();
BeanWrapper bw = new BeanWrapperImpl(gb);
bw.setPropertyValue("customEnumSet", new String[] {"VALUE_1", "VALUE_2"});
assertEquals(2, gb.getCustomEnumSet().size());
assertTrue(gb.getCustomEnumSet().contains(CustomEnum.VALUE_1));
assertTrue(gb.getCustomEnumSet().contains(CustomEnum.VALUE_2));
}
@Test
public void testCustomEnumSetWithMultipleValuesAsCsv() {
GenericBean<?> gb = new GenericBean<Object>();
BeanWrapper bw = new BeanWrapperImpl(gb);
bw.setPropertyValue("customEnumSet", "VALUE_1,VALUE_2");
assertEquals(2, gb.getCustomEnumSet().size());
assertTrue(gb.getCustomEnumSet().contains(CustomEnum.VALUE_1));
assertTrue(gb.getCustomEnumSet().contains(CustomEnum.VALUE_2));
}
}

View File

@@ -60,11 +60,14 @@ public class GenericBean<T> {
private CustomEnum customEnum;
private CustomEnum[] customEnumArray;
private Set<CustomEnum> customEnumSet;
private T genericProperty;
private List<T> genericListProperty;
public GenericBean() {
}
@@ -225,6 +228,22 @@ public class GenericBean<T> {
this.customEnum = customEnum;
}
public CustomEnum[] getCustomEnumArray() {
return customEnumArray;
}
public void setCustomEnumArray(CustomEnum[] customEnum) {
this.customEnumArray = customEnum;
}
public Set<CustomEnum> getCustomEnumSet() {
return customEnumSet;
}
public void setCustomEnumSet(Set<CustomEnum> customEnumSet) {
this.customEnumSet = customEnumSet;
}
public static GenericBean createInstance(Set<Integer> integerSet) {
return new GenericBean(integerSet);
}