super(Phase.POST_INVOKE);
addBefore(OutgoingChainInterceptor.class.getName());
}
public void handleMessage(final Message message) throws Fault {
MessageExchange exchange = message
.getContent(MessageExchange.class);
Exchange ex = message.getExchange();
if (exchange.getStatus() == ExchangeStatus.ERROR) {
throw new Fault(exchange.getError());
}
if (!ex.isOneWay()) {
if (exchange.getFault() != null) {
Fault f = new JBIFault(new org.apache.cxf.common.i18n.Message(
"Fault occured", (ResourceBundle) null));
Element details = toElement(exchange.getFault().getContent());
f.setDetail(details);
processFaultDetail(f, message);
message.put(BindingFaultInfo.class, faultWanted);
throw f;
} else if (exchange.getMessage("out") != null) {
Endpoint endpoint = ex.get(Endpoint.class);
Message outMessage = ex.getOutMessage();
if (outMessage == null) {
outMessage = endpoint.getBinding().createMessage();
ex.setOutMessage(outMessage);
}
NormalizedMessageImpl norMessage =
(NormalizedMessageImpl) exchange.getMessage("out");
List<Attachment> attachmentList = new ArrayList<Attachment>();
outMessage.setContent(Source.class, exchange.getMessage(
"out").getContent());
Iterator<String> iter = norMessage.listAttachments();
while (iter.hasNext()) {
String id = iter.next();
DataHandler dh = norMessage.getAttachment(id);