⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soap11faultserializer.java

📁 Xfire文件 用于开发web service 的一个开源工具 很好用的
💻 JAVA
字号:
package org.codehaus.xfire.fault;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.xml.namespace.QName;import javax.xml.stream.XMLStreamException;import javax.xml.stream.XMLStreamReader;import javax.xml.stream.XMLStreamWriter;import org.codehaus.xfire.MessageContext;import org.codehaus.xfire.XFireRuntimeException;import org.codehaus.xfire.exchange.InMessage;import org.codehaus.xfire.exchange.MessageSerializer;import org.codehaus.xfire.exchange.OutMessage;import org.codehaus.xfire.util.NamespaceHelper;import org.codehaus.xfire.util.jdom.StaxBuilder;import org.codehaus.xfire.util.jdom.StaxSerializer;import org.codehaus.xfire.util.stax.FragmentStreamReader;import org.jdom.Element;public class Soap11FaultSerializer    implements MessageSerializer{  //  private StaxBuilder builder = new StaxBuilder();        public void readMessage(InMessage message, MessageContext context)        throws XFireFault    {        XFireFault fault = new XFireFault();        XMLStreamReader reader = message.getXMLStreamReader();        try        {            boolean end = false;            while (!end && reader.hasNext())            {                int event = reader.next();                switch (event)                {                    case XMLStreamReader.START_DOCUMENT:                        String encoding = reader.getCharacterEncodingScheme();                        message.setEncoding(encoding);                        break;                    case XMLStreamReader.END_DOCUMENT:                        end = true;                        break;                    case XMLStreamReader.END_ELEMENT:                        break;                    case XMLStreamReader.START_ELEMENT:                        if (reader.getLocalName().equals("faultcode"))                        {                            fault.setFaultCode(NamespaceHelper.readQName(reader));                        }                        else if (reader.getLocalName().equals("faultstring"))                        {                            fault.setMessage(reader.getElementText());                        }                        else if (reader.getLocalName().equals("faultactor"))                        {                            fault.setRole(reader.getElementText());                        }                        else if (reader.getLocalName().equals("detail"))                        {                            StaxBuilder builder = new StaxBuilder();                            fault.setDetail(builder.build(new FragmentStreamReader(reader)).getRootElement());                        }                        break;                    default:                        break;                }            }        }        catch (XMLStreamException e)        {            throw new XFireFault("Could not parse message.", e, XFireFault.SENDER);        }        message.setBody(fault);    }    public void writeMessage(OutMessage message, XMLStreamWriter writer, MessageContext context)        throws XFireFault    {        XFireFault fault = (XFireFault) message.getBody();        try        {            Map namespaces = fault.getNamespaces();            if (namespaces != null)             {	            for (Iterator itr = namespaces.keySet().iterator(); itr.hasNext();)	            {	                String prefix = (String) itr.next();	                writer.writeAttribute("xmlns:" + prefix, (String) namespaces.get(prefix));	            }            }                        writer.writeStartElement("soap:Fault");            writer.writeStartElement("faultcode");            QName faultCode = fault.getFaultCode();            String codeString;            if (faultCode.equals(XFireFault.RECEIVER))            {                codeString = "soap:Server";            }            else if (faultCode.equals(XFireFault.SENDER))            {                codeString = "soap:Client";            }            else if (faultCode.equals(XFireFault.VERSION_MISMATCH))            {                codeString = "soap:VersionMismatch";            }            else if (faultCode.equals(XFireFault.MUST_UNDERSTAND))            {                codeString = "soap:MustUnderstand";            }            else if (faultCode.equals(XFireFault.DATA_ENCODING_UNKNOWN))            {                codeString = "soap:Client";            }            else            {                String ns = faultCode.getNamespaceURI();                String prefix = faultCode.getPrefix();                if (ns.length() > 0 && prefix.length() == 0)                {                    prefix = NamespaceHelper.getUniquePrefix(writer, ns, true) + ":";                }                 else if (prefix.length() > 0)                {                    writer.writeNamespace(prefix, ns);                    prefix = prefix + ":";                }                                codeString = prefix + faultCode.getLocalPart();            }            writer.writeCharacters(codeString);            writer.writeEndElement();            writer.writeStartElement("faultstring");            writer.writeCharacters(fault.getMessage());            writer.writeEndElement();                        if (fault.hasDetails())            {                Element detail = fault.getDetail();                writer.writeStartElement("detail");                                StaxSerializer serializer = new StaxSerializer();                List details = detail.getContent();                for (int i = 0; i < details.size(); i++)                {                    serializer.writeElement((Element) details.get(i), writer);                }                writer.writeEndElement(); // Details            }            if (fault.getRole() != null)            {                writer.writeStartElement("faultactor");                writer.writeCharacters(fault.getRole());                writer.writeEndElement();            }            writer.writeEndElement(); // Fault        }        catch (XMLStreamException xe)        {            throw new XFireRuntimeException("Couldn't create fault.", xe);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -