default conversion service instance caching and tests
This commit is contained in:
parent
6c66406f7f
commit
7b561c76fe
|
|
@ -18,18 +18,30 @@ package org.springframework.core.convert.support;
|
|||
import org.springframework.core.convert.ConversionService;
|
||||
|
||||
/**
|
||||
* A factor for creating common ConversionService configurations.
|
||||
* A factory for creating common ConversionService configurations.
|
||||
* @author Keith Donald
|
||||
* @since 3.0
|
||||
*/
|
||||
public final class ConversionServiceFactory {
|
||||
|
||||
private static ConversionService DEFAULT_INSTANCE;
|
||||
|
||||
private ConversionServiceFactory() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a default ConversionService.
|
||||
* Get the shared default ConversionService.
|
||||
*/
|
||||
public static synchronized ConversionService getDefault() {
|
||||
if (DEFAULT_INSTANCE == null) {
|
||||
DEFAULT_INSTANCE = createDefault();
|
||||
}
|
||||
return DEFAULT_INSTANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new default ConversionService prototype that can be safely modified.
|
||||
*/
|
||||
public static ConversionService createDefault() {
|
||||
GenericConversionService conversionService = new GenericConversionService();
|
||||
|
|
@ -58,6 +70,7 @@ public final class ConversionServiceFactory {
|
|||
conversionService.addConverterFactory(new CharacterToNumberFactory());
|
||||
conversionService.addConverter(new ObjectToStringConverter());
|
||||
conversionService.addGenericConverter(new ObjectToObjectGenericConverter());
|
||||
conversionService.addGenericConverter(new EntityConverter(conversionService));
|
||||
return conversionService;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,253 +0,0 @@
|
|||
/*
|
||||
* 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.core.convert.support;
|
||||
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.core.convert.ConverterNotFoundException;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
|
||||
/**
|
||||
* Tests for the default converters in the converters package.
|
||||
|
||||
* @author Keith Donald
|
||||
*/
|
||||
public class DefaultConversionServiceTests {
|
||||
|
||||
private StringToNumberConverterFactory c = new StringToNumberConverterFactory();
|
||||
|
||||
@Test
|
||||
public void testStringToCharacter() {
|
||||
StringToCharacterConverter c = new StringToCharacterConverter();
|
||||
assertEquals(Character.valueOf('1'), c.convert("1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToCharacterEmptyString() {
|
||||
StringToCharacterConverter c = new StringToCharacterConverter();
|
||||
assertEquals(null, c.convert(""));
|
||||
}
|
||||
|
||||
@Test(expected=IllegalArgumentException.class)
|
||||
public void testStringToCharacterInvalidString() {
|
||||
new StringToCharacterConverter().convert("invalid");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToBooleanTrue() {
|
||||
StringToBooleanConverter c = new StringToBooleanConverter();
|
||||
assertEquals(Boolean.valueOf(true), c.convert("true"));
|
||||
assertEquals(Boolean.valueOf(true), c.convert("on"));
|
||||
assertEquals(Boolean.valueOf(true), c.convert("yes"));
|
||||
assertEquals(Boolean.valueOf(true), c.convert("1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToBooleanFalse() {
|
||||
StringToBooleanConverter c = new StringToBooleanConverter();
|
||||
assertEquals(Boolean.valueOf(false), c.convert("false"));
|
||||
assertEquals(Boolean.valueOf(false), c.convert("off"));
|
||||
assertEquals(Boolean.valueOf(false), c.convert("no"));
|
||||
assertEquals(Boolean.valueOf(false), c.convert("0"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToBooleanEmptyString() {
|
||||
StringToBooleanConverter c = new StringToBooleanConverter();
|
||||
assertEquals(null, c.convert(""));
|
||||
}
|
||||
|
||||
@Test(expected=IllegalArgumentException.class)
|
||||
public void testStringToBooleanInvalidString() {
|
||||
new StringToBooleanConverter().convert("invalid");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToByte() throws Exception {
|
||||
assertEquals(Byte.valueOf("1"), c.getConverter(Byte.class).convert("1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToShort() {
|
||||
assertEquals(Short.valueOf("1"), c.getConverter(Short.class).convert("1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToInteger() {
|
||||
assertEquals(Integer.valueOf("1"), c.getConverter(Integer.class).convert("1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToLong() {
|
||||
assertEquals(Long.valueOf("1"), c.getConverter(Long.class).convert("1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToFloat() {
|
||||
assertEquals(Float.valueOf("1.0"), c.getConverter(Float.class).convert("1.0"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToDouble() {
|
||||
assertEquals(Double.valueOf("1.0"), c.getConverter(Double.class).convert("1.0"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToBigInteger() {
|
||||
assertEquals(new BigInteger("1"), c.getConverter(BigInteger.class).convert("1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToBigDouble() {
|
||||
assertEquals(new BigDecimal("1.0"), c.getConverter(BigDecimal.class).convert("1.0"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToNumber() {
|
||||
assertEquals(new BigDecimal("1.0"), c.getConverter(Number.class).convert("1.0"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToNumberEmptyString() {
|
||||
assertEquals(null, c.getConverter(Number.class).convert(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToEnum() throws Exception {
|
||||
Converter<String, Foo> c = new StringToEnumConverterFactory().getConverter(Foo.class);
|
||||
assertEquals(Foo.BAR, c.convert("BAR"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToEnumEmptyString() throws Exception {
|
||||
Converter<String, Foo> c = new StringToEnumConverterFactory().getConverter(Foo.class);
|
||||
assertEquals(null, c.convert(""));
|
||||
}
|
||||
|
||||
public static enum Foo {
|
||||
BAR, BAZ;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToLocale() {
|
||||
StringToLocaleConverter c = new StringToLocaleConverter();
|
||||
assertEquals(Locale.ENGLISH, c.convert("en"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNumberToNumber() throws Exception {
|
||||
Converter<Number, Long> c = new NumberToNumberConverterFactory().getConverter(Long.class);
|
||||
assertEquals(Long.valueOf(1), c.convert(Integer.valueOf(1)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNumberToNumberNotSupportedNumber() throws Exception {
|
||||
Converter<Number, CustomNumber> c = new NumberToNumberConverterFactory().getConverter(CustomNumber.class);
|
||||
try {
|
||||
c.convert(Integer.valueOf(1));
|
||||
fail("Should have failed");
|
||||
} catch (IllegalArgumentException e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNumberToCharacter() {
|
||||
NumberToCharacterConverter n = new NumberToCharacterConverter();
|
||||
assertEquals(Character.valueOf('A'), n.convert(Integer.valueOf(65)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testObjectToString() {
|
||||
ObjectToStringConverter o = new ObjectToStringConverter();
|
||||
assertEquals("3", o.convert(3));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToObjectValueOFMethod() {
|
||||
ConversionService conversionService = ConversionServiceFactory.createDefault();
|
||||
assertEquals(new Integer(3), conversionService.convert("3", Integer.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToObjectConstructor() {
|
||||
ConversionService conversionService = ConversionServiceFactory.createDefault();
|
||||
assertEquals(new SSN("123456789"), conversionService.convert("123456789", SSN.class));
|
||||
assertEquals("123456789", conversionService.convert(new SSN("123456789"), String.class));
|
||||
}
|
||||
|
||||
@Test(expected=ConverterNotFoundException.class)
|
||||
public void convertObjectToObjectNoValueOFMethodOrConstructor() {
|
||||
ConversionService conversionService = ConversionServiceFactory.createDefault();
|
||||
conversionService.convert(new Long(3), SSN.class);
|
||||
}
|
||||
|
||||
private static class SSN {
|
||||
private String value;
|
||||
|
||||
public SSN(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof SSN)) {
|
||||
return false;
|
||||
}
|
||||
SSN ssn = (SSN) o;
|
||||
return this.value.equals(ssn.value);
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return value.hashCode();
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
public static class CustomNumber extends Number {
|
||||
|
||||
@Override
|
||||
public double doubleValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float floatValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int intValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long longValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,705 @@
|
|||
/*
|
||||
* 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.core.convert.support;
|
||||
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
import static junit.framework.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.util.AbstractList;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.core.convert.ConversionFailedException;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.core.convert.ConverterNotFoundException;
|
||||
import org.springframework.core.convert.TypeDescriptor;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
|
||||
public class DefaultConversionTests {
|
||||
|
||||
private ConversionService conversionService = ConversionServiceFactory.getDefault();
|
||||
|
||||
@Test
|
||||
public void testStringToCharacter() {
|
||||
assertEquals(Character.valueOf('1'), conversionService.convert("1", Character.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToCharacterEmptyString() {
|
||||
assertEquals(null, conversionService.convert("", Character.class));
|
||||
}
|
||||
|
||||
@Test(expected=ConversionFailedException.class)
|
||||
public void testStringToCharacterInvalidString() {
|
||||
conversionService.convert("invalid", Character.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToBooleanTrue() {
|
||||
assertEquals(Boolean.valueOf(true), conversionService.convert("true", Boolean.class));
|
||||
assertEquals(Boolean.valueOf(true), conversionService.convert("on", Boolean.class));
|
||||
assertEquals(Boolean.valueOf(true), conversionService.convert("yes", Boolean.class));
|
||||
assertEquals(Boolean.valueOf(true), conversionService.convert("1", Boolean.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToBooleanFalse() {
|
||||
assertEquals(Boolean.valueOf(false), conversionService.convert("false", Boolean.class));
|
||||
assertEquals(Boolean.valueOf(false), conversionService.convert("off", Boolean.class));
|
||||
assertEquals(Boolean.valueOf(false), conversionService.convert("no", Boolean.class));
|
||||
assertEquals(Boolean.valueOf(false), conversionService.convert("0", Boolean.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToBooleanEmptyString() {
|
||||
assertEquals(null, conversionService.convert("", Boolean.class));
|
||||
}
|
||||
|
||||
@Test(expected=ConversionFailedException.class)
|
||||
public void testStringToBooleanInvalidString() {
|
||||
conversionService.convert("invalid", Boolean.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToByte() throws Exception {
|
||||
assertEquals(Byte.valueOf("1"), conversionService.convert("1", Byte.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToShort() {
|
||||
assertEquals(Short.valueOf("1"), conversionService.convert("1", Short.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToInteger() {
|
||||
assertEquals(Integer.valueOf("1"), conversionService.convert("1", Integer.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToLong() {
|
||||
assertEquals(Long.valueOf("1"), conversionService.convert("1", Long.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToFloat() {
|
||||
assertEquals(Float.valueOf("1.0"), conversionService.convert("1.0", Float.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToDouble() {
|
||||
assertEquals(Double.valueOf("1.0"), conversionService.convert("1.0", Double.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToBigInteger() {
|
||||
assertEquals(new BigInteger("1"), conversionService.convert("1", BigInteger.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToBigDouble() {
|
||||
assertEquals(new BigDecimal("1.0"), conversionService.convert("1.0", BigDecimal.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToNumber() {
|
||||
assertEquals(new BigDecimal("1.0"), conversionService.convert("1.0", Number.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToNumberEmptyString() {
|
||||
assertEquals(null, conversionService.convert("", Number.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToEnum() throws Exception {
|
||||
assertEquals(Foo.BAR, conversionService.convert("BAR", Foo.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToEnumEmptyString() {
|
||||
assertEquals(null, conversionService.convert("", Foo.class));
|
||||
}
|
||||
|
||||
public static enum Foo {
|
||||
BAR, BAZ;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringToLocale() {
|
||||
assertEquals(Locale.ENGLISH, conversionService.convert("en", Locale.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNumberToNumber() {
|
||||
Converter<Number, Long> c = new NumberToNumberConverterFactory().getConverter(Long.class);
|
||||
assertEquals(Long.valueOf(1), conversionService.convert(Integer.valueOf(1), Long.class));
|
||||
}
|
||||
|
||||
@Test(expected=ConversionFailedException.class)
|
||||
public void testNumberToNumberNotSupportedNumber() {
|
||||
conversionService.convert(Integer.valueOf(1), CustomNumber.class);
|
||||
}
|
||||
|
||||
public static class CustomNumber extends Number {
|
||||
|
||||
@Override
|
||||
public double doubleValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float floatValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int intValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long longValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNumberToCharacter() {
|
||||
assertEquals(Character.valueOf('A'), conversionService.convert(Integer.valueOf(65), Character.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testObjectToString() {
|
||||
assertEquals("3", conversionService.convert(3, String.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToObjectValueOFMethod() {
|
||||
assertEquals(new Integer(3), conversionService.convert("3", Integer.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToObjectConstructor() {
|
||||
assertEquals(new SSN("123456789"), conversionService.convert("123456789", SSN.class));
|
||||
assertEquals("123456789", conversionService.convert(new SSN("123456789"), String.class));
|
||||
}
|
||||
|
||||
@Test(expected=ConverterNotFoundException.class)
|
||||
public void convertObjectToObjectNoValueOFMethodOrConstructor() {
|
||||
conversionService.convert(new Long(3), SSN.class);
|
||||
}
|
||||
|
||||
private static class SSN {
|
||||
private String value;
|
||||
|
||||
public SSN(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof SSN)) {
|
||||
return false;
|
||||
}
|
||||
SSN ssn = (SSN) o;
|
||||
return this.value.equals(ssn.value);
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return value.hashCode();
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToObjectFinderMethod() {
|
||||
TestEntity e = conversionService.convert(1L, TestEntity.class);
|
||||
assertEquals(new Long(1), e.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToObjectFinderMethodWithIdConversion() {
|
||||
TestEntity e = conversionService.convert("1", TestEntity.class);
|
||||
assertEquals(new Long(1), e.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToObjectToStringIdProperty() {
|
||||
String id = conversionService.convert(new TestEntity(1L), String.class);
|
||||
assertEquals("1", id);
|
||||
}
|
||||
|
||||
public static class TestEntity {
|
||||
|
||||
private Long id;
|
||||
|
||||
public TestEntity(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public static TestEntity findTestEntity(Long id) {
|
||||
return new TestEntity(id);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToArray() {
|
||||
Integer[] result = conversionService.convert(new String[] { "1", "2", "3" }, Integer[].class);
|
||||
assertEquals(new Integer(1), result[0]);
|
||||
assertEquals(new Integer(2), result[1]);
|
||||
assertEquals(new Integer(3), result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToPrimitiveArray() {
|
||||
int[] result = conversionService.convert(new String[] { "1", "2", "3" }, int[].class);
|
||||
assertEquals(1, result[0]);
|
||||
assertEquals(2, result[1]);
|
||||
assertEquals(3, result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToArrayAssignable() {
|
||||
int[] result = conversionService.convert(new int[] { 1, 2, 3 }, int[].class);
|
||||
assertEquals(1, result[0]);
|
||||
assertEquals(2, result[1]);
|
||||
assertEquals(3, result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToListInterface() {
|
||||
List<?> result = conversionService.convert(new String[] { "1", "2", "3" }, List.class);
|
||||
assertEquals("1", result.get(0));
|
||||
assertEquals("2", result.get(1));
|
||||
assertEquals("3", result.get(2));
|
||||
}
|
||||
|
||||
public List<Integer> genericList = new ArrayList<Integer>();
|
||||
|
||||
@Test
|
||||
public void convertArrayToListGenericTypeConversion() throws Exception {
|
||||
List<Integer> result = (List<Integer>) conversionService.convert(new String[] { "1", "2", "3" }, TypeDescriptor
|
||||
.valueOf(String[].class), new TypeDescriptor(getClass().getDeclaredField("genericList")));
|
||||
assertEquals(new Integer("1"), result.get(0));
|
||||
assertEquals(new Integer("2"), result.get(1));
|
||||
assertEquals(new Integer("3"), result.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToListImpl() {
|
||||
LinkedList<?> result = conversionService.convert(new String[] { "1", "2", "3" }, LinkedList.class);
|
||||
assertEquals("1", result.get(0));
|
||||
assertEquals("2", result.get(1));
|
||||
assertEquals("3", result.get(2));
|
||||
}
|
||||
|
||||
@Test(expected = ConversionFailedException.class)
|
||||
public void convertArrayToAbstractList() {
|
||||
conversionService.convert(new String[] { "1", "2", "3" }, AbstractList.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToMap() {
|
||||
Map result = conversionService.convert(new String[] { "foo=bar", "bar=baz", "baz=boop" }, Map.class);
|
||||
assertEquals("bar", result.get("foo"));
|
||||
assertEquals("baz", result.get("bar"));
|
||||
assertEquals("boop", result.get("baz"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToMapWithElementConversion() throws Exception {
|
||||
Map result = (Map) conversionService.convert(new String[] { "1=BAR", "2=BAZ" }, TypeDescriptor
|
||||
.valueOf(String[].class), new TypeDescriptor(getClass().getField("genericMap")));
|
||||
assertEquals(FooEnum.BAR, result.get(1));
|
||||
assertEquals(FooEnum.BAZ, result.get(2));
|
||||
}
|
||||
|
||||
public static enum FooEnum {
|
||||
BAR, BAZ
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToString() {
|
||||
String result = conversionService.convert(new String[] { "1", "2", "3" }, String.class);
|
||||
assertEquals("1,2,3", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToStringWithElementConversion() {
|
||||
String result = conversionService.convert(new Integer[] { 1, 2, 3 }, String.class);
|
||||
assertEquals("1,2,3", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertEmptyArrayToString() {
|
||||
String result = conversionService.convert(new String[0], String.class);
|
||||
assertEquals("", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToObject() {
|
||||
Object[] array = new Object[] { 3L };
|
||||
Object result = conversionService.convert(array, Object.class);
|
||||
assertEquals(3L, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToObjectWithElementConversion() {
|
||||
String[] array = new String[] { "3" };
|
||||
Integer result = conversionService.convert(array, Integer.class);
|
||||
assertEquals(new Integer(3), result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToArray() {
|
||||
List<String> list = new ArrayList<String>();
|
||||
list.add("1");
|
||||
list.add("2");
|
||||
list.add("3");
|
||||
String[] result = conversionService.convert(list, String[].class);
|
||||
assertEquals("1", result[0]);
|
||||
assertEquals("2", result[1]);
|
||||
assertEquals("3", result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToArrayWithElementConversion() {
|
||||
List<String> list = new ArrayList<String>();
|
||||
list.add("1");
|
||||
list.add("2");
|
||||
list.add("3");
|
||||
Integer[] result = conversionService.convert(list, Integer[].class);
|
||||
assertEquals(new Integer(1), result[0]);
|
||||
assertEquals(new Integer(2), result[1]);
|
||||
assertEquals(new Integer(3), result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToCollection() throws Exception {
|
||||
Set<String> foo = new LinkedHashSet<String>();
|
||||
foo.add("1");
|
||||
foo.add("2");
|
||||
foo.add("3");
|
||||
List<Integer> bar = (List<Integer>) conversionService.convert(foo, TypeDescriptor.valueOf(LinkedHashSet.class),
|
||||
new TypeDescriptor(getClass().getField("genericList")));
|
||||
assertEquals(new Integer(1), bar.get(0));
|
||||
assertEquals(new Integer(2), bar.get(1));
|
||||
assertEquals(new Integer(3), bar.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToCollectionNull() throws Exception {
|
||||
List<Integer> bar = (List<Integer>) conversionService.convert(null,
|
||||
TypeDescriptor.valueOf(LinkedHashSet.class), new TypeDescriptor(getClass().getField("genericList")));
|
||||
assertNull(bar);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToCollectionNotGeneric() throws Exception {
|
||||
Set<String> foo = new LinkedHashSet<String>();
|
||||
foo.add("1");
|
||||
foo.add("2");
|
||||
foo.add("3");
|
||||
List bar = (List) conversionService.convert(foo, TypeDescriptor.valueOf(LinkedHashSet.class), TypeDescriptor
|
||||
.valueOf(List.class));
|
||||
assertEquals("1", bar.get(0));
|
||||
assertEquals("2", bar.get(1));
|
||||
assertEquals("3", bar.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToCollectionSpecialCaseSourceImpl() throws Exception {
|
||||
Map map = new LinkedHashMap();
|
||||
map.put("1", "1");
|
||||
map.put("2", "2");
|
||||
map.put("3", "3");
|
||||
Collection values = map.values();
|
||||
List<Integer> bar = (List<Integer>) conversionService.convert(values,
|
||||
TypeDescriptor.valueOf(values.getClass()), new TypeDescriptor(getClass().getField("genericList")));
|
||||
assertEquals(3, bar.size());
|
||||
assertEquals(new Integer(1), bar.get(0));
|
||||
assertEquals(new Integer(2), bar.get(1));
|
||||
assertEquals(new Integer(3), bar.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToMap() {
|
||||
List<String> list = new ArrayList<String>();
|
||||
list.add("foo=bar");
|
||||
list.add("bar=baz");
|
||||
list.add("baz=boop");
|
||||
Map result = conversionService.convert(list, Map.class);
|
||||
assertEquals("bar", result.get("foo"));
|
||||
assertEquals("baz", result.get("bar"));
|
||||
assertEquals("boop", result.get("baz"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToMapWithElementConversion() throws Exception {
|
||||
List<String> list = new ArrayList<String>();
|
||||
list.add("1=BAR");
|
||||
list.add("2=BAZ");
|
||||
Map result = (Map) conversionService.convert(list, TypeDescriptor.valueOf(List.class), new TypeDescriptor(
|
||||
getClass().getField("genericMap")));
|
||||
assertEquals(FooEnum.BAR, result.get(1));
|
||||
assertEquals(FooEnum.BAZ, result.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToString() {
|
||||
List<String> list = Arrays.asList(new String[] { "foo", "bar" });
|
||||
String result = conversionService.convert(list, String.class);
|
||||
assertEquals("foo,bar", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToStringWithElementConversion() throws Exception {
|
||||
List<Integer> list = Arrays.asList(new Integer[] { 3, 5 });
|
||||
String result = (String) conversionService.convert(list,
|
||||
new TypeDescriptor(getClass().getField("genericList")), TypeDescriptor.valueOf(String.class));
|
||||
assertEquals("3,5", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToObject() {
|
||||
List<Long> list = Collections.singletonList(3L);
|
||||
Long result = conversionService.convert(list, Long.class);
|
||||
assertEquals(new Long(3), result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToObjectWithElementConversion() {
|
||||
List<String> list = Collections.singletonList("3");
|
||||
Integer result = conversionService.convert(list, Integer.class);
|
||||
assertEquals(new Integer(3), result);
|
||||
}
|
||||
|
||||
public Map<Integer, FooEnum> genericMap = new HashMap<Integer, FooEnum>();
|
||||
|
||||
@Test
|
||||
public void convertMapToMap() throws Exception {
|
||||
Map<String, String> foo = new HashMap<String, String>();
|
||||
foo.put("1", "BAR");
|
||||
foo.put("2", "BAZ");
|
||||
Map<String, FooEnum> map = (Map<String, FooEnum>) conversionService.convert(foo, TypeDescriptor
|
||||
.valueOf(Map.class), new TypeDescriptor(getClass().getField("genericMap")));
|
||||
assertEquals(FooEnum.BAR, map.get(1));
|
||||
assertEquals(FooEnum.BAZ, map.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertMapToStringArray() throws Exception {
|
||||
Map<String, String> foo = new LinkedHashMap<String, String>();
|
||||
foo.put("1", "BAR");
|
||||
foo.put("2", "BAZ");
|
||||
String[] result = conversionService.convert(foo, String[].class);
|
||||
assertEquals("1=BAR", result[0]);
|
||||
assertEquals("2=BAZ", result[1]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertMapToStringArrayWithElementConversion() throws Exception {
|
||||
Map<Integer, FooEnum> foo = new LinkedHashMap<Integer, FooEnum>();
|
||||
foo.put(1, FooEnum.BAR);
|
||||
foo.put(2, FooEnum.BAZ);
|
||||
String[] result = (String[]) conversionService.convert(foo, new TypeDescriptor(getClass()
|
||||
.getField("genericMap")), TypeDescriptor.valueOf(String[].class));
|
||||
assertEquals("1=BAR", result[0]);
|
||||
assertEquals("2=BAZ", result[1]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertMapToString() {
|
||||
Map<String, String> foo = new LinkedHashMap<String, String>();
|
||||
foo.put("1", "BAR");
|
||||
foo.put("2", "BAZ");
|
||||
String result = conversionService.convert(foo, String.class);
|
||||
System.out.println(result);
|
||||
assertTrue(result.contains("1=BAR"));
|
||||
assertTrue(result.contains("2=BAZ"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertMapToStringWithConversion() throws Exception {
|
||||
Map<Integer, FooEnum> foo = new LinkedHashMap<Integer, FooEnum>();
|
||||
foo.put(1, FooEnum.BAR);
|
||||
foo.put(2, FooEnum.BAZ);
|
||||
String result = (String) conversionService.convert(foo, new TypeDescriptor(getClass().getField("genericMap")),
|
||||
TypeDescriptor.valueOf(String.class));
|
||||
assertTrue(result.contains("1=BAR"));
|
||||
assertTrue(result.contains("2=BAZ"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertMapToObject() {
|
||||
Map<Long, Long> foo = new LinkedHashMap<Long, Long>();
|
||||
foo.put(1L, 1L);
|
||||
foo.put(2L, 2L);
|
||||
Long result = conversionService.convert(foo, Long.class);
|
||||
assertEquals(new Long(1), result);
|
||||
}
|
||||
|
||||
public Map<Long, Long> genericMap2 = new HashMap<Long, Long>();
|
||||
|
||||
@Test
|
||||
public void convertMapToObjectWithConversion() throws Exception {
|
||||
Map<Long, Long> foo = new LinkedHashMap<Long, Long>();
|
||||
foo.put(1L, 1L);
|
||||
foo.put(2L, 2L);
|
||||
Integer result = (Integer) conversionService.convert(foo,
|
||||
new TypeDescriptor(getClass().getField("genericMap2")), TypeDescriptor.valueOf(Integer.class));
|
||||
assertEquals(new Integer(1), result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToArray() {
|
||||
String[] result = conversionService.convert("1,2,3", String[].class);
|
||||
assertEquals(3, result.length);
|
||||
assertEquals("1", result[0]);
|
||||
assertEquals("2", result[1]);
|
||||
assertEquals("3", result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToArrayWithElementConversion() {
|
||||
Integer[] result = conversionService.convert("1,2,3", Integer[].class);
|
||||
assertEquals(3, result.length);
|
||||
assertEquals(new Integer(1), result[0]);
|
||||
assertEquals(new Integer(2), result[1]);
|
||||
assertEquals(new Integer(3), result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertEmptyStringToArray() {
|
||||
String[] result = conversionService.convert("", String[].class);
|
||||
assertEquals(0, result.length);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToArray() {
|
||||
Object[] result = conversionService.convert(3L, Object[].class);
|
||||
assertEquals(1, result.length);
|
||||
assertEquals(3L, result[0]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToArrayWithElementConversion() {
|
||||
Integer[] result = conversionService.convert(3L, Integer[].class);
|
||||
assertEquals(1, result.length);
|
||||
assertEquals(new Integer(3), result[0]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToCollection() {
|
||||
List result = conversionService.convert("1,2,3", List.class);
|
||||
assertEquals(3, result.size());
|
||||
assertEquals("1", result.get(0));
|
||||
assertEquals("2", result.get(1));
|
||||
assertEquals("3", result.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToCollectionWithElementConversion() throws Exception {
|
||||
List result = (List) conversionService.convert("1,2,3", TypeDescriptor.valueOf(String.class),
|
||||
new TypeDescriptor(getClass().getField("genericList")));
|
||||
assertEquals(3, result.size());
|
||||
assertEquals(new Integer(1), result.get(0));
|
||||
assertEquals(new Integer(2), result.get(1));
|
||||
assertEquals(new Integer(3), result.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertEmptyStringToCollection() {
|
||||
Collection result = conversionService.convert("", Collection.class);
|
||||
assertEquals(0, result.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToCollection() {
|
||||
List<String> result = (List<String>) conversionService.convert(3L, List.class);
|
||||
assertEquals(1, result.size());
|
||||
assertEquals(3L, result.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToCollectionWithElementConversion() throws Exception {
|
||||
List<Integer> result = (List<Integer>) conversionService.convert(3L, TypeDescriptor.valueOf(Long.class),
|
||||
new TypeDescriptor(getClass().getField("genericList")));
|
||||
assertEquals(1, result.size());
|
||||
assertEquals(new Integer(3), result.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToMap() {
|
||||
Map result = conversionService.convert(" foo=bar\n bar=baz\n baz=boop", Map.class);
|
||||
assertEquals("bar", result.get("foo"));
|
||||
assertEquals("baz", result.get("bar"));
|
||||
assertEquals("boop", result.get("baz"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToMapWithElementConversion() throws Exception {
|
||||
Map result = (Map) conversionService.convert("1=BAR\n 2=BAZ", TypeDescriptor.valueOf(String.class),
|
||||
new TypeDescriptor(getClass().getField("genericMap")));
|
||||
assertEquals(FooEnum.BAR, result.get(1));
|
||||
assertEquals(FooEnum.BAZ, result.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToMap() {
|
||||
Map result = conversionService.convert(new Integer(3), Map.class);
|
||||
assertEquals(new Integer(3), result.get(new Integer(3)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToMapWithConversion() throws Exception {
|
||||
Map result = (Map) conversionService.convert(1L, TypeDescriptor.valueOf(Integer.class), new TypeDescriptor(
|
||||
getClass().getField("genericMap2")));
|
||||
assertEquals(new Long(1), result.get(1L));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void genericConverterDelegatingBackToConversionServiceConverterNotFound() {
|
||||
try {
|
||||
conversionService.convert("1", Integer[].class);
|
||||
} catch (ConversionFailedException e) {
|
||||
assertTrue(e.getCause() instanceof ConverterNotFoundException);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
package org.springframework.core.convert.support;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
public class EntityConverterTests {
|
||||
|
||||
private GenericConversionService conversionService = new GenericConversionService();
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
conversionService.addConverter(new ObjectToStringConverter());
|
||||
conversionService.addGenericConverter(new EntityConverter(conversionService));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToEntityReference() {
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
TestEntity e = conversionService.convert("1", TestEntity.class);
|
||||
assertEquals(new Long(1), e.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToEntityId() {
|
||||
String id = conversionService.convert(new TestEntity(1L), String.class);
|
||||
assertEquals("1", id);
|
||||
}
|
||||
|
||||
public static class TestEntity {
|
||||
|
||||
private Long id;
|
||||
|
||||
public TestEntity(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public static TestEntity findTestEntity(Long id) {
|
||||
return new TestEntity(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -22,28 +22,12 @@ import static junit.framework.Assert.fail;
|
|||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.AbstractList;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.core.convert.ConversionFailedException;
|
||||
import org.springframework.core.convert.ConverterNotFoundException;
|
||||
import org.springframework.core.convert.TypeDescriptor;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
|
||||
/**
|
||||
* @author Keith Donald
|
||||
*/
|
||||
public class GenericConversionServiceTests {
|
||||
|
||||
private GenericConversionService conversionService = new GenericConversionService();
|
||||
|
|
@ -139,510 +123,11 @@ public class GenericConversionServiceTests {
|
|||
|
||||
@Test
|
||||
public void convertObjectToPrimitiveViaConverterFactory() {
|
||||
assertFalse(conversionService.canConvert(String.class, int.class));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
assertTrue(conversionService.canConvert(String.class, int.class));
|
||||
Integer three = conversionService.convert("3", int.class);
|
||||
assertEquals(3, three.intValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToArray() {
|
||||
conversionService.addGenericConverter(new ArrayToArrayConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
Integer[] result = conversionService.convert(new String[] { "1", "2", "3" }, Integer[].class);
|
||||
assertEquals(new Integer(1), result[0]);
|
||||
assertEquals(new Integer(2), result[1]);
|
||||
assertEquals(new Integer(3), result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToPrimitiveArray() {
|
||||
conversionService.addGenericConverter(new ArrayToArrayConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
int[] result = conversionService.convert(new String[] { "1", "2", "3" }, int[].class);
|
||||
assertEquals(1, result[0]);
|
||||
assertEquals(2, result[1]);
|
||||
assertEquals(3, result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToArrayAssignable() {
|
||||
int[] result = conversionService.convert(new int[] { 1, 2, 3 }, int[].class);
|
||||
assertEquals(1, result[0]);
|
||||
assertEquals(2, result[1]);
|
||||
assertEquals(3, result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToListInterface() {
|
||||
conversionService.addGenericConverter(new ArrayToCollectionConverter(conversionService));
|
||||
List<?> result = conversionService.convert(new String[] { "1", "2", "3" }, List.class);
|
||||
assertEquals("1", result.get(0));
|
||||
assertEquals("2", result.get(1));
|
||||
assertEquals("3", result.get(2));
|
||||
}
|
||||
|
||||
public List<Integer> genericList = new ArrayList<Integer>();
|
||||
|
||||
@Test
|
||||
public void convertArrayToListGenericTypeConversion() throws Exception {
|
||||
conversionService.addGenericConverter(new ArrayToCollectionConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
List<Integer> result = (List<Integer>) conversionService.convert(new String[] { "1", "2", "3" }, TypeDescriptor
|
||||
.valueOf(String[].class), new TypeDescriptor(getClass().getDeclaredField("genericList")));
|
||||
assertEquals(new Integer("1"), result.get(0));
|
||||
assertEquals(new Integer("2"), result.get(1));
|
||||
assertEquals(new Integer("3"), result.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToListImpl() {
|
||||
conversionService.addGenericConverter(new ArrayToCollectionConverter(conversionService));
|
||||
LinkedList<?> result = conversionService.convert(new String[] { "1", "2", "3" }, LinkedList.class);
|
||||
assertEquals("1", result.get(0));
|
||||
assertEquals("2", result.get(1));
|
||||
assertEquals("3", result.get(2));
|
||||
}
|
||||
|
||||
@Test(expected = ConversionFailedException.class)
|
||||
public void convertArrayToAbstractList() {
|
||||
conversionService.addGenericConverter(new ArrayToCollectionConverter(conversionService));
|
||||
conversionService.convert(new String[] { "1", "2", "3" }, AbstractList.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToMap() {
|
||||
conversionService.addGenericConverter(new ArrayToMapConverter(conversionService));
|
||||
Map result = conversionService.convert(new String[] { "foo=bar", "bar=baz", "baz=boop" }, Map.class);
|
||||
assertEquals("bar", result.get("foo"));
|
||||
assertEquals("baz", result.get("bar"));
|
||||
assertEquals("boop", result.get("baz"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToMapWithElementConversion() throws Exception {
|
||||
conversionService.addGenericConverter(new ArrayToMapConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
conversionService.addConverterFactory(new StringToEnumConverterFactory());
|
||||
Map result = (Map) conversionService.convert(new String[] { "1=BAR", "2=BAZ" }, TypeDescriptor
|
||||
.valueOf(String[].class), new TypeDescriptor(getClass().getField("genericMap")));
|
||||
assertEquals(FooEnum.BAR, result.get(1));
|
||||
assertEquals(FooEnum.BAZ, result.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToString() {
|
||||
conversionService.addGenericConverter(new ArrayToObjectConverter(conversionService));
|
||||
String result = conversionService.convert(new String[] { "1", "2", "3" }, String.class);
|
||||
assertEquals("1,2,3", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToStringWithElementConversion() {
|
||||
conversionService.addGenericConverter(new ArrayToObjectConverter(conversionService));
|
||||
conversionService.addConverter(new ObjectToStringConverter());
|
||||
String result = conversionService.convert(new Integer[] { 1, 2, 3 }, String.class);
|
||||
assertEquals("1,2,3", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertEmptyArrayToString() {
|
||||
conversionService.addGenericConverter(new ArrayToObjectConverter(conversionService));
|
||||
String result = conversionService.convert(new String[0], String.class);
|
||||
assertEquals("", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToObject() {
|
||||
conversionService.addGenericConverter(new ArrayToObjectConverter(conversionService));
|
||||
Object[] array = new Object[] { 3L };
|
||||
Object result = conversionService.convert(array, Object.class);
|
||||
assertEquals(3L, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToObjectWithElementConversion() {
|
||||
conversionService.addGenericConverter(new ArrayToObjectConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
String[] array = new String[] { "3" };
|
||||
Integer result = conversionService.convert(array, Integer.class);
|
||||
assertEquals(new Integer(3), result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToArray() {
|
||||
conversionService.addGenericConverter(new CollectionToArrayConverter(conversionService));
|
||||
List<String> list = new ArrayList<String>();
|
||||
list.add("1");
|
||||
list.add("2");
|
||||
list.add("3");
|
||||
String[] result = conversionService.convert(list, String[].class);
|
||||
assertEquals("1", result[0]);
|
||||
assertEquals("2", result[1]);
|
||||
assertEquals("3", result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToArrayWithElementConversion() {
|
||||
conversionService.addGenericConverter(new CollectionToArrayConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
List<String> list = new ArrayList<String>();
|
||||
list.add("1");
|
||||
list.add("2");
|
||||
list.add("3");
|
||||
Integer[] result = conversionService.convert(list, Integer[].class);
|
||||
assertEquals(new Integer(1), result[0]);
|
||||
assertEquals(new Integer(2), result[1]);
|
||||
assertEquals(new Integer(3), result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToCollection() throws Exception {
|
||||
conversionService.addGenericConverter(new CollectionToCollectionConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
Set<String> foo = new LinkedHashSet<String>();
|
||||
foo.add("1");
|
||||
foo.add("2");
|
||||
foo.add("3");
|
||||
List<Integer> bar = (List<Integer>) conversionService.convert(foo, TypeDescriptor.valueOf(LinkedHashSet.class),
|
||||
new TypeDescriptor(getClass().getField("genericList")));
|
||||
assertEquals(new Integer(1), bar.get(0));
|
||||
assertEquals(new Integer(2), bar.get(1));
|
||||
assertEquals(new Integer(3), bar.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToCollectionNull() throws Exception {
|
||||
conversionService.addGenericConverter(new CollectionToCollectionConverter(conversionService));
|
||||
List<Integer> bar = (List<Integer>) conversionService.convert(null,
|
||||
TypeDescriptor.valueOf(LinkedHashSet.class), new TypeDescriptor(getClass().getField("genericList")));
|
||||
assertNull(bar);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToCollectionNotGeneric() throws Exception {
|
||||
conversionService.addGenericConverter(new CollectionToCollectionConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
Set<String> foo = new LinkedHashSet<String>();
|
||||
foo.add("1");
|
||||
foo.add("2");
|
||||
foo.add("3");
|
||||
List bar = (List) conversionService.convert(foo, TypeDescriptor.valueOf(LinkedHashSet.class), TypeDescriptor
|
||||
.valueOf(List.class));
|
||||
assertEquals("1", bar.get(0));
|
||||
assertEquals("2", bar.get(1));
|
||||
assertEquals("3", bar.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToCollectionSpecialCaseSourceImpl() throws Exception {
|
||||
conversionService.addGenericConverter(new CollectionToCollectionConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
Map map = new LinkedHashMap();
|
||||
map.put("1", "1");
|
||||
map.put("2", "2");
|
||||
map.put("3", "3");
|
||||
Collection values = map.values();
|
||||
List<Integer> bar = (List<Integer>) conversionService.convert(values,
|
||||
TypeDescriptor.valueOf(values.getClass()), new TypeDescriptor(getClass().getField("genericList")));
|
||||
assertEquals(3, bar.size());
|
||||
assertEquals(new Integer(1), bar.get(0));
|
||||
assertEquals(new Integer(2), bar.get(1));
|
||||
assertEquals(new Integer(3), bar.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToMap() {
|
||||
conversionService.addGenericConverter(new CollectionToMapConverter(conversionService));
|
||||
List<String> list = new ArrayList<String>();
|
||||
list.add("foo=bar");
|
||||
list.add("bar=baz");
|
||||
list.add("baz=boop");
|
||||
Map result = conversionService.convert(list, Map.class);
|
||||
assertEquals("bar", result.get("foo"));
|
||||
assertEquals("baz", result.get("bar"));
|
||||
assertEquals("boop", result.get("baz"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToMapWithElementConversion() throws Exception {
|
||||
conversionService.addGenericConverter(new CollectionToMapConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
conversionService.addConverterFactory(new StringToEnumConverterFactory());
|
||||
List<String> list = new ArrayList<String>();
|
||||
list.add("1=BAR");
|
||||
list.add("2=BAZ");
|
||||
Map result = (Map) conversionService.convert(list, TypeDescriptor.valueOf(List.class), new TypeDescriptor(
|
||||
getClass().getField("genericMap")));
|
||||
assertEquals(FooEnum.BAR, result.get(1));
|
||||
assertEquals(FooEnum.BAZ, result.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToString() {
|
||||
conversionService.addGenericConverter(new CollectionToObjectConverter(conversionService));
|
||||
List<String> list = Arrays.asList(new String[] { "foo", "bar" });
|
||||
String result = conversionService.convert(list, String.class);
|
||||
assertEquals("foo,bar", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToStringWithElementConversion() throws Exception {
|
||||
conversionService.addGenericConverter(new CollectionToObjectConverter(conversionService));
|
||||
conversionService.addConverter(new ObjectToStringConverter());
|
||||
List<Integer> list = Arrays.asList(new Integer[] { 3, 5 });
|
||||
String result = (String) conversionService.convert(list,
|
||||
new TypeDescriptor(getClass().getField("genericList")), TypeDescriptor.valueOf(String.class));
|
||||
assertEquals("3,5", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToObject() {
|
||||
conversionService.addGenericConverter(new CollectionToObjectConverter(conversionService));
|
||||
List<Long> list = Collections.singletonList(3L);
|
||||
Long result = conversionService.convert(list, Long.class);
|
||||
assertEquals(new Long(3), result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToObjectWithElementConversion() {
|
||||
conversionService.addGenericConverter(new CollectionToObjectConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
List<String> list = Collections.singletonList("3");
|
||||
Integer result = conversionService.convert(list, Integer.class);
|
||||
assertEquals(new Integer(3), result);
|
||||
}
|
||||
|
||||
public Map<Integer, FooEnum> genericMap = new HashMap<Integer, FooEnum>();
|
||||
|
||||
@Test
|
||||
public void convertMapToMap() throws Exception {
|
||||
conversionService.addGenericConverter(new MapToMapConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
conversionService.addConverterFactory(new StringToEnumConverterFactory());
|
||||
Map<String, String> foo = new HashMap<String, String>();
|
||||
foo.put("1", "BAR");
|
||||
foo.put("2", "BAZ");
|
||||
Map<String, FooEnum> map = (Map<String, FooEnum>) conversionService.convert(foo, TypeDescriptor
|
||||
.valueOf(Map.class), new TypeDescriptor(getClass().getField("genericMap")));
|
||||
assertEquals(FooEnum.BAR, map.get(1));
|
||||
assertEquals(FooEnum.BAZ, map.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertMapToStringArray() throws Exception {
|
||||
conversionService.addGenericConverter(new MapToArrayConverter(conversionService));
|
||||
Map<String, String> foo = new LinkedHashMap<String, String>();
|
||||
foo.put("1", "BAR");
|
||||
foo.put("2", "BAZ");
|
||||
String[] result = conversionService.convert(foo, String[].class);
|
||||
assertEquals("1=BAR", result[0]);
|
||||
assertEquals("2=BAZ", result[1]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertMapToStringArrayWithElementConversion() throws Exception {
|
||||
conversionService.addGenericConverter(new MapToArrayConverter(conversionService));
|
||||
conversionService.addConverter(new ObjectToStringConverter());
|
||||
Map<Integer, FooEnum> foo = new LinkedHashMap<Integer, FooEnum>();
|
||||
foo.put(1, FooEnum.BAR);
|
||||
foo.put(2, FooEnum.BAZ);
|
||||
String[] result = (String[]) conversionService.convert(foo, new TypeDescriptor(getClass()
|
||||
.getField("genericMap")), TypeDescriptor.valueOf(String[].class));
|
||||
assertEquals("1=BAR", result[0]);
|
||||
assertEquals("2=BAZ", result[1]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertMapToString() {
|
||||
conversionService.addGenericConverter(new MapToObjectConverter(conversionService));
|
||||
Map<String, String> foo = new LinkedHashMap<String, String>();
|
||||
foo.put("1", "BAR");
|
||||
foo.put("2", "BAZ");
|
||||
String result = conversionService.convert(foo, String.class);
|
||||
System.out.println(result);
|
||||
assertTrue(result.contains("1=BAR"));
|
||||
assertTrue(result.contains("2=BAZ"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertMapToStringWithConversion() throws Exception {
|
||||
conversionService.addGenericConverter(new MapToObjectConverter(conversionService));
|
||||
Map<Integer, FooEnum> foo = new LinkedHashMap<Integer, FooEnum>();
|
||||
foo.put(1, FooEnum.BAR);
|
||||
foo.put(2, FooEnum.BAZ);
|
||||
conversionService.addConverter(new ObjectToStringConverter());
|
||||
String result = (String) conversionService.convert(foo, new TypeDescriptor(getClass().getField("genericMap")),
|
||||
TypeDescriptor.valueOf(String.class));
|
||||
assertTrue(result.contains("1=BAR"));
|
||||
assertTrue(result.contains("2=BAZ"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertMapToObject() {
|
||||
conversionService.addGenericConverter(new MapToObjectConverter(conversionService));
|
||||
Map<Long, Long> foo = new LinkedHashMap<Long, Long>();
|
||||
foo.put(1L, 1L);
|
||||
foo.put(2L, 2L);
|
||||
Long result = conversionService.convert(foo, Long.class);
|
||||
assertEquals(new Long(1), result);
|
||||
}
|
||||
|
||||
public Map<Long, Long> genericMap2 = new HashMap<Long, Long>();
|
||||
|
||||
@Test
|
||||
public void convertMapToObjectWithConversion() throws Exception {
|
||||
conversionService.addGenericConverter(new MapToObjectConverter(conversionService));
|
||||
conversionService.addConverterFactory(new NumberToNumberConverterFactory());
|
||||
Map<Long, Long> foo = new LinkedHashMap<Long, Long>();
|
||||
foo.put(1L, 1L);
|
||||
foo.put(2L, 2L);
|
||||
Integer result = (Integer) conversionService.convert(foo,
|
||||
new TypeDescriptor(getClass().getField("genericMap2")), TypeDescriptor.valueOf(Integer.class));
|
||||
assertEquals(new Integer(1), result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToArray() {
|
||||
conversionService.addGenericConverter(new ObjectToArrayConverter(conversionService));
|
||||
String[] result = conversionService.convert("1,2,3", String[].class);
|
||||
assertEquals(3, result.length);
|
||||
assertEquals("1", result[0]);
|
||||
assertEquals("2", result[1]);
|
||||
assertEquals("3", result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToArrayWithElementConversion() {
|
||||
conversionService.addGenericConverter(new ObjectToArrayConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
Integer[] result = conversionService.convert("1,2,3", Integer[].class);
|
||||
assertEquals(3, result.length);
|
||||
assertEquals(new Integer(1), result[0]);
|
||||
assertEquals(new Integer(2), result[1]);
|
||||
assertEquals(new Integer(3), result[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertEmptyStringToArray() {
|
||||
conversionService.addGenericConverter(new ObjectToArrayConverter(conversionService));
|
||||
String[] result = conversionService.convert("", String[].class);
|
||||
assertEquals(0, result.length);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToArray() {
|
||||
conversionService.addGenericConverter(new ObjectToArrayConverter(conversionService));
|
||||
Object[] result = conversionService.convert(3L, Object[].class);
|
||||
assertEquals(1, result.length);
|
||||
assertEquals(3L, result[0]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToArrayWithElementConversion() {
|
||||
conversionService.addGenericConverter(new ObjectToArrayConverter(conversionService));
|
||||
conversionService.addConverterFactory(new NumberToNumberConverterFactory());
|
||||
Integer[] result = conversionService.convert(3L, Integer[].class);
|
||||
assertEquals(1, result.length);
|
||||
assertEquals(new Integer(3), result[0]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToCollection() {
|
||||
conversionService.addGenericConverter(new ObjectToCollectionConverter(conversionService));
|
||||
List result = conversionService.convert("1,2,3", List.class);
|
||||
assertEquals(3, result.size());
|
||||
assertEquals("1", result.get(0));
|
||||
assertEquals("2", result.get(1));
|
||||
assertEquals("3", result.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToCollectionWithElementConversion() throws Exception {
|
||||
conversionService.addGenericConverter(new ObjectToCollectionConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
List result = (List) conversionService.convert("1,2,3", TypeDescriptor.valueOf(String.class),
|
||||
new TypeDescriptor(getClass().getField("genericList")));
|
||||
assertEquals(3, result.size());
|
||||
assertEquals(new Integer(1), result.get(0));
|
||||
assertEquals(new Integer(2), result.get(1));
|
||||
assertEquals(new Integer(3), result.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertEmptyStringToCollection() {
|
||||
conversionService.addGenericConverter(new ObjectToCollectionConverter(conversionService));
|
||||
Collection result = conversionService.convert("", Collection.class);
|
||||
assertEquals(0, result.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToCollection() {
|
||||
conversionService.addGenericConverter(new ObjectToCollectionConverter(conversionService));
|
||||
List<String> result = (List<String>) conversionService.convert(3L, List.class);
|
||||
assertEquals(1, result.size());
|
||||
assertEquals(3L, result.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToCollectionWithElementConversion() throws Exception {
|
||||
conversionService.addGenericConverter(new ObjectToCollectionConverter(conversionService));
|
||||
conversionService.addConverterFactory(new NumberToNumberConverterFactory());
|
||||
List<Integer> result = (List<Integer>) conversionService.convert(3L, TypeDescriptor.valueOf(Long.class),
|
||||
new TypeDescriptor(getClass().getField("genericList")));
|
||||
assertEquals(1, result.size());
|
||||
assertEquals(new Integer(3), result.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToMap() {
|
||||
conversionService.addGenericConverter(new ObjectToMapConverter(conversionService));
|
||||
conversionService.addGenericConverter(new MapToMapConverter(conversionService));
|
||||
Map result = conversionService.convert(" foo=bar\n bar=baz\n baz=boop", Map.class);
|
||||
assertEquals("bar", result.get("foo"));
|
||||
assertEquals("baz", result.get("bar"));
|
||||
assertEquals("boop", result.get("baz"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertStringToMapWithElementConversion() throws Exception {
|
||||
conversionService.addGenericConverter(new ObjectToMapConverter(conversionService));
|
||||
conversionService.addGenericConverter(new MapToMapConverter(conversionService));
|
||||
conversionService.addConverterFactory(new StringToNumberConverterFactory());
|
||||
conversionService.addConverterFactory(new StringToEnumConverterFactory());
|
||||
Map result = (Map) conversionService.convert("1=BAR\n 2=BAZ", TypeDescriptor.valueOf(String.class),
|
||||
new TypeDescriptor(getClass().getField("genericMap")));
|
||||
assertEquals(FooEnum.BAR, result.get(1));
|
||||
assertEquals(FooEnum.BAZ, result.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToMap() {
|
||||
conversionService.addGenericConverter(new ObjectToMapConverter(conversionService));
|
||||
Map result = conversionService.convert(new Integer(3), Map.class);
|
||||
assertEquals(new Integer(3), result.get(new Integer(3)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToMapWithConversion() throws Exception {
|
||||
conversionService.addGenericConverter(new ObjectToMapConverter(conversionService));
|
||||
conversionService.addConverterFactory(new NumberToNumberConverterFactory());
|
||||
Map result = (Map) conversionService.convert(1L, TypeDescriptor.valueOf(Integer.class), new TypeDescriptor(
|
||||
getClass().getField("genericMap2")));
|
||||
assertEquals(new Long(1), result.get(1L));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void genericConverterDelegatingBackToConversionServiceConverterNotFound() {
|
||||
conversionService.addGenericConverter(new ObjectToArrayConverter(conversionService));
|
||||
try {
|
||||
conversionService.convert("1", Integer[].class);
|
||||
} catch (ConversionFailedException e) {
|
||||
assertTrue(e.getCause() instanceof ConverterNotFoundException);
|
||||
}
|
||||
}
|
||||
|
||||
public static enum FooEnum {
|
||||
BAR, BAZ
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public class StandardTypeConverter implements TypeConverter {
|
|||
private final ConversionService conversionService;
|
||||
|
||||
public StandardTypeConverter() {
|
||||
this.conversionService = ConversionServiceFactory.createDefault();
|
||||
this.conversionService = ConversionServiceFactory.getDefault();
|
||||
}
|
||||
|
||||
public StandardTypeConverter(ConversionService conversionService) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue