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

📄 faultserializertest.java

📁 Xfire文件 用于开发web service 的一个开源工具 很好用的
💻 JAVA
字号:
package org.codehaus.xfire.fault;import java.io.ByteArrayOutputStream;import java.io.StringReader;import javax.xml.namespace.QName;import javax.xml.stream.XMLInputFactory;import javax.xml.stream.XMLStreamException;import javax.xml.stream.XMLStreamReader;import javax.xml.stream.XMLStreamWriter;import org.codehaus.xfire.MessageContext;import org.codehaus.xfire.exchange.InMessage;import org.codehaus.xfire.exchange.OutMessage;import org.codehaus.xfire.soap.Soap11;import org.codehaus.xfire.soap.Soap12;import org.codehaus.xfire.test.AbstractXFireTest;import org.codehaus.xfire.util.STAXUtils;import org.jdom.Document;import org.jdom.Element;import org.jdom.Namespace;/** * XFireTest * * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a> */public class FaultSerializerTest        extends AbstractXFireTest{    public void testFaults()            throws Exception    {        Soap12FaultSerializer soap12 = new Soap12FaultSerializer();        XFireFault fault = new XFireFault(new Exception());        fault.setRole("http://someuri");        fault.setSubCode(new QName("urn:test", "NotAvailable", "m"));        Element e = new Element("bah", "t", "urn:test");        e.addContent("bleh");        fault.getDetail().addContent(e);        e = new Element("bah2", "t", "urn:test2");        e.addContent("bleh");        fault.getDetail().addContent(e);        fault.addNamespace("m", "urn:test");        ByteArrayOutputStream out = new ByteArrayOutputStream();        OutMessage message = new OutMessage("urn:bleh");        message.setBody(fault);        XMLStreamWriter writer = STAXUtils.createXMLStreamWriter(out, "UTF-8",null);        writer.writeStartDocument();        writer.writeStartElement("soap", "Body", Soap12.getInstance().getNamespace());        writer.setPrefix("soap", Soap12.getInstance().getNamespace());        writer.writeNamespace("soap", Soap12.getInstance().getNamespace());        soap12.writeMessage(message, writer, new MessageContext());        writer.writeEndElement();        writer.writeEndDocument();        writer.close();                Document doc = readDocument(out.toString());        //printNode(doc);        addNamespace("s", Soap12.getInstance().getNamespace());        assertValid("//s:SubCode/s:Value[text()='m:NotAvailable']", doc);        addNamespace("t", "urn:test2");        assertValid("//s:Detail/t:bah2[text()='bleh']", doc);        assertValid("//s:Role[text()='http://someuri']", doc);                XMLStreamReader reader = readerForString(out.toString());        InMessage inMsg = new InMessage(reader);                while (reader.hasNext())        {            reader.next();                        if (reader.getEventType() == XMLStreamReader.START_ELEMENT                     && reader.getLocalName().equals("Fault"))            {                break;            }        }                soap12.readMessage(inMsg, new MessageContext());                assertNotNull(inMsg.getBody());        assertTrue(inMsg.getBody() instanceof XFireFault);        XFireFault fault2 = (XFireFault) inMsg.getBody();                assertEquals(fault.getMessage(), fault2.getMessage());        assertEquals(fault.getSubCode(), fault2.getSubCode());        assertEquals(fault.getFaultCode(), fault2.getFaultCode());                assertNotNull(fault.getDetail().getChild("bah2", Namespace.getNamespace("urn:test2")));    }    public void testFaults11()            throws Exception    {        Soap11FaultSerializer soap11 = new Soap11FaultSerializer();        XFireFault fault = new XFireFault(new Exception());        fault.setRole("http://someuri");                Element e = new Element("bah", "t", "urn:test");        e.addContent("bleh");        fault.getDetail().addContent(e);        e = new Element("bah2", "t", "urn:test2");        e.addContent("bleh");        fault.getDetail().addContent(e);        fault.addNamespace("m", "urn:test");        ByteArrayOutputStream out = new ByteArrayOutputStream();                OutMessage message = new OutMessage("urn:bleh");        message.setBody(fault);                XMLStreamWriter writer = STAXUtils.createXMLStreamWriter(out, "UTF-8",null);        writer.writeStartDocument();        writer.writeStartElement("soap", "Body", Soap11.getInstance().getNamespace());        writer.writeNamespace("soap", Soap11.getInstance().getNamespace());        soap11.writeMessage(message, writer, new MessageContext());        writer.writeEndElement();        writer.writeEndDocument();        writer.close();        Document doc = readDocument(out.toString());        addNamespace("s", Soap12.getInstance().getNamespace());        addNamespace("t", "urn:test2");        assertValid("//detail/t:bah2[text()='bleh']", doc);        assertValid("//faultactor[text()='http://someuri']", doc);                XMLStreamReader reader = readerForString(out.toString());        InMessage inMsg = new InMessage(reader);                soap11.readMessage(inMsg, new MessageContext());                assertNotNull(inMsg.getBody());        assertTrue(inMsg.getBody() instanceof XFireFault);        XFireFault fault2 = (XFireFault) inMsg.getBody();                assertEquals(XFireFault.SOAP11_SERVER, fault2.getFaultCode());        assertEquals(fault.getMessage(), fault2.getMessage());                assertNotNull(fault.getDetail().getChild("bah2", Namespace.getNamespace("urn:test2")));    }    public void testCustomPrefix()            throws Exception    {        Soap11FaultSerializer soap11 = new Soap11FaultSerializer();        XFireFault fault = new XFireFault(new Exception());        fault.setFaultCode(new QName("http:///test-uri", "test", "t"));                ByteArrayOutputStream out = new ByteArrayOutputStream();                OutMessage message = new OutMessage("urn:bleh");        message.setBody(fault);                XMLStreamWriter writer = STAXUtils.createXMLStreamWriter(out, "UTF-8",null);        writer.writeStartDocument();        writer.writeStartElement("soap", "Body", Soap11.getInstance().getNamespace());        writer.writeNamespace("soap", Soap11.getInstance().getNamespace());        soap11.writeMessage(message, writer, new MessageContext());        writer.writeEndElement();        writer.writeEndDocument();        writer.close();        Document doc = readDocument(out.toString());        addNamespace("s", Soap12.getInstance().getNamespace());        addNamespace("t", "urn:test2");        assertValid("//faultcode[text()='t:test']", doc);    }    public void testCustomPrefixSoap12()            throws Exception    {        Soap12FaultSerializer soap11 = new Soap12FaultSerializer();        XFireFault fault = new XFireFault(new Exception());        fault.setFaultCode(new QName("http:///test-uri", "test", "t"));                ByteArrayOutputStream out = new ByteArrayOutputStream();                OutMessage message = new OutMessage("urn:bleh");        message.setBody(fault);                XMLStreamWriter writer = STAXUtils.createXMLStreamWriter(out, "UTF-8",null);        writer.writeStartDocument();        writer.writeStartElement("soap", "Body", Soap12.getInstance().getNamespace());        writer.writeNamespace("soap", Soap12.getInstance().getNamespace());        soap11.writeMessage(message, writer, new MessageContext());        writer.writeEndElement();        writer.writeEndDocument();        writer.close();        Document doc = readDocument(out.toString());        addNamespace("s", Soap12.getInstance().getNamespace());        addNamespace("t", "urn:test2");        assertValid("//s:Code/s:Value[text()='t:test']", doc);    }        private XMLStreamReader readerForString(String string) throws XMLStreamException    {        XMLInputFactory factory = STAXUtils.getXMLInputFactory(null);        return factory.createXMLStreamReader(new StringReader(string));    }}

⌨️ 快捷键说明

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