SWF-1234 Integration with Spring 3 type conversion

This commit is contained in:
Rossen Stoyanchev
2010-05-04 11:12:32 +00:00
parent 7372b31184
commit de75aefc63
51 changed files with 630 additions and 743 deletions

View File

@@ -15,13 +15,11 @@
*/
package org.springframework.binding.convert.service;
import java.math.BigDecimal;
import java.security.Principal;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
@@ -60,7 +58,6 @@ public class DefaultConversionServiceTests extends TestCase {
DefaultConversionService service = new DefaultConversionService();
StaticConversionExecutor executor = (StaticConversionExecutor) service.getConversionExecutor(String.class,
Boolean.class);
assertNotSame(customConverter, executor.getConverter());
try {
executor.execute("ja");
fail();
@@ -69,7 +66,6 @@ public class DefaultConversionServiceTests extends TestCase {
}
service.addConverter(customConverter);
executor = (StaticConversionExecutor) service.getConversionExecutor(String.class, Boolean.class);
assertSame(customConverter, executor.getConverter());
assertTrue(((Boolean) executor.execute("ja")).booleanValue());
}
@@ -510,16 +506,20 @@ public class DefaultConversionServiceTests extends TestCase {
DefaultConversionService service = new DefaultConversionService();
ConversionExecutor executor = service.getConversionExecutor(String.class, String[].class);
String[] result = (String[]) executor.execute("1,2,3");
assertEquals(1, result.length);
assertEquals("1,2,3", result[0]);
assertEquals(3, result.length);
assertEquals("1", result[0]);
assertEquals("2", result[1]);
assertEquals("3", result[2]);
}
public void testStringToListConversion() {
DefaultConversionService service = new DefaultConversionService();
ConversionExecutor executor = service.getConversionExecutor(String.class, List.class);
List result = (List) executor.execute("1,2,3");
assertEquals(1, result.size());
assertEquals("1,2,3", result.get(0));
assertEquals(3, result.size());
assertEquals("1", result.get(0));
assertEquals("2", result.get(1));
assertEquals("3", result.get(2));
}
public void testStringToArrayConversionWithElementConversion() {
@@ -530,25 +530,6 @@ public class DefaultConversionServiceTests extends TestCase {
assertEquals(new Integer(123), result[0]);
}
public void testGetConversionExecutorsForSource() {
DefaultConversionService service1 = new DefaultConversionService();
service1.addConverter(new CustomConverter());
GenericConversionService service2 = new GenericConversionService();
FormattedStringToNumber formatterConverter = new FormattedStringToNumber(BigDecimal.class);
service2.addConverter(formatterConverter);
service2.setParent(service1);
Set converters = service2.getConversionExecutors(String.class);
Iterator it = converters.iterator();
while (it.hasNext()) {
ConversionExecutor executor = (ConversionExecutor) it.next();
if (executor.getTargetClass().equals(BigDecimal.class)) {
StaticConversionExecutor se = (StaticConversionExecutor) executor;
assertSame(formatterConverter, se.getConverter());
}
}
assertEquals(15, converters.size());
}
private static class CustomConverter implements Converter {
public Object convertSourceToTargetClass(final Object source, Class targetClass) throws Exception {

View File

@@ -18,6 +18,8 @@ package org.springframework.binding.expression.beanwrapper;
import junit.framework.TestCase;
import org.springframework.beans.TypeMismatchException;
import org.springframework.binding.convert.converters.StringToDate;
import org.springframework.binding.convert.service.GenericConversionService;
import org.springframework.binding.expression.Expression;
import org.springframework.binding.expression.ParserException;
import org.springframework.binding.expression.ValueCoercionException;
@@ -99,6 +101,10 @@ public class BeanWrapperExpressionParserTests extends TestCase {
}
public void testSetValueWithCoersion() {
GenericConversionService cs = (GenericConversionService) parser.getConversionService();
StringToDate converter = new StringToDate();
converter.setPattern("yyyy-MM-dd");
cs.addConverter(converter);
Expression e = parser.parseExpression("date", null);
e.setValue(bean, "2008-9-15");
}

View File

@@ -17,6 +17,8 @@ package org.springframework.binding.expression.ognl;
import junit.framework.TestCase;
import org.springframework.binding.convert.converters.StringToDate;
import org.springframework.binding.convert.service.GenericConversionService;
import org.springframework.binding.expression.EvaluationException;
import org.springframework.binding.expression.Expression;
import org.springframework.binding.expression.ExpressionVariable;
@@ -203,6 +205,10 @@ public class OgnlExpressionParserTests extends TestCase {
}
public void testSetValueWithCoersion() {
GenericConversionService cs = (GenericConversionService) parser.getConversionService();
StringToDate converter = new StringToDate();
converter.setPattern("yyyy-MM-dd");
cs.addConverter(converter);
Expression e = parser.parseExpression("date", null);
e.setValue(bean, "2008-9-15");
}