I'm trying to do simple if else condition in expression component. After expression component I have logger. My query here is I'm not able to see the test1
but can able to view temp
value in logger component. Why?
Same time, if I print test1
value in system.out.println. Getting the value, but why not in logger?.
<quartz:inbound-endpoint responseTimeout="10000" doc:name="Quartz" connector-ref="Quartz" jobName="Feedjob" repeatInterval="36000000" >
<quartz:event-generator-job groupName="Feedjob" jobGroupName="Feedjob"/>
</quartz:inbound-endpoint>
<s3:list-objects config-ref="Amazon_S3" doc:name="Amazon S3" bucketName="${amazon.BucketName}" prefix="master"/>
<foreach doc:name="For Each">
<set-variable variableName="TestValue" value="#[payload.getKey()]" doc:name="Variable"/>
<expression-component doc:name="Expression"><![CDATA[
sessionVars.temp = message.outboundProperties['MULE_CORRELATION_SEQUENCE'] ;
if ( sessionVars.temp == "2"){
sessionVars.test1 = sessionVars.temp ;
System.out.println(sessionVars.test1);
return message.payload;
}
else{
System.out.println(" No test");
return message.payload;
}
]]></expression-component>
<logger message="Payload**********temp:#[sessionVars.temp] test1: #[sessionVars.test1]" level="INFO" doc:name="Logger"/>
</foreach>
<logger message="Outside For each logger**********temp:#[sessionVars.temp] test1: #[sessionVars.test1]" level="INFO" doc:name="Logger"/>
It seems to be once after payload returning from expression component sessionVars.temp is set, but sessionVars.test1 diaappears. It is strange. Where I'm wrong?