Skip to content

Commit 1a4b024

Browse files
awalter17ctrueden
authored andcommitted
Fix NullConverter to match for both null src and dest
Before the NullConverter was only matched for null src Objects. This converter still will not be matched if canConvert(Class<?>, Class<?>) is called with a null source Class. Additionally, the ConverterTest has been updated to reflect this change.
1 parent b917b21 commit 1a4b024

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,24 @@ public class NullConverter extends AbstractConverter<Object, Object> {
6060
@Override
6161
public boolean canConvert(final ConversionRequest request) {
6262
if (request == null) return false;
63-
if (request.destType() == null && request.destClass() == null) return false;
64-
return request.sourceObject() == null && request.sourceClass() == null;
63+
return (request.destType() == null && request.destClass() == null) ||
64+
(request.sourceObject() == null && request.sourceClass() == null);
6565
}
6666

6767
@Override
6868
public boolean canConvert(final Object src, final Type dest) {
69-
return src == null && dest != null;
69+
return src == null || dest == null;
7070
}
7171

7272
@Override
7373
public boolean canConvert(final Object src, final Class<?> dest) {
74-
return src == null && dest != null;
74+
return src == null || dest == null;
7575
}
7676

7777
@Override
7878
public boolean canConvert(final Class<?> src, final Class<?> dest) {
79-
return src == null && dest != null;
79+
if (src == null) return false;
80+
return dest == null;
8081
}
8182

8283
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public void testNullConverter() {
6767
final NullConverter nc = new NullConverter();
6868
assertFalse(nc.canConvert(Object.class, Object.class));
6969
assertFalse(nc.canConvert(Object.class, (Type) Object.class));
70-
assertTrue(nc.canConvert((Class<?>) null, Object.class));
70+
assertFalse(nc.canConvert((Class<?>) null, Object.class));
7171
assertTrue(nc.canConvert((Object) null, Object.class));
7272
assertTrue(nc.canConvert((ConverterTest) null, ArrayList.class));
7373
assertNull(nc.convert((Object) null, Object.class));

0 commit comments

Comments
 (0)