Skip to content

Commit a95d826

Browse files
hinermctrueden
authored andcommitted
Converters: never pass primitives
In the AbstractConverter we should ensure that nonprimitive types are always returned for input/output classes.
1 parent 7371745 commit a95d826

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

src/main/java/org/scijava/convert/AbstractConverter.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,10 @@ public boolean canConvert(final Object src, final Class<?> dest) {
108108
@Override
109109
public boolean canConvert(final Class<?> src, final Class<?> dest) {
110110
if (src == null) return false;
111-
return ConversionUtils.canCast(src, getInputType()) &&
112-
ConversionUtils.canCast(getOutputType(), dest);
111+
final Class<?> saneSrc = ConversionUtils.getNonprimitiveType(src);
112+
final Class<?> saneDest = ConversionUtils.getNonprimitiveType(dest);
113+
return ConversionUtils.canCast(saneSrc, getInputType()) &&
114+
ConversionUtils.canCast(getOutputType(), saneDest);
113115
}
114116

115117
@Override

src/test/java/org/scijava/convert/ConvertServiceTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,9 @@ public void testCanConvert() {
188188
assertTrue(convertService.supports(double.class, float.class));
189189
assertTrue(convertService.supports(float.class, double.class));
190190

191-
// boxing is not reported to work
192-
// TODO: Consider changing this behavior.
193-
assertFalse(convertService.supports(int.class, Number.class));
191+
// check that boxing works
192+
assertTrue(convertService.supports(int.class, Number.class));
193+
assertTrue(convertService.supports(Integer.class, double.class));
194194

195195
// can convert anything to string
196196
assertTrue(convertService.supports(Object.class, String.class));

0 commit comments

Comments
 (0)