bean wrapper integration to support view->model binding with mvc semantics

This commit is contained in:
Keith Donald
2008-07-03 04:27:45 +00:00
parent ee5db9da1f
commit bd52e13813
15 changed files with 789 additions and 353 deletions

View File

@@ -208,87 +208,357 @@ public class DefaultConversionServiceTests extends TestCase {
assertEquals("1,2,3", result);
}
/*
*
* public void testArrayListConversionWithElementConversion() throws Exception { DefaultConversionService service =
* new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(String[].class,
* IntegerArrayList.class); List result = (List) executor.execute(new String[] { "1", "2", "3" }); assertEquals(new
* Integer(1), result.get(0)); assertEquals(new Integer(2), result.get(1)); assertEquals(new Integer(3),
* result.get(2)); }
*
*
* public static class IntegerArrayList implements List<Integer> {
*
* private ArrayList realList = new ArrayList();
*
* public IntegerArrayList() { }
*
* public void add(int index, Integer element) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public boolean add(Integer o) { return realList.add(o); }
*
* public boolean addAll(Collection<? extends Integer> c) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public boolean addAll(int index, Collection<? extends Integer> c) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public void clear() { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated
* method stub"); }
*
* public boolean contains(Object o) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public boolean containsAll(Collection<?> c) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public Integer get(int index) { return (Integer) realList.get(index); }
*
* public int indexOf(Object o) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public boolean isEmpty() { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public Iterator<Integer> iterator() { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public int lastIndexOf(Object o) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public ListIterator<Integer> listIterator() { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public ListIterator<Integer> listIterator(int index) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public Integer remove(int index) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public boolean remove(Object o) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public boolean removeAll(Collection<?> c) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public boolean retainAll(Collection<?> c) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public Integer set(int index, Integer element) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public int size() { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated
* method stub"); }
*
* public List<Integer> subList(int fromIndex, int toIndex) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public Object[] toArray() { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); }
*
* public <T> T[] toArray(T[] a) { // TODO Auto-generated method stub throw new
* UnsupportedOperationException("Auto-generated method stub"); } }
*/
// public void testGenericTypeConversionOGNL() {
// DefaultConversionService service = new DefaultConversionService();
// Map map = new HashMap();
// map.put("stringArray", new String[] { "1", "2", "3" });
// map.put("string", "1");
// TestBean bean = new TestBean();
// OgnlExpressionParser parser = new OgnlExpressionParser();
// Expression stringArray = parser.parseExpression("stringArray", null);
// Expression integerList = parser.parseExpression("integerList", null);
// DefaultMappingContext context = new DefaultMappingContext(map, bean, service);
// DefaultMapping mapping = new DefaultMapping(stringArray, integerList);
// mapping.map(context);
// assertEquals(new Integer(1), bean.getIntegerList().get(0));
// assertEquals(new Integer(2), bean.getIntegerList().get(1));
// assertEquals(new Integer(3), bean.getIntegerList().get(2));
// }
//
// public void testGenericTypeConversionBeanWrapper() {
// DefaultConversionService service = new DefaultConversionService();
// Map map = new HashMap();
// map.put("stringArray", new String[] { "1", "2", "3" });
// map.put("string", "1");
// CollectionWrapperBean wrapper = new CollectionWrapperBean(map);
// TestBean bean = new TestBean();
// BeanWrapperExpressionParser parser = new BeanWrapperExpressionParser();
// Expression stringArray = parser.parseExpression("map[stringArray]", null);
// Expression integerList = parser.parseExpression("integerList", null);
// DefaultMappingContext context = new DefaultMappingContext(wrapper, bean, service);
// DefaultMapping mapping = new DefaultMapping(stringArray, integerList);
// mapping.map(context);
// assertEquals(new Integer(1), bean.getIntegerList().get(0));
// assertEquals(new Integer(2), bean.getIntegerList().get(1));
// assertEquals(new Integer(3), bean.getIntegerList().get(2));
// }
//
// public void testGenericTypeConversionBeanWrapperWithCustomConversion() {
// DefaultConversionService service = new DefaultConversionService();
// service.addConverter(new StringToAuthority());
// Map map = new HashMap();
// map.put("authorityArray", new String[] { "keith", "keri", "annabelle" });
// CollectionWrapperBean wrapper = new CollectionWrapperBean(map);
// TestBean bean = new TestBean();
// BeanWrapperExpressionParser parser = new BeanWrapperExpressionParser();
// parser.setConversionService(service);
// Expression authorityArray = parser.parseExpression("map[authorityArray]", null);
// Expression authorityList = parser.parseExpression("authorityList", null);
// DefaultMappingContext context = new DefaultMappingContext(wrapper, bean, service);
// DefaultMapping mapping = new DefaultMapping(authorityArray, authorityList);
// mapping.map(context);
// assertEquals(new Authority("keith"), bean.getAuthorityList().get(0));
// assertEquals(new Authority("keri"), bean.getAuthorityList().get(1));
// assertEquals(new Authority("annabelle"), bean.getAuthorityList().get(2));
// }
//
// public void testGenericTypeConversionBeanWrapperWithNestedCustomConversion() {
// DefaultConversionService service = new DefaultConversionService();
// service.addConverter(new StringToAuthority());
// Map map = new HashMap();
// map.put("foo", "keith");
// CollectionWrapperBean wrapper = new CollectionWrapperBean(map);
// TestBean bean = new TestBean();
// BeanWrapperExpressionParser parser = new BeanWrapperExpressionParser();
// parser.setConversionService(service);
// Expression keith = parser.parseExpression("map[foo]", null);
// Expression nestedMapEntry = parser.parseExpression("nested[0][0]", null);
// DefaultMappingContext context = new DefaultMappingContext(wrapper, bean, service);
// DefaultMapping mapping = new DefaultMapping(keith, nestedMapEntry);
// mapping.map(context);
// assertEquals(new Authority("keith"), bean.getNested().get(0).get(0));
// }
//
// public void testGenericTypeConversionEL() {
// DefaultConversionService service = new DefaultConversionService();
// Map map = new HashMap();
// map.put("stringArray", new String[] { "1", "2", "3" });
// map.put("string", "1");
// TestBean bean = new TestBean();
// ELExpressionParser parser = new ELExpressionParser(new ExpressionFactoryImpl());
// Expression stringArray = parser.parseExpression("stringArray", null);
// Expression integerList = parser.parseExpression("integerList", null);
// DefaultMappingContext context = new DefaultMappingContext(map, bean, service);
// DefaultMapping mapping = new DefaultMapping(stringArray, integerList);
// mapping.map(context);
// assertEquals(new Integer(1), bean.getIntegerList().get(0));
// assertEquals(new Integer(2), bean.getIntegerList().get(1));
// assertEquals(new Integer(3), bean.getIntegerList().get(2));
// }
//
// public void testArrayConversionOGNL() {
// DefaultConversionService service = new DefaultConversionService();
// Map map = new HashMap();
// map.put("integerArray", new Integer[] { 1, 2, 3 });
// map.put("string", "1");
// TestBean bean = new TestBean();
// OgnlExpressionParser parser = new OgnlExpressionParser();
// Expression stringArray = parser.parseExpression("integerArray", null);
// Expression integerList = parser.parseExpression("primitiveArray", null);
// DefaultMappingContext context = new DefaultMappingContext(map, bean, service);
// DefaultMapping mapping = new DefaultMapping(stringArray, integerList);
// mapping.map(context);
// }
//
// public void testArrayConversionEL() {
// DefaultConversionService service = new DefaultConversionService();
// Map map = new HashMap();
// map.put("stringArray", new String[] { "1", "2", "3" });
// map.put("string", "1");
// TestBean bean = new TestBean();
// ELExpressionParser parser = new ELExpressionParser(new ExpressionFactoryImpl());
// Expression stringArray = parser.parseExpression("stringArray", null);
// Expression integerList = parser.parseExpression("primitiveArray", null);
// DefaultMappingContext context = new DefaultMappingContext(map, bean, service);
// DefaultMapping mapping = new DefaultMapping(stringArray, integerList);
// mapping.map(context);
// }
//
// public static class CollectionWrapperBean {
//
// private Collection collection;
//
// private Map map;
//
// public CollectionWrapperBean(Map map) {
// this.map = map;
// }
//
// public CollectionWrapperBean(Collection collection) {
// this.collection = collection;
// }
//
// public Collection getCollection() {
// return collection;
// }
//
// public Map getMap() {
// return map;
// }
// }
//
// public static class TestBean {
//
// private List<Integer> integerList;
//
// private int primitive;
//
// private int[] primitiveArray;
//
// private List<Authority> authorityList;
//
// private List<Map<Integer, Authority>> nested;
//
// public TestBean() {
// nested = new ArrayList<Map<Integer, Authority>>();
// nested.add(new HashMap<Integer, Authority>());
// nested.get(0).put(0, new Authority("bubba"));
// }
//
// public List<Integer> getIntegerList() {
// return integerList;
// }
//
// public void setIntegerList(List<Integer> integerList) {
// this.integerList = integerList;
// }
//
// public int getPrimitive() {
// return primitive;
// }
//
// public void setPrimitive(int primitive) {
// this.primitive = primitive;
// }
//
// public int[] getPrimitiveArray() {
// return primitiveArray;
// }
//
// public void setPrimitiveArray(int[] primitiveArray) {
// this.primitiveArray = primitiveArray;
// }
//
// public List<Authority> getAuthorityList() {
// return authorityList;
// }
//
// public void setAuthorityList(List<Authority> authorityList) {
// this.authorityList = authorityList;
// }
//
// // nested[0][1]
// public List<Map<Integer, Authority>> getNested() {
// return nested;
// }
//
// public void setNested(List<Map<Integer, Authority>> nested) {
// this.nested = nested;
// }
//
// }
//
// public static class Authority {
// private String name;
//
// public Authority(String name) {
// this.name = name;
// }
//
// public String getName() {
// return name;
// }
//
// public boolean equals(Object o) {
// if (!(o instanceof Authority)) {
// return false;
// }
// Authority auth = (Authority) o;
// return name.equals(auth.name);
// }
//
// public int hashCode() {
// return name.hashCode();
// }
//
// public String toString() {
// return name;
// }
// }
//
// public static class StringToAuthority extends StringToObject {
//
// public StringToAuthority() {
// super(Authority.class);
// }
//
// protected Object toObject(String string, Class targetClass) throws Exception {
// return new Authority(string);
// }
//
// protected String toString(Object object) throws Exception {
// return object.toString();
// }
//
// }
// public void testArrayListConversionWithElementConversion() throws Exception {
// DefaultConversionService service = new DefaultConversionService();
// ConversionExecutor executor = service.getConversionExecutor(String[].class, IntegerArrayList.class);
// List result = (List) executor.execute(new String[] { "1", "2", "3" });
// assertEquals(new Integer(1), result.get(0));
// assertEquals(new Integer(2), result.get(1));
// assertEquals(new Integer(3), result.get(2));
// }
//
// public static class IntegerArrayList implements List<Integer> {
//
// private ArrayList realList = new ArrayList();
//
// public IntegerArrayList() {
// }
//
// public void add(int index, Integer element) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public boolean add(Integer o) {
// return realList.add(o);
// }
//
// public boolean addAll(Collection<? extends Integer> c) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public boolean addAll(int index, Collection<? extends Integer> c) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public void clear() {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public boolean contains(Object o) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public boolean containsAll(Collection<?> c) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public Integer get(int index) {
// return (Integer) realList.get(index);
// }
//
// public int indexOf(Object o) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public boolean isEmpty() {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public Iterator<Integer> iterator() {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public int lastIndexOf(Object o) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public ListIterator<Integer> listIterator() {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public ListIterator<Integer> listIterator(int index) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public Integer remove(int index) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public boolean remove(Object o) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public boolean removeAll(Collection<?> c) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public boolean retainAll(Collection<?> c) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public Integer set(int index, Integer element) {
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public int size() { // TODO Auto-generated method stu
// throw new UnsupportedOperationException("Auto-generatedmethod stub");
// }
//
// public List<Integer> subList(int fromIndex, int toIndex) { // TODO Auto-generated method stub throw new
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public Object[] toArray() { // TODO Auto-generated method stub throw new
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
//
// public <T> T[] toArray(T[] a) { // TODO Auto-generated method stub throw new
// throw new UnsupportedOperationException("Auto-generated method stub");
// }
// }
}