Skip to content

Commit 14571d8

Browse files
ctruedenhinerm
authored andcommitted
Fix NullConverter for null sources
We want the NullConverter to explicitly support null sources (and in fact, only null sources), so it must override all the canConvert method implementations accordingly.
1 parent d5575ac commit 14571d8

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

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

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131

3232
package org.scijava.convert;
3333

34+
import java.lang.reflect.Type;
35+
3436
import org.scijava.Priority;
3537
import org.scijava.plugin.Plugin;
3638
import org.scijava.util.ConversionUtils;
@@ -54,9 +56,26 @@
5456
@Plugin(type = Converter.class, priority = Priority.FIRST_PRIORITY)
5557
public class NullConverter extends AbstractConverter<Object, Object> {
5658

59+
@Override
60+
public boolean canConvert(final ConversionRequest request) {
61+
if (request == null) return false;
62+
if (request.destType() == null && request.destClass() == null) return false;
63+
return request.sourceObject() == null && request.sourceClass() == null;
64+
}
65+
66+
@Override
67+
public boolean canConvert(final Object src, final Type dest) {
68+
return src == null && dest != null;
69+
}
70+
5771
@Override
5872
public boolean canConvert(final Object src, final Class<?> dest) {
59-
return src == null;
73+
return src == null && dest != null;
74+
}
75+
76+
@Override
77+
public boolean canConvert(final Class<?> src, final Class<?> dest) {
78+
return src == null && dest != null;
6079
}
6180

6281
@Override
@@ -78,11 +97,4 @@ public Class<Object> getInputType() {
7897
return Object.class;
7998
}
8099

81-
// -- Deprecated API --
82-
83-
@Override
84-
@Deprecated
85-
public boolean canConvert(final Class<?> src, final Class<?> dest) {
86-
return false;
87-
}
88100
}

0 commit comments

Comments
 (0)