public void handleMessage()

in cxf/cxf-binding-nmr/src/main/java/org/apache/servicemix/cxf/binding/nmr/interceptors/NMRFaultOutInterceptor.java [48:81]


    public void handleMessage(NMRMessage message) throws Fault {
        message.put(org.apache.cxf.message.Message.RESPONSE_CODE, new Integer(500));
        NSStack nsStack = new NSStack();
        nsStack.push();

        
        
        try {
            XMLStreamWriter writer = getWriter(message);
            Fault fault = getFault(message);
            NMRFault jbiFault = NMRFault.createFault(fault);
            nsStack.add(NMRConstants.NS_NMR_BINDING);
            String prefix = nsStack.getPrefix(NMRConstants.NS_NMR_BINDING);
            StaxUtils.writeStartElement(writer, prefix, NMRFault.NMR_FAULT_ROOT,
                                        NMRConstants.NS_NMR_BINDING);
            if (!jbiFault.hasDetails()) {
                writer.writeEmptyElement("fault");
            } else {
                Element detail = jbiFault.getDetail();
                NodeList details = detail.getChildNodes();
                for (int i = 0; i < details.getLength(); i++) {
                    if (details.item(i) instanceof Element) {
                        StaxUtils.writeNode(details.item(i), writer, true);
                        break;
                    }
                }
            }
            writer.writeEndElement();
            writer.flush();
            
        } catch (XMLStreamException xe) {
            throw new Fault(new Message("XML_WRITE_EXC", BUNDLE), xe);
        }
    }