Thanks, Raul. It looks like you were correct in a fashion. The message (query) is being sent from a Producer template using an annotation. This means it sends a BeanInvocation Object rather than the json Query string. Something to do with the Proxying I guess.
I suspect the ObjectMapper in the converters class is not going to build a good BDObject query from a BeanInvocation object :) On 9 October 2012 17:20, Raul Kripalani <r...@evosent.com> wrote: > Hi Mark, > > Camel picks the most suitable @Converter by traversing the chain of > inheritance, comparing the actual payload type against the available > @Converters. > > The unit tests of the components deal with Strings and with Objects, so in > theory everything should work. > > What may be happening is that your String is actually a Stream, in which > case I can definitely see an issue cropping up, because the Stream will > fall into the generic type of "Object". > > You can display the current payload type just before sending to the MongoDB > endpoint by using a Log endpoint with showBodyType=true. > > If it's a Stream, then you can do a <convertBodyTo type="String" /> before > the MongoDB endpoint to ensure it gets recognised. > > Anyway, sure, we can make this @Converter a @Fallback converter and do > something more intelligent. But that intelligence comes at the cost of > performance, and converters are neat but can be nasty if they take a long > time to run. > > Despite that I think we have a cache in place so maybe the intelligence is > only applied once, although I don't know if this is true for @Fallback > converters too. Will have to check. > > Regards, > > *Raúl Kripalani* > Apache Camel Committer > Enterprise Architect, Program Manager, Open Source Integration specialist > http://about.me/raulkripalani | http://www.linkedin.com/in/raulkripalani > http://blog.raulkr.net | twitter: @raulvk <http://twitter.com/raulvk> > > On Tue, Oct 9, 2012 at 3:11 PM, Mark Doyle <markjohndo...@gmail.com> > wrote: > > > Hi all, > > > > Camel-mongodb has a set of provided type converters. > > > > @Converter > > public static DBObject fromStringToDBObject(String s) { > > ..blah blah > > } > > > > @Converter > > public static DBObject fromAnyObjectToDBObject(Object value) { > > ...blah blah > > } > > > > > > I'm trying to run a query which means sending a json string. After some > > debugging it looks like Camel selects the fromAnyObjectToDBObject > converter > > rather than the fromStringToDBObject converter. I''m not sure of the > > consequences of this yet, with regards to the the mongodb component, but > it > > did raise the question on how Camel deals with converters that could > > overlap given inheritance, a String is an Object after all. > > >