Beefed up test suite
This commit is contained in:
@@ -37,7 +37,7 @@ final class ArrayToArrayGenericConverter implements GenericConverter {
|
||||
Object target = Array.newInstance(targetElementType.getType(), Array.getLength(source));
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceElementType, targetElementType);
|
||||
}
|
||||
for (int i = 0; i < Array.getLength(target); i++) {
|
||||
Array.set(target, i, converter.convert(Array.get(source, i), sourceElementType, targetElementType));
|
||||
|
||||
@@ -42,7 +42,7 @@ final class ArrayToCollectionGenericConverter implements GenericConverter {
|
||||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceElementType, targetElementType);
|
||||
}
|
||||
for (int i = 0; i < length; i++) {
|
||||
collection.add(converter.convert(Array.get(source, i), sourceElementType, targetElementType));
|
||||
|
||||
@@ -39,7 +39,7 @@ final class ArrayToObjectGenericConverter implements GenericConverter {
|
||||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceElementType, targetType);
|
||||
}
|
||||
return converter.convert(Array.get(source, 0), sourceElementType, targetType);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ final class CollectionToArrayGenericConverter implements GenericConverter {
|
||||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceElementType, targetElementType);
|
||||
}
|
||||
for (Iterator it = sourceCollection.iterator(); it.hasNext(); i++) {
|
||||
Array.set(array, i, converter.convert(it.next(), sourceElementType, targetElementType));
|
||||
|
||||
@@ -28,7 +28,7 @@ final class CollectionToCollectionGenericConverter implements GenericConverter {
|
||||
public CollectionToCollectionGenericConverter(GenericConversionService conversionService) {
|
||||
this.conversionService = conversionService;
|
||||
}
|
||||
|
||||
|
||||
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
|
||||
Collection sourceCollection = (Collection) source;
|
||||
TypeDescriptor sourceElementType = sourceType.getElementTypeDescriptor();
|
||||
@@ -40,7 +40,8 @@ final class CollectionToCollectionGenericConverter implements GenericConverter {
|
||||
if (sourceType.isAssignableTo(targetType)) {
|
||||
return sourceCollection;
|
||||
} else {
|
||||
Collection targetCollection = CollectionFactory.createCollection(targetType.getType(), sourceCollection.size());
|
||||
Collection targetCollection = CollectionFactory.createCollection(targetType.getType(), sourceCollection
|
||||
.size());
|
||||
targetCollection.addAll(sourceCollection);
|
||||
return targetCollection;
|
||||
}
|
||||
@@ -48,14 +49,14 @@ final class CollectionToCollectionGenericConverter implements GenericConverter {
|
||||
Collection targetCollection = CollectionFactory.createCollection(targetType.getType(), sourceCollection.size());
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
}
|
||||
throw new ConverterNotFoundException(sourceElementType, targetElementType);
|
||||
}
|
||||
for (Object element : sourceCollection) {
|
||||
targetCollection.add(converter.convert(element, sourceElementType, targetElementType));
|
||||
}
|
||||
return targetCollection;
|
||||
}
|
||||
|
||||
|
||||
private TypeDescriptor getElementType(Collection collection) {
|
||||
for (Object element : collection) {
|
||||
if (element != null) {
|
||||
|
||||
@@ -33,15 +33,19 @@ final class CollectionToObjectGenericConverter implements GenericConverter {
|
||||
if (sourceCollection.size() == 0) {
|
||||
return null;
|
||||
} else {
|
||||
Object firstElement = sourceCollection.iterator().next();
|
||||
TypeDescriptor sourceElementType = sourceType.getElementTypeDescriptor();
|
||||
if (sourceElementType == TypeDescriptor.NULL && firstElement != null) {
|
||||
sourceElementType = TypeDescriptor.valueOf(firstElement.getClass());
|
||||
}
|
||||
if (sourceElementType == TypeDescriptor.NULL || sourceElementType.isAssignableTo(targetType)) {
|
||||
return sourceCollection.iterator().next();
|
||||
return firstElement;
|
||||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceElementType, targetType);
|
||||
}
|
||||
return converter.convert(sourceCollection.iterator().next(), sourceElementType, targetType);
|
||||
return converter.convert(firstElement, sourceElementType, targetType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ final class ObjectToArrayGenericConverter implements GenericConverter {
|
||||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceType, targetElementType);
|
||||
}
|
||||
Array.set(target, 0, converter.convert(source, sourceType, targetElementType));
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ final class ObjectToCollectionGenericConverter implements GenericConverter {
|
||||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceType, targetElementType);
|
||||
}
|
||||
target.add(converter.convert(source, sourceType, targetElementType));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user