Reputation: 71
I have a mule flow like this --
<flow name="mule_dbFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
<db:select config-ref="Oracle_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[SELECT sf.MAESTRO_ID, sf.SFTP_HOST, fm.SOURCE_TYPE, fm.ENCRYPTION, fm.SOURCE_MAESTRO_ID, fm.TARGET_MAESTRO_ID from sftp_mule sf, filemover_location_tbl fm where sf.maestro_id = fm.SOURCE_MAESTRO_ID]]></db:parameterized-query>
</db:select>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<logger level="INFO" doc:name="Logger" message="Data: #[payload]"/>
<json:json-to-object-transformer doc:name="JSON to Object" returnClass="java.util.HashMap"/>
<logger level="INFO" doc:name="Logger" message="NEW DATA**** #[payload.SOURCE_TYPE]"/>
<choice doc:name="Choice">
<when expression="#[(payload.SOURCE_TYPE == 'file') || (payload.SOURCE_TYPE == 'sftp')]">
<json:object-to-json-transformer doc:name="Object to JSON"/>
<logger level="INFO" doc:name="Logger" message=“SFTP Data: #[payload]"/>
</when>
<otherwise>
<logger message="Default Choice" level="INFO" doc:name="Logger"/>
</otherwise>
</choice>
</flow>
After the object-to-json-transformer the json looks like this.
[{"SOURCE_MAESTRO_ID":"LIPSTP01_FTUPN","SOURCE_TYPE":"sftp","SFTP_HOST":"sftp.intersourcing.com","TARGET_MAESTRO_ID":"LIPSTP01_PS","MAESTRO_ID":"LIPSTP01_FTUPN","ENCRYPTION":"no"}]
But after that when i try to transform the json to a HashMap it throws error --
Failed to transform from "json" to "java.util.HashMap". Message payload is of type: String (org.mule.api.transformer.TransformerMessagingException). Message payload is of type: String
But if i change it to java.util.List there is no error. But in that case I am not able to perform the choice.
What am i doing wrong ?
Upvotes: 0
Views: 6636
Reputation: 11606
Your SQL query will return a List of Maps. So make sure you configure the transformer to return an array of maps.
<json:json-to-object-transformer doc:name="JSON to Object" returnClass="java.util.HashMap[]"/>
Upvotes: 4