Reputation: 24325
I have the following interceptor that modifies the header of the soap response. I would also like to clear the body of the soap response, but I cant find any documentaiton on doing this or a way around it. Suggestions?
public class LisResponseInterceptor extends EndpointInterceptorAdapter {
@Override
public boolean handleResponse(MessageContext messageContext, Object endpoint) {
return true;
}
@Override
public boolean handleRequest(MessageContext messageContext, Object endpoint) {
return true;
}
@Override
public boolean handleFault(MessageContext messageContext, Object endpoint) {
SoapMessage response = (SoapMessage) messageContext.getResponse();
SoapHeader header = response.getSoapHeader();
header.addHeaderElement(new QName("ims","imsx_syncRequestHeaderInfo"));
SoapBody body = response.getSoapBody();
// clear body
return true;
}
}
Upvotes: 1
Views: 3842
Reputation: 24325
Fixed it
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<imsx_syncRequestHeaderInfo xmlns="ims"/>
</SOAP-ENV:Header>
<SOAP-ENV:Body/>
</SOAP-ENV:Envelope>
public class LisResponseInterceptor extends EndpointInterceptorAdapter {
@Override
public boolean handleResponse(MessageContext messageContext, Object endpoint) {
return true;
}
@Override
public boolean handleRequest(MessageContext messageContext, Object endpoint) {
return true;
}
@Override
public boolean handleFault(MessageContext messageContext, Object endpoint) {
SoapMessage response = (SoapMessage) messageContext.getResponse();
SoapHeader header = response.getSoapHeader();
header.addHeaderElement(new QName("ims","imsx_syncRequestHeaderInfo"));
SoapBody body = response.getSoapBody();
Transformer identityTransform = null;
try {
identityTransform = TransformerFactory.newInstance().newTransformer();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerFactoryConfigurationError e) {
e.printStackTrace();
}
try {
identityTransform.transform(new DOMSource(null), body.getPayloadResult());
} catch (TransformerException e) {
e.printStackTrace();
}
return true;
}
}
Upvotes: 2