PDA

View Full Version : Configuration per incoming Message



nhajratw
Oct 7th, 2009, 10:51 AM
I have a scenario where an xml feed comes in with the following structure



<root>
<source>Vendor #1</source>
<objects>
<object>object 1</object>
<object>object 2</object>
<object>object 3</object>
<object>object 4</object>
</objects>
</root>


I have my spring-integration set up such that the incoming XML is split (using XPathSplitter) and then each <object> node is processed by a Transformer.

What I need to be able to do is keep track of which <source> the <object> came from when I am transforming it, but that information is currently lost by the time i get to the transformer.

My initial thought was to subclass the XPathSplitter and have it add a MessageHeader containing the <source> to each of the split messages, but I couldn't figure out where the Headers were actually set in that process.

Anyone have other ideas?

Thanks!

Mark Fisher
Oct 7th, 2009, 11:21 AM
I think what you would want to do is add a Transformer prior to the Splitter. The Transformer could set the value in the header of the pre-split Message.

Feel free to open a JIRA issue. I think it would be worth adding an XPath-based "header-enricher" in the Spring Integration XML namespace.

nhajratw
Oct 7th, 2009, 05:04 PM
Am i understanding you correctly that the Headers will propagate between steps.

i.e.

Original XML --> Transformer adds Header X --> Splitter --> each split message has a header X ?

[NOTE: I just tested this and it does appear to be the case... who knew? :-) ] thanks!

iwein
Oct 12th, 2009, 01:35 AM
who knew?

Well, we put it there on purpose :D