I have been reading mailing lists and forums trying to figure this out but haven't really come up with a clean solution.
I have a zigbee ZCL component I wrote for Camel that parses out a few ZCL/ZDO messages. One of them is an attributes report, which contains a list of attributes, each with: - A numeric ID indicating which parameter - A one-byte type ID which tells you if the value is a float, int, string, whatever - A value, which could be of various types To use these components I do something like this: from("seda:xbeeInput") .to("xbee://localhost") .to("zcl://localhost") .to("zclSplitter://localhost") .to(xmppUri); The first four steps work great - the xbeeInput comes from the serial port, sends the message to xbee decoding, and if that is successful it parses it into a ZCL message containing some number of attributes. The splitter is where I'm really having the problems. I'd really like it to be just another Endpoint/Component/something in the library so that the user doesn't have to screw around configuring custom splitters or beans. I have tried a number of things to solve this, but I'm getting so far deep in the weeds that I feel like I'm on the wrong track. Does anybody have an example they can show me of a custom Producer (or something more appropriate?) that can act like a cusom splitter, replacing whatever Exchange comes in with a series of smaller Exchanges? I'm looking for something like: public class ZclSplitter exends DefaultProducer { public List<Exchange> process( Exchange originalExchange ) { .... } } How is one supposed to accomplish this with a component? --Chris