Reputation: 330
I want to add a transport header property in a sequence, but also name and value of the header should be the values of the two different properties.
For example, I have two properties h_name and h_value:
<property name="h_name" expression="evaluate(get-property('name'))" scope="default" type="STRING"/>
<property name="h_value" expression="evaluate(get-property('value'))" scope="default" type="STRING"/>
then, I want to set these values to header name and value parameters of a transport header, like:
<header name="(h_name)" value="(h_value)" scope="transport" action="set"/>
I tried to use get-property() function to be able to use the values for these transport header parameters and complexHeader mediator of WSO2, but I could not get a proper solution.
<header>
<m:complexHeader xmlns:m="http://org.synapse.example">
<property expression="get-property('h_name')" value="name" />
<property expression="get-property('h_value)" value="value" />
</m:complexHeader>
</header>
Thanks for any idea!
Upvotes: 4
Views: 620
Reputation: 314
Since dynamic names are not supported yet [1], can you try to use script mediator or class mediator for this requirement.
Below is a code snippet of script mediator example.
<property name="name" type="STRING" value="givenName"/>
<property name="value" type="STRING" value="123"/>
<property expression="$ctx:name" name="h_name" type="STRING"/>
<property expression="$ctx:value" name="h_value" type="STRING"/>
<script language="js">
var nameS = mc.getProperty("h_name");
var valueS = mc.getProperty("h_value");
mc.setProperty(nameS, valueS,"transport");
</script>
<log level="custom">
<property expression="$trp:givenName" name="GIVEN NAME--"/>
</log>
[1] - https://github.com/wso2/product-ei/issues/3300
Upvotes: 2