Sorry - an idiotic mistake from my side. I had switched the "from class" and the "to class".
getContext().getTypeConverterRegistry().addTypeConverter(MmlMessage.class, InputStream.class, new MmlMessage2StringTypeConverter()); should instead be: getContext().getTypeConverterRegistry().addTypeConverter(InputStream.class, MmlMessage.class, new MmlMessage2StringTypeConverter()); /Bengt 2014-03-20 10:27 GMT+01:00 Bengt Rodehav <[email protected]>: > I'm using Camel 2.12.3 running in Karaf 2.3.4. > > I'm trying to add a custom type converter to my context but can't get it > to work. My code is essentially as follows: > > getContext().getTypeConverterRegistry().addTypeConverter(MmlMessage.class, > InputStream.class, new MmlMessage2StringTypeConverter()); > > from(...).process(new Processor() { > public void process(Exchange theExchange) throws Exception { > Message message = theExchange.getIn(); > MmlMessage mmlMessage = ... // Create an MmlMessage > > System.out.println("Trying to convert"); > try { > TypeConverter tc = theExchange.getContext().getTypeConverter(); > System.out.println("tc: " + tc); > InputStream is = tc.convertTo(InputStream.class, mmlMessage); > System.out.println("is: " + is); > } catch (Exception e) { > System.out.println("Conversion failed"); > e.printStackTrace(); > } > } > }) > > My type converter looks something like this: > > public class MmlMessage2StringTypeConverter extends TypeConverterSupport { > @SuppressWarnings("unchecked") > public <T> T convertTo(Class<T> theType, Exchange theExchange, Object > theValue) { > System.out.println("convertTo: " + theValue); > InputStream stream = null; > ... // Create an InputStream from an MmlMessage > return (T) stream; > } > } > > The output I get in the Karaf console is: > > Trying to convert > tc: org.apache.camel.core.osgi.OsgiTypeConverter@4316e1c9 > is: null > > Thus my type converter is never found and never used. > > Am I'm doing this wrong? Isn't this the way to add a custom type converter? > > /Bengt > >
