<myConfigFile>  
 <entry1>value1</entry1>  
 <entry2>value2</entry2>  
 </myConfigFile>  The following sequence template reads the xml content from the registry(conf:/myConfigFile) to a property and base on the entry element parameter pass by the call template mediator, a dynamic xpath expression will be built and evaluate the value of the entry element.
 <template xmlns="http://ws.apache.org/ns/synapse" name="myTemplate">  
   <parameter name="entryValue"></parameter>  
   <sequence>  
    <property xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="http://org.apache.synapse/xsd" name="myConfigFile" expression="get-property('registry','conf:/myConfigFile')" scope="default" type="OM"></property>  
    <log level="custom">  
      <property xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="http://org.apache.synapse/xsd" name="+++++++Logging myConfigFile+++++++" expression="get-property('myConfigFile')"></property>  
    </log>  
    <property xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="http://org.apache.synapse/xsd" name="entryparam" expression="$func:entryValue"></property>  
    <property xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="http://org.apache.synapse/xsd" name="xpathExpression" expression="fn:concat('$ctx:myConfigFile//',get-property('entryparam'))"></property>  
    <log>  
      <property xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="http://org.apache.synapse/xsd" name="****entry value****" expression="evaluate($ctx:xpathExpression)"></property>  
    </log>  
   </sequence>  
 </template>  
Following API including the call template mediator invokes the above template.
 <api xmlns="http://ws.apache.org/ns/synapse" name="TestApi" context="/sample">  
   <resource methods="GET">  
    <inSequence>  
      <call-template target="myTemplate">  
       <with-param name="entryValue" value="entry2"></with-param>  
      </call-template>  
    </inSequence>  
   </resource>  
 </api>  
Observed the following log on the ESB console.
 INFO - LogMediator +++++++Logging myConfigFile+++++++ = <myConfigFile>  
 <entry1>value1</entry1>  
 <entry2>value2</entry2>  
 </myConfigFile>  
 [2017-01-20 13:21:12,016] INFO - LogMediator To: /sample, MessageID: urn:uuid:8cc61345-3358-4b0b-bddc-c950a863416e, Direction: request, ****entry value**** = value2  
 
No comments:
Post a Comment