Как установить имя и значение транспортного заголовка из двух свойств? - PullRequest
3 голосов
/ 28 апреля 2019

Я хочу добавить свойство транспортного заголовка в последовательность, но также имя и значение заголовка должны быть значениями двух разных свойств.

Например, у меня есть два свойства h_name и 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"/>

Затем я хочу установить эти значения для заголовка и параметры значения транспортного заголовка, например:

<header name="(h_name)" value="(h_value)" scope="transport" action="set"/>

Я пытался использовать функцию get-property (), чтобы иметь возможность использовать значения для этих параметров транспортного заголовка и посредника complexHeader WSO2, но я не смог найти правильное решение.

<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>

Спасибо за любую идею!

1 Ответ

2 голосов
/ 28 апреля 2019

Поскольку динамические имена еще не поддерживаются [1], вы можете попробовать использовать посредник сценария или посредник класса для этого требования.

Ниже приведен фрагмент кода примера посредника сценария.

 <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

...