sathish Sankarzz
sathish Sankarzz

Reputation: 87

How can we Get the Latest timestamp by comparing the timestamp dynamically in WSO2

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

Answers (1)

ycr
ycr

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

Related Questions