@Override protected void handleFault(MessageContext context, XFireFault fault, Throwable cause, MessagePartInfo faultPart) throws XFireFault { Object faultBean = getFaultBean(cause, faultPart, context); if (faultBean != null) { try { JAXBContext jaxbContext = JAXBContext.newInstance(faultBean.getClass()); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); marshaller.setAttachmentMarshaller(new AttachmentMarshaller(context)); JDOMStreamWriter writer = new JDOMStreamWriter(fault.getDetail()); marshaller.marshal(faultBean, writer); } catch (JAXBException e) { LOG.error("Unable to marshal the fault bean of type " + faultBean.getClass().getName() + ".", e); //fall through... let the fault be handled by something else... } } }
@Override protected void handleFault(MessageContext context, XFireFault fault, Throwable cause, MessagePartInfo faultPart) throws XFireFault { Object faultBean = getFaultBean(cause, faultPart, context); if (faultBean != null) { try { JAXBContext jaxbContext = JAXBContext.newInstance(faultBean.getClass()); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); marshaller.setAttachmentMarshaller(new AttachmentMarshaller(context)); JDOMStreamWriter writer = new JDOMStreamWriter(fault.getDetail()); marshaller.marshal(faultBean, writer); } catch (JAXBException e) { LOG.error("Unable to marshal the fault bean of type " + faultBean.getClass().getName() + ".", e); //fall through... let the fault be handled by something else... } } }
public void writeMessage(OutMessage message, XMLStreamWriter writer, MessageContext context) throws XFireFault { try { XFireFault fault = (XFireFault) message.getBody(); if (fault.hasDetails()) { Element detail = fault.getDetail(); StaxSerializer serializer = new StaxSerializer(); List details = detail.getContent(); for (int i = 0; i < details.size(); i++) { serializer.writeElement((Element) details.get(i), writer); } } else { writer.writeStartElement("stack"); StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); fault.printStackTrace(pw); pw.close(); writer.writeCData(sw.toString()); writer.writeEndElement(); // stack } } catch (XMLStreamException e) { throw new XFireRuntimeException("Couldn't create fault.", e); } }
List details = xfireFault.getDetail().getContent(); Element detail = null; for (Object o : details) {
Element detail = fault.getDetail();
protected void handleFault(MessageContext context, XFireFault fault, Throwable cause, MessagePartInfo faultPart) throws XFireFault { JDOMStreamWriter writer = new JDOMStreamWriter(fault.getDetail()); Object faultBean = getFaultBean(cause, faultPart, context); try { AbstractBinding.writeParameter(writer, context, faultBean, faultPart, faultPart.getName().getNamespaceURI()); } catch (XMLStreamException e) { throw new XFireFault("Could not write to outgoing stream.", e, XFireFault.RECEIVER); } }
Element detail = fault.getDetail();
protected void processFaultDetail(XFireFault fault, MessageContext context) throws Exception { Element exDetail = (Element) fault.getDetail().getChildren().get(0); MessagePartInfo faultPart = getFaultPart(context.getExchange().getOperation(), exDetail); if (faultPart == null || faultPart.getTypeClass() == null) return; BindingProvider provider = context.getService().getBindingProvider(); JDOMStreamReader reader = new JDOMStreamReader(exDetail); reader.nextTag(); Object e = (Object) provider.readParameter(faultPart, reader, context); if (!(e instanceof Exception)) { Class exClass = ((FaultInfo) faultPart.getContainer()).getExceptionClass(); Constructor constructor = exClass.getConstructor(new Class[] {String.class, faultPart.getTypeClass()}); e = constructor.newInstance(new Object[] {fault.getMessage(), e}); } context.getExchange().getFaultMessage().setBody(e); }
channel.send(me); XFireFault xfireFault = new XFireFault(str, XFireFault.RECEIVER); xfireFault.getDetail().addContent(e); throw xfireFault; } else if (me.getMessage("out") != null) {