Все сделки,
Я бы создал один собственный посредник в моем проекте ESB WSO2 в OutSequence.
Я хотел бы изменить результат в конверте SOAP, отправляемом из серверной части потребителю. Но с небольшой корректировкой данных в зависимости от результата.
это конверт SOAP
<soapenv:Bodyxmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<jsonObject>
<serviceRequestID>12345</serviceRequestID>
<statusCode>1</statusCode>
<errorCode></errorCode>
<errorDescription></errorDescription>
<addressID>1.23456794E9</addressID>
<source>consumer name</source>
<requestId>910514</requestId>
</jsonObject>
Я хочу создать собственный посредник, чтобы установить базу Error Description
на Error Code
.
Например,
если код ошибки 1 = описание ошибки = один
если код ошибки 2 = описание ошибки = два
если код ошибки 3 = описание ошибки = три
Это мой собственный код посредника.
private void ResponseLogging(MessageContext mc) throws OMException{
try {
String errorCode = mc.getEnvelope().getBody().getFirstElement().getFirstChildWithName(new QName("errorCode")).getText();
String errorDescription = null;
if(errorCode.equals("1")) {
errorDescription = "One";
}else if(errorCode.equals("2")) {
errorDescription = "Two";
}else if(errorCode.equals("3")) {
errorDescription = "Three";
}
mc.getEnvelope().getBody().getFirstElement().getFirstChildWithName(new QName("errorDescription")).setText(errorDescription);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
Ожидаемый ответ,
<soapenv:Bodyxmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<jsonObject>
<serviceRequestID>12345</serviceRequestID>
<statusCode>1</statusCode>
<errorCode>1</errorCode>
<errorDescription>One</errorDescription>
<addressID>1.23456794E9</addressID>
<source>consumer name</source>
<requestId>910514</requestId>
</jsonObject>
Но теперь я получаю только error description
как ноль.
любезно помогите. любой совет был бы отличным!
Спасибо.
ОБНОВЛЕНО!
Видимо, после установки значения с помощью метода setText (). Значение описания ошибки изменится на One
, как ожидается в журнале.
</statusCode><errorCode>1</errorCode><errorDescription>One</errorDescription>
Но когда ответ отправляется обратно клиенту, он по-прежнему имеет нулевое значение.
{"serviceRequestID": "12345","statusCode": 1,"errorCode": "1", "errorDescription": "","addressID": 1.23456794E9,"source": "consumer name", "requestId": "910514"}