Skip to content

Commit 6593fcd

Browse files
committed
Converter: add type parameters
Added generic parameters for input and output types of the Covnerter class. The return values for getInput and getOutput type methods have been updated appropriately.
1 parent 8b7a104 commit 6593fcd

File tree

8 files changed

+37
-34
lines changed

8 files changed

+37
-34
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
* @author Mark Hiner
4444
*/
4545
public abstract class AbstractConvertService extends
46-
AbstractHandlerService<ConversionRequest, Converter> implements
46+
AbstractHandlerService<ConversionRequest, Converter<?, ?>> implements
4747
ConvertService
4848
{
4949

@@ -58,13 +58,13 @@ public Object convert(Object src, Type dest) {
5858
public <T> T convert(Object src, Class<T> dest) {
5959
// NB: repeated code with convert(ConversionRequest), because the
6060
// handler's convert method respects the T provided
61-
Converter handler = getHandler(src, dest);
61+
Converter<?, ?> handler = getHandler(src, dest);
6262
return handler == null ? null : handler.convert(src, dest);
6363
}
6464

6565
@Override
6666
public Object convert(ConversionRequest request) {
67-
Converter handler = getHandler(request);
67+
Converter<?, ?> handler = getHandler(request);
6868
return handler == null ? null : handler.convert(request);
6969
}
7070

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@
5353
*
5454
* @author Mark Hiner
5555
*/
56-
public abstract class AbstractConverter extends
57-
AbstractHandlerPlugin<ConversionRequest> implements Converter
56+
public abstract class AbstractConverter<I, O> extends
57+
AbstractHandlerPlugin<ConversionRequest> implements Converter<I, O>
5858
{
5959

6060
// -- ConversionHandler methods --

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
* @author Mark Hiner
4747
*/
4848
public interface ConvertService extends
49-
HandlerService<ConversionRequest, Converter>
49+
HandlerService<ConversionRequest, Converter<?, ?>>
5050
{
5151
/**
5252
* @see Converter#convert(Object, Type)
@@ -66,22 +66,22 @@ public interface ConvertService extends
6666
/**
6767
* @see #getHandler(ConversionRequest)
6868
*/
69-
Converter getHandler(Object src, Class<?> dest);
69+
Converter<?, ?> getHandler(Object src, Class<?> dest);
7070

7171
/**
7272
* @see #getHandler(ConversionRequest)
7373
*/
74-
Converter getHandler(Class<?> src, Class<?> dest);
74+
Converter<?, ?> getHandler(Class<?> src, Class<?> dest);
7575

7676
/**
7777
* @see #getHandler(ConversionRequest)
7878
*/
79-
Converter getHandler(Object src, Type dest);
79+
Converter<?, ?> getHandler(Object src, Type dest);
8080

8181
/**
8282
* @see #getHandler(ConversionRequest)
8383
*/
84-
Converter getHandler(Class<?> src, Type dest);
84+
Converter<?, ?> getHandler(Class<?> src, Type dest);
8585

8686
/**
8787
* @see #supports(ConversionRequest)

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
* @see ConversionRequest
4848
* @author Mark Hiner
4949
*/
50-
public interface Converter extends HandlerPlugin<ConversionRequest>
50+
public interface Converter<I, O> extends HandlerPlugin<ConversionRequest>
5151
{
5252

5353
/**
@@ -183,10 +183,10 @@ public interface Converter extends HandlerPlugin<ConversionRequest>
183183
/**
184184
* @return The base {@code Class} this {@code Converter} produces as output.
185185
*/
186-
Class<?> getOutputType();
186+
Class<O> getOutputType();
187187

188188
/**
189189
* @return The base {@code Class} this {@code Converter} accepts as input.
190190
*/
191-
Class<?> getInputType();
191+
Class<I> getInputType();
192192
}

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,10 @@
4949
public class DefaultConvertService extends AbstractConvertService
5050
{
5151

52+
@SuppressWarnings({ "unchecked", "rawtypes" })
5253
@Override
53-
public Class<Converter> getPluginType() {
54-
return Converter.class;
54+
public Class<Converter<?, ?>> getPluginType() {
55+
return (Class)Converter.class;
5556
}
5657

5758
@Override
@@ -62,22 +63,22 @@ public Class<ConversionRequest> getType() {
6263
// -- ConversionService methods --
6364

6465
@Override
65-
public Converter getHandler(final Object src, final Class<?> dest) {
66+
public Converter<?, ?> getHandler(final Object src, final Class<?> dest) {
6667
return getHandler(new ConversionRequest(src, dest));
6768
}
6869

6970
@Override
70-
public Converter getHandler(final Class<?> src, final Class<?> dest) {
71+
public Converter<?, ?> getHandler(final Class<?> src, final Class<?> dest) {
7172
return getHandler(new ConversionRequest(src, dest));
7273
}
7374

7475
@Override
75-
public Converter getHandler(final Object src, final Type dest) {
76+
public Converter<?, ?> getHandler(final Object src, final Type dest) {
7677
return getHandler(new ConversionRequest(src, dest));
7778
}
7879

7980
@Override
80-
public Converter getHandler(final Class<?> src, final Type dest) {
81+
public Converter<?, ?> getHandler(final Class<?> src, final Type dest) {
8182
return getHandler(new ConversionRequest(src, dest));
8283
}
8384

@@ -105,7 +106,7 @@ public boolean supports(final Class<?> src, final Type dest) {
105106
public Collection<Object> getCompatibleInputs(Class<?> dest) {
106107
Set<Object> objects = new LinkedHashSet<Object>();
107108

108-
for (final Converter c : getInstances()) {
109+
for (final Converter<?, ?> c : getInstances()) {
109110
if (dest.isAssignableFrom(c.getOutputType())) {
110111
c.populateInputCandidates(objects);
111112
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
* @author Mark Hiner
5656
*/
5757
@Plugin(type = Converter.class)
58-
public class DefaultConverter extends AbstractConverter {
58+
public class DefaultConverter extends AbstractConverter<Object, Object> {
5959

6060
// -- ConversionHandler methods --
6161

@@ -266,12 +266,12 @@ public <T> T convert(final Object src, final Class<T> dest) {
266266
}
267267

268268
@Override
269-
public Class<?> getOutputType() {
269+
public Class<Object> getOutputType() {
270270
return Object.class;
271271
}
272272

273273
@Override
274-
public Class<?> getInputType() {
274+
public Class<Object> getInputType() {
275275
return Object.class;
276276
}
277277

src/main/java/org/scijava/util/ConversionUtils.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public class ConversionUtils {
5151

5252
private static ConvertService convertService;
5353

54-
private static Converter converterNoContext;
54+
private static Converter<?, ?> converterNoContext;
5555

5656
private static double servicePriority = 0.0;
5757

@@ -195,7 +195,7 @@ public static void setDelegateService(final ConvertService convertService,
195195
*/
196196
@Deprecated
197197
public static Object convert(final Object src, final Type dest) {
198-
final Converter handler = handler(new ConversionRequest(src, dest));
198+
final Converter<?, ?> handler = handler(new ConversionRequest(src, dest));
199199
return (handler == null ? null : handler.convert(src, dest));
200200
}
201201

@@ -205,7 +205,7 @@ public static Object convert(final Object src, final Type dest) {
205205
*/
206206
@Deprecated
207207
public static <T> T convert(final Object src, final Class<T> dest) {
208-
final Converter handler = handler(new ConversionRequest(src, dest));
208+
final Converter<?, ?> handler = handler(new ConversionRequest(src, dest));
209209
return (handler == null ? null : handler.convert(src, dest));
210210
}
211211

@@ -215,7 +215,7 @@ public static <T> T convert(final Object src, final Class<T> dest) {
215215
*/
216216
@Deprecated
217217
public static boolean canConvert(final Class<?> src, final Type dest) {
218-
final Converter handler = handler(new ConversionRequest(src, dest));
218+
final Converter<?, ?> handler = handler(new ConversionRequest(src, dest));
219219
return (handler == null ? false : handler.canConvert(src, dest));
220220
}
221221

@@ -225,7 +225,7 @@ public static boolean canConvert(final Class<?> src, final Type dest) {
225225
*/
226226
@Deprecated
227227
public static boolean canConvert(final Class<?> src, final Class<?> dest) {
228-
final Converter handler = handler(new ConversionRequest(src, dest));
228+
final Converter<?, ?> handler = handler(new ConversionRequest(src, dest));
229229
return (handler == null ? false : handler.canConvert(src, dest));
230230
}
231231

@@ -235,7 +235,7 @@ public static boolean canConvert(final Class<?> src, final Class<?> dest) {
235235
*/
236236
@Deprecated
237237
public static boolean canConvert(final Object src, final Type dest) {
238-
final Converter handler = handler(new ConversionRequest(src, dest));
238+
final Converter<?, ?> handler = handler(new ConversionRequest(src, dest));
239239
return (handler == null ? false : handler.canConvert(src, dest));
240240
}
241241

@@ -245,7 +245,7 @@ public static boolean canConvert(final Object src, final Type dest) {
245245
*/
246246
@Deprecated
247247
public static boolean canConvert(final Object src, final Class<?> dest) {
248-
final Converter handler = handler(new ConversionRequest(src, dest));
248+
final Converter<?, ?> handler = handler(new ConversionRequest(src, dest));
249249
return (handler == null ? false : handler.canConvert(src, dest));
250250
}
251251

@@ -270,7 +270,7 @@ public static Class<?> getComponentClass(final Type type) {
270270
*
271271
* @return The {@link Converter} to use for handling the given request.
272272
*/
273-
private static Converter handler(final ConversionRequest data) {
273+
private static Converter<?, ?> handler(final ConversionRequest data) {
274274
if (convertService != null) return convertService.getHandler(data);
275275

276276
if (converterNoContext == null) converterNoContext = new DefaultConverter();

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,9 @@ public static enum Words {
578578
* methods are not implemented and are unnecessary.
579579
*/
580580
@Plugin(type = Converter.class, priority = Priority.LAST_PRIORITY)
581-
public static class StringHisListConverter extends AbstractConverter {
581+
public static class StringHisListConverter extends
582+
AbstractConverter<String, HisList>
583+
{
582584

583585
// Sample strings
584586

@@ -598,12 +600,12 @@ public void populateInputCandidates(final Collection<Object> objects) {
598600
}
599601

600602
@Override
601-
public Class<?> getOutputType() {
603+
public Class<HisList> getOutputType() {
602604
return HisList.class;
603605
}
604606

605607
@Override
606-
public Class<?> getInputType() {
608+
public Class<String> getInputType() {
607609
return String.class;
608610
}
609611

0 commit comments

Comments
 (0)