String concatenation in Script Mediator of WSO2 ESB 5.0.0

Ajanthan Eliyathamby πŸ‡±πŸ‡°
2 min readDec 13, 2023

--

[Article moved from ajanthane.blogspot.com]

If you are using String concatenation inside Javascript mediator, as the Rhino engine ( Rhino JavaScript engine (1.74) ) has been updated in WSO2 ESB5.0.0, the same concatenation functionality worked in ESB4.9.0 will not work in ESB5.0.0. As it is a problem in Rhino Engine, to overcome the issue you need to follow the below. To get more understanding you can refer [1] also.

[1] https://www-01.ibm.com/support/docview.wss?uid=swg1JR55739

When you set up proxy as below:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="StringConcatenationJS"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="http,https">
<target>
<inSequence>
<property name="STATUS"
value="--------------------StringConcatenationJS Proxy Invoked-------------------"/>
<script language="js">var log = mc.getServiceLog();
log.info("-----------Executing Script Mediator-------------------- ");
var name = 'ajanthan';
var addres = 'batticaloa';
var cconcatenatedString = name + addres;
log.info("Concatenated string: " + cconcatenatedString);

mc.setProperty('concatString',cconcatenatedString);</script>
<log level="custom">
<property expression="get-property('concatString')"
name="Concatenated String @ Property: "/>
</log>
</inSequence>
</target>
<description/>
</proxy>

You will get and Empty Result as below:

[2017-01-28 14:20:29,382]  INFO - ScriptMessageContext -----------Executing Script Mediator-------------------- 
[2017-01-28 14:20:29,383] INFO - ScriptMessageContext Concatenated string: ajanthanbatticaloa
[2017-01-28 14:20:29,387] INFO - LogMediator Concatenated String @ Property: =

To overcome this when you set the property cconcatenatedString.toString().

Updated proxy as below:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="StringConcatenationJS"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="http,https">
<target>
<inSequence>
<property name="STATUS"
value="--------------------StringConcatenationJS Proxy Invoked-------------------"/>
<script language="js">var log = mc.getServiceLog();
log.info("-----------Executing Script Mediator-------------------- ");
var name = 'ajanthan';
var addres = 'batticaloa';
var cconcatenatedString = name + addres;
log.info("Concatenated string: " + cconcatenatedString);

mc.setProperty('concatString',cconcatenatedString.toString());</script>
<log level="custom">
<property expression="get-property('concatString')"
name="Concatenated String @ Property: "/>
</log>
</inSequence>
</target>
<description/>
</proxy>

The Result will be:

[2017-01-28 14:27:21,679]  INFO - ScriptMessageContext -----------Executing Script Mediator-------------------- 
[2017-01-28 14:27:21,679] INFO - ScriptMessageContext Concatenated string: ajanthanbatticaloa
[2017-01-28 14:27:21,680] INFO - LogMediator Concatenated String @ Property: = ajanthanbatticaloa

--

--

Ajanthan Eliyathamby πŸ‡±πŸ‡°
Ajanthan Eliyathamby πŸ‡±πŸ‡°

Written by Ajanthan Eliyathamby πŸ‡±πŸ‡°

Associate Architect β€” Enterprise Integration | 14x WSO2 | 1x HashiCorp | 1Γ— Azure | Runner-Up WCPY 2020 | https://ajanthane.blogspot.com

No responses yet