karacaoglanb
karacaoglanb

Reputation: 330

How to set name and value of a transport header from two properties?

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

Answers (1)

Nirothipan
Nirothipan

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

Related Questions