Method method = cause.getClass().getMethod("getFaultInfo", new Class[0]);
Object faultInfo = method.invoke(cause, new Object[0]);
Service service = message.getExchange().get(Service.class);
DataWriterFactory writerFactory = service.getDataBinding().getDataWriterFactory();
DataWriter<Node> writer = writerFactory.createWriter(Node.class);
OperationInfo op = message.getExchange().get(BindingOperationInfo.class).getOperationInfo();
QName faultName = getFaultName(ex);
MessagePartInfo part = getFaultMessagePart(faultName, op);
writer.write(faultInfo, part, f.getOrCreateDetail());