I may be missing something obvious here, but I'm can't find a way to do a type conversion that uses generics. For instance, I want to do a conversion of an InputStream into a Collection of Foo objects.
So my convert method might look like this:

@Converter
public List<Foo> convertToFoo(InputStream input, Exchange exch) {
    // something that converts the input into List<Foo>
}


But to use this I can't specify a generic type, only a class name (presumably because of erasures)

List<Foo> myFoos = camelContext.getTypeConverter().convertTo(List.class);

And this means that I can't have another conversion that converts to List<Bar>.


The only workaround I can see is to create subclasses of List

class FooList extends List<Foo> { }

class BarList extends List<Bar> { }


A related topic is described here:
http://gafter.blogspot.co.uk/2006/12/super-type-tokens.html

Are there any better solutions to this?

Tim








Reply via email to