Skip to content

Commit 15e009f

Browse files
author
Keith Donald
committed
added utility method to reduce code duplication
1 parent 0601f0e commit 15e009f

9 files changed

+34
-161
lines changed

org.springframework.core/src/main/java/org/springframework/core/convert/support/ArrayToCollectionConverter.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,7 @@ public Set<ConvertiblePair> getConvertibleTypes() {
4949
}
5050

5151
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
52-
if (targetType.getElementTypeDescriptor() == null) {
53-
// yes
54-
return true;
55-
}
56-
boolean canConvert = conversionService.canConvert(sourceType.getElementTypeDescriptor(), targetType.getElementTypeDescriptor());
57-
if (canConvert) {
58-
// yes
59-
return true;
60-
} else {
61-
if (sourceType.getElementTypeDescriptor().getType().isAssignableFrom(targetType.getElementTypeDescriptor().getType())) {
62-
// maybe;
63-
return true;
64-
} else {
65-
// no;
66-
return false;
67-
}
68-
}
52+
return ConversionUtils.canConvertElements(sourceType.getElementTypeDescriptor(), targetType.getElementTypeDescriptor(), conversionService);
6953
}
7054

7155
@SuppressWarnings("unchecked")

org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToArrayConverter.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,7 @@ public Set<ConvertiblePair> getConvertibleTypes() {
4949
}
5050

5151
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
52-
if (sourceType.getElementTypeDescriptor() == null) {
53-
// maybe
54-
return true;
55-
}
56-
boolean canConvert = conversionService.canConvert(sourceType.getElementTypeDescriptor(), targetType.getElementTypeDescriptor());
57-
if (canConvert) {
58-
// yes
59-
return true;
60-
} else {
61-
if (sourceType.getElementTypeDescriptor().getType().isAssignableFrom(targetType.getElementTypeDescriptor().getType())) {
62-
// maybe;
63-
return true;
64-
} else {
65-
// no;
66-
return false;
67-
}
68-
}
52+
return ConversionUtils.canConvertElements(sourceType.getElementTypeDescriptor(), targetType.getElementTypeDescriptor(), conversionService);
6953
}
7054

7155
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {

org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToCollectionConverter.java

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -49,27 +49,7 @@ public Set<ConvertiblePair> getConvertibleTypes() {
4949
}
5050

5151
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
52-
if (targetType.getElementTypeDescriptor() == null) {
53-
// yes
54-
return true;
55-
}
56-
if (sourceType.getElementTypeDescriptor() == null) {
57-
// maybe
58-
return true;
59-
}
60-
boolean canConvert = conversionService.canConvert(sourceType.getElementTypeDescriptor(), targetType.getElementTypeDescriptor());
61-
if (canConvert) {
62-
// yes
63-
return true;
64-
} else {
65-
if (sourceType.getElementTypeDescriptor().getType().isAssignableFrom(targetType.getElementTypeDescriptor().getType())) {
66-
// maybe;
67-
return true;
68-
} else {
69-
// no;
70-
return false;
71-
}
72-
}
52+
return ConversionUtils.canConvertElements(sourceType.getElementTypeDescriptor(), targetType.getElementTypeDescriptor(), conversionService);
7353
}
7454

7555
@SuppressWarnings("unchecked")

org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToObjectConverter.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,7 @@ public Set<ConvertiblePair> getConvertibleTypes() {
4343
}
4444

4545
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
46-
if (sourceType.getElementTypeDescriptor() == null) {
47-
// maybe
48-
return true;
49-
}
50-
boolean canConvert = conversionService.canConvert(sourceType.getElementTypeDescriptor(), targetType);
51-
if (canConvert) {
52-
// yes
53-
return true;
54-
} else {
55-
if (sourceType.getElementTypeDescriptor().getType().isAssignableFrom(targetType.getType())) {
56-
// maybe;
57-
return true;
58-
} else {
59-
// no;
60-
return false;
61-
}
62-
}
46+
return ConversionUtils.canConvertElements(sourceType.getElementTypeDescriptor(), targetType, conversionService);
6347
}
6448

6549
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {

org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToStringConverter.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -45,23 +45,7 @@ public Set<ConvertiblePair> getConvertibleTypes() {
4545
}
4646

4747
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
48-
if (sourceType.getElementTypeDescriptor() == null) {
49-
// maybe
50-
return true;
51-
}
52-
boolean canConvert = conversionService.canConvert(sourceType.getElementTypeDescriptor(), targetType);
53-
if (canConvert) {
54-
// yes
55-
return true;
56-
} else {
57-
if (sourceType.getElementTypeDescriptor().getType().isAssignableFrom(targetType.getType())) {
58-
// maybe;
59-
return true;
60-
} else {
61-
// no;
62-
return false;
63-
}
64-
}
48+
return ConversionUtils.canConvertElements(sourceType.getElementTypeDescriptor(), targetType, conversionService);
6549
}
6650

6751
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {

org.springframework.core/src/main/java/org/springframework/core/convert/support/ConversionUtils.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.core.convert.support;
1818

1919
import org.springframework.core.convert.ConversionFailedException;
20+
import org.springframework.core.convert.ConversionService;
2021
import org.springframework.core.convert.TypeDescriptor;
2122
import org.springframework.core.convert.converter.GenericConverter;
2223

@@ -40,5 +41,29 @@ public static Object invokeConverter(GenericConverter converter, Object source,
4041
throw new ConversionFailedException(sourceType, targetType, source, ex);
4142
}
4243
}
44+
45+
public static boolean canConvertElements(TypeDescriptor sourceElementType, TypeDescriptor targetElementType, ConversionService conversionService) {
46+
if (targetElementType == null) {
47+
// yes
48+
return true;
49+
}
50+
if (sourceElementType == null) {
51+
// maybe
52+
return true;
53+
}
54+
boolean canConvert = conversionService.canConvert(sourceElementType, targetElementType);
55+
if (canConvert) {
56+
// yes
57+
return true;
58+
} else {
59+
if (sourceElementType.getType().isAssignableFrom(targetElementType.getType())) {
60+
// maybe;
61+
return true;
62+
} else {
63+
// no;
64+
return false;
65+
}
66+
}
67+
}
4368

4469
}

org.springframework.core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java

Lines changed: 2 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -72,51 +72,11 @@ public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor t
7272
// internal helpers
7373

7474
private boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) {
75-
if (targetType.getMapKeyTypeDescriptor() == null) {
76-
// yes
77-
return true;
78-
}
79-
if (sourceType.getMapKeyTypeDescriptor() == null) {
80-
// maybe
81-
return true;
82-
}
83-
boolean canConvert = conversionService.canConvert(sourceType.getMapKeyTypeDescriptor(), targetType.getMapKeyTypeDescriptor());
84-
if (canConvert) {
85-
// yes
86-
return true;
87-
} else {
88-
if (sourceType.getMapKeyTypeDescriptor().getType().isAssignableFrom(targetType.getMapKeyTypeDescriptor().getType())) {
89-
// maybe;
90-
return true;
91-
} else {
92-
// no;
93-
return false;
94-
}
95-
}
75+
return ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(), targetType.getMapKeyTypeDescriptor(), conversionService);
9676
}
9777

9878
private boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {
99-
if (targetType.getMapValueTypeDescriptor() == null) {
100-
// yes
101-
return true;
102-
}
103-
if (sourceType.getMapValueTypeDescriptor() == null) {
104-
// maybe
105-
return true;
106-
}
107-
boolean canConvert = conversionService.canConvert(sourceType.getMapValueTypeDescriptor(), targetType.getMapValueTypeDescriptor());
108-
if (canConvert) {
109-
// yes
110-
return true;
111-
} else {
112-
if (sourceType.getMapValueTypeDescriptor().getType().isAssignableFrom(targetType.getMapValueTypeDescriptor().getType())) {
113-
// maybe;
114-
return true;
115-
} else {
116-
// no;
117-
return false;
118-
}
119-
}
79+
return ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(), targetType.getMapValueTypeDescriptor(), conversionService);
12080
}
12181

12282
private Object convertKey(Object sourceKey, TypeDescriptor sourceType, TypeDescriptor targetType) {

org.springframework.core/src/main/java/org/springframework/core/convert/support/ObjectToArrayConverter.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,7 @@ public Set<ConvertiblePair> getConvertibleTypes() {
4444
}
4545

4646
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
47-
boolean canConvert = conversionService.canConvert(sourceType, targetType.getElementTypeDescriptor());
48-
if (canConvert) {
49-
// yes
50-
return true;
51-
} else {
52-
if (sourceType.getType().isAssignableFrom(targetType.getElementTypeDescriptor().getType())) {
53-
// maybe;
54-
return true;
55-
} else {
56-
// no;
57-
return false;
58-
}
59-
}
47+
return ConversionUtils.canConvertElements(sourceType, targetType.getElementTypeDescriptor(), conversionService);
6048
}
6149

6250
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {

org.springframework.core/src/main/java/org/springframework/core/convert/support/ObjectToCollectionConverter.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,7 @@ public Set<ConvertiblePair> getConvertibleTypes() {
4646
}
4747

4848
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
49-
if (targetType.getElementTypeDescriptor() == null) {
50-
// yes
51-
return true;
52-
}
53-
boolean canConvert = conversionService.canConvert(sourceType, targetType.getElementTypeDescriptor());
54-
if (canConvert) {
55-
// yes
56-
return true;
57-
} else {
58-
if (sourceType.getType().isAssignableFrom(targetType.getElementTypeDescriptor().getType())) {
59-
// maybe;
60-
return true;
61-
} else {
62-
// no;
63-
return false;
64-
}
65-
}
49+
return ConversionUtils.canConvertElements(sourceType, targetType.getElementTypeDescriptor(), conversionService);
6650
}
6751

6852
@SuppressWarnings("unchecked")

0 commit comments

Comments
 (0)