У меня есть собственный посредник, результатом этого посредника является объект List, вызовите "agencyResult".
Это код Java.
package com.quangnam.example;
import java.util.List;
import org.apache.synapse.MessageContext;
import org.apache.synapse.mediators.AbstractMediator;
import com.vpcp.services.AgencyServiceImp;
import com.vpcp.services.model.Agency;
import com.vpcp.services.model.GetAgenciesResult;
public class AgenciesListMediator extends AbstractMediator {
public boolean mediate(MessageContext context) {
getAgenciesList(context);
return true;
}
private void getAgenciesList(MessageContext context) {
AgencyServiceImp agencyService = new AgencyServiceImp();
String jsonHeader = "{}";
GetAgenciesResult getAgenciesResult = agencyService.getAgenciesList(jsonHeader);
List<Agency> agenciesList = getAgenciesResult.getAgencies();
context.setProperty("agenciesResult", agenciesList);
}
}
Как я могу определить payloadFactory для вывода как
{"data": [
{
"code":"1",
"name":"abc"
},
{
"code":"2",
"name":"def"
}
]}
Я пытаюсь это сделать
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="agenciesListSeq" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<class name="com.quangnam.example.AgenciesListMediator"/>
<property expression="$ctx:agenciesResult" name="result" scope="default" type="STRING"/>
<foreach id="foreach_1" expression="$ctx:agenciesResult">
<sequence>
<payloadFactory media-type="json">
<format>{
"code" : "$1",
"name" : "$2"
}
</format>
<args>
<arg evaluator="json" expression="$.code"/>
<arg evaluator="json" expression="$.name"/>
</args>
</payloadFactory>
</sequence>
</foreach>
<property name="messageType" scope="axis2" type="STRING" value="application/json"/>
<respond/>
</sequence>
Но у меня есть ошибка
[2018-11-15 16:43:29,237] [EI-Core] ERROR - SequenceMediator com.vpcp.services.model.Agency cannot be cast to org.apache.axiom.om.OMNode
java.lang.ClassCastException: com.vpcp.services.model.Agency cannot be cast to org.apache.axiom.om.OMNode
at org.apache.synapse.mediators.builtin.ForEachMediator.getDetachedMatchingElements(ForEachMediator.java:281)
at org.apache.synapse.mediators.builtin.ForEachMediator.mediate(ForEachMediator.java:108)
Пожалуйста, помогите мне, как решить это или дайте мне некоторые документы. Спасибо.