Skip to content

Commit 7cb8f06

Browse files
committed
Add more boilerplate to AbstractConverter
The AbstractConverter class was leaving a lot of methods unimplemented. Typically, most of these can be chained together. The AbstractConverter now implements all but one convert and canConvert signature.
1 parent 3cd706c commit 7cb8f06

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,11 @@
3131

3232
package org.scijava.convert;
3333

34+
import java.lang.reflect.Type;
3435
import java.util.Collection;
3536

3637
import org.scijava.plugin.AbstractHandlerPlugin;
38+
import org.scijava.util.GenericUtils;
3739

3840
/**
3941
* Abstract superclass for {@link Converter} plugins. Performs appropriate
@@ -70,6 +72,32 @@ public boolean canConvert(final ConversionRequest request) {
7072
return false;
7173
}
7274

75+
@Override
76+
public boolean canConvert(final Class<?> src, final Type dest) {
77+
final Class<?> destClass = GenericUtils.getClass(dest);
78+
return canConvert(src, destClass);
79+
}
80+
81+
@Override
82+
public boolean canConvert(final Object src, final Type dest) {
83+
final Class<?> destClass = GenericUtils.getClass(dest);
84+
return canConvert(src, destClass);
85+
}
86+
87+
@Override
88+
public boolean canConvert(final Object src, final Class<?> dest) {
89+
if (src == null) return false;
90+
final Class<?> srcClass = src.getClass();
91+
92+
return canConvert(srcClass, dest);
93+
}
94+
95+
@Override
96+
public Object convert(final Object src, final Type dest) {
97+
final Class<?> destClass = GenericUtils.getClass(dest);
98+
return convert(src, destClass);
99+
}
100+
73101
@Override
74102
public Object convert(final ConversionRequest request) {
75103
if (request.sourceObject() != null) {

0 commit comments

Comments
 (0)