I am trying to route a message based on information in a XML snippet stored as a local entry (key=mapping_id_ep_v1.xml). The id used to look-up the correct endpoint and it is part of the message body.
This is the XML snippet used to map id's to endpoints:
<mappings>
<mapping id="ep_1">http://localhost:8280/services/ep_1</mapping>
<mapping id="ep_2">http://localhost:8280/services/ep_2</mapping>
<mapping id="ep_3">http://localhost:8280/services/ep_3</mapping>
<mappings>
I retrieve the id from the body to look-up the endpoint using the following statement:
<property name="LOOK-UP" expression="//controleFile/id" />
I can load the XML file into a property file using the following entry in a sequence:
<property name="MAPPING" expression="get-property('mapping_id_ep_v1.xml')" />
I log the property using the following statement:
<log level="custom">
<property name="Look-up" expression="get-property('LOOK-UP')" />
<property name="Mapping" expression="get-property('MAPPING')" />
</log>
So far so good. I haven't been able to figure out how to retrieve the correct endpoint from the MAPPING property. Can anyone help out?
I have got a similar situation. The problem seems to be that you cannot perform xpath expressions over a property content.
You can easily do what you need by using a Javascript script after loading the xml into a property. Javascript+e4x offers an easy way to access to XML content of variables by xpath expressions.
Hope this helps you.
Yes this is a limitation. Actually, this should be a functionality of the enrich mediator. Will create a feature request to get this fixed for the next ESB release.
For now you can do this with:
I know... it's a hack :)
I solved my question using a different approach. It is in line with the answer given bij fipries.
In the proxy I added the following:
This is the contents of mapping_id_ep_v1:
This is the code in TestScript_2:
The proxy loads the mapping xml into a property. This property is converted to XML in the javascript code and then using LOOK_UP the correct endpoint is retrieved.
Hope this helps someone else.
Regards, nidkil