Reputation: 87
How to get the latest timestamp by comparing the timeStamp received from soap dynamically with the latest timestamp by using Script mediator.
Input will be like 2018-04-26T05:59:38.226-07:00
<iterate expression="/Customer" id="" sequential="true">
<target>
<sequence>
<property expression="CustomerID" name="CUS_ID_TO_UPDATE" scope="default" type="STRING"/>
<property expression="UpdateDate" name="LATEST_DATE" scope="default" type="STRING" />
</propertyGroup>
<script language="js"><![CDATA[
var log = mc.getServiceLog();
var simpleDateFormat = Packages.java.text.SimpleDateFormat;
var Customer_Id = mc.getProperty('CUS_ID_TO_UPDATE');
var Updated_Date = mc.getProperty('LATEST_DATE');
var format = new simpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
var Time = format.parse(Updated_Date);
var Latest_Updated_Date = "";
var Latest_Customer_Id ="";
if (Time.getTime()>Latest_Updated_Date)
{
Latest_Updated_Date = Time;
Latest_Customer_Id = Customer_Id;
}
else
{
Latest_Updated_Date;
Latest_Customer_Id;
}
log.info(Latest_Updated_Date);
log.info(Latest_Customer_Id);
mc.setProperty('Date',Latest_Updated_Date);
mc.setProperty('ID',Latest_Customer_Id);]]></script>
<log>
<property expression="get-property('Date')" name="Date"/>
<property expression="get-property('ID')" name="ID"/>
</log>
</sequence>
</target>
Upvotes: 1
Views: 262
Reputation: 14584
Here is an example.
<?xml version="1.0" encoding="UTF-8"?>
<api context="/time" name="Time" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="POST">
<inSequence>
<property expression="//time1/text()" name="time1" scope="default" type="STRING"/>
<property expression="//time2/text()" name="time2" scope="default" type="STRING"/>
<script language="nashornJs"><![CDATA[
var time1 = mc.getProperty("time1");
var time2 = mc.getProperty("time2");
var eTime1 = new Date(time1).getTime();
var eTime2 = new Date(time2).getTime();
if(eTime1 > eTime2) {
mc.setProperty("latestTime", time1);
} else {
mc.setProperty("latestTime", time2);
}]]></script>
<payloadFactory media-type="xml">
<format>
<LatestTime>$1</LatestTime>
</format>
<args>
<arg evaluator="xml" expression="$ctx:latestTime"/>
</args>
</payloadFactory>
<respond/>
</inSequence>
<outSequence/>
<faultSequence/>
</resource>
</api>
Request
<request>
<time1>2018-04-26T05:58:38.226-07:00</time1>
<time2>2018-04-26T05:59:38.226-06:00</time2>
</request>
Response
<LatestTime>2018-04-26T05:59:38.226-06:00</LatestTime>
Upvotes: 1