soapenvelopetest.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 568 行 · 第 1/2 页
JAVA
568 行
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.axis2.saaj;
import junit.framework.TestCase;
import javax.xml.soap.Detail;
import javax.xml.soap.DetailEntry;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.Name;
import javax.xml.soap.Node;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFault;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
import javax.xml.soap.Text;
import java.io.ByteArrayInputStream;
import java.util.Iterator;
public class SOAPEnvelopeTest extends TestCase {
private static final String XML_STRING =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
" <soapenv:Header>\n" +
" <shw:Hello xmlns:shw=\"http://www.jcommerce.net/soap/ns/SOAPHelloWorld\">\n" +
" <shw:Myname>Tony</shw:Myname>\n" +
" </shw:Hello>\n" +
" </soapenv:Header>\n" +
" <soapenv:Body>\n" +
"<shw:Address shw:t='test' xmlns:shw=\"http://www.jcommerce.net/soap/ns/SOAPHelloWorld\">\n" +
"<shw:City>GENT</shw:City>\n" +
"</shw:Address>\n" +
"</soapenv:Body>\n" +
"</soapenv:Envelope>";
public SOAPEnvelopeTest(String name) {
super(name);
}
public void testEnvelope() throws Exception {
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage smsg =
mf.createMessage(new MimeHeaders(),
new ByteArrayInputStream(XML_STRING.getBytes()));
SOAPPart sp = smsg.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
assertTrue(se != null);
// validate the body
final SOAPBody body = sp.getEnvelope().getBody();
validateBody(body.getChildElements());
}
public void testDetachHeader() throws Exception {
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage smsg =
mf.createMessage(new MimeHeaders(),
new ByteArrayInputStream(XML_STRING.getBytes()));
SOAPPart sp = smsg.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
assertTrue(se != null);
SOAPHeader header = se.getHeader();
assertNotNull(header);
header.detachNode();
assertNull(se.getHeader());
assertNull(smsg.getSOAPHeader());
}
public void testDetachBody() {
try {
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage smsg =
mf.createMessage(new MimeHeaders(),
new ByteArrayInputStream(XML_STRING.getBytes()));
SOAPPart sp = smsg.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
try {
se.addBody();
fail("Expected Exception did not occur");
} catch (SOAPException e) {
assertTrue(true);
}
se.getBody().detachNode();
assertNull(se.getBody());
try {
se.addBody();
} catch (SOAPException e) {
e.printStackTrace();
fail("Unexpected Exception occurred.");
}
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected Exception : " + e);
}
}
public void testEnvelope2() throws Exception {
MessageFactory mf = MessageFactory.newInstance();
final ByteArrayInputStream baIS = new ByteArrayInputStream(XML_STRING.getBytes());
final MimeHeaders mimeheaders = new MimeHeaders();
mimeheaders.addHeader("Content-Type", "text/xml");
SOAPMessage smsg =
mf.createMessage(mimeheaders, baIS);
SOAPEnvelope envelope = smsg.getSOAPPart().getEnvelope();
SOAPBody body = envelope.getBody();
assertTrue(body != null);
}
// TODO: This test fails due to some issues in OM. Needs to be added to the test suite
// that issue is fixed
public void _testEnvelopeWithLeadingComment() throws Exception {
String soapMessageWithLeadingComment =
"<?xml version='1.0' encoding='UTF-8'?>" +
"<!-- Comment -->" +
"<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
"<env:Body><echo><arg0>Hello</arg0></echo></env:Body>" +
"</env:Envelope>";
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message =
factory.createMessage(new MimeHeaders(),
new ByteArrayInputStream(
soapMessageWithLeadingComment.getBytes()));
SOAPPart part = message.getSOAPPart();
SOAPEnvelope envelope = part.getEnvelope();
message.writeTo(System.out);
assertTrue(envelope != null);
assertTrue(envelope.getBody() != null);
}
public void testEnvelopeWithCommentInEnvelope() throws Exception {
String soapMessageWithLeadingComment =
"<?xml version='1.0' encoding='UTF-8'?>\n" +
"<soapenv:Envelope xmlns='http://somewhere.com/html'\n" +
" xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'\n" +
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'\n" +
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>\n" +
"<!-- Comment -->" +
" <soapenv:Body>\n" +
" <echo><arg0>Hello</arg0></echo>" +
// " <t:echo xmlns:t='http://test.org/Test'><t:arg0>Hello</t:arg0></t:echo>" +
" </soapenv:Body>\n" +
"</soapenv:Envelope>";
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message =
factory.createMessage(new MimeHeaders(),
new ByteArrayInputStream(
soapMessageWithLeadingComment.getBytes()));
SOAPPart part = message.getSOAPPart();
SOAPEnvelope envelope = part.getEnvelope();
assertTrue(envelope != null);
assertTrue(envelope.getBody() != null);
}
public void testEnvelopeWithCommentInBody() throws Exception {
String soapMessageWithLeadingComment =
"<?xml version='1.0' encoding='UTF-8'?>\n" +
"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'\n" +
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'\n" +
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>\n" +
" <soapenv:Body>\n" +
"<!-- Comment -->" +
// " <echo><arg0>Hello</arg0></echo>" +
" <t:echo xmlns:t='http://test.org/Test'><t:arg0>Hello</t:arg0></t:echo>" +
" </soapenv:Body>\n" +
"</soapenv:Envelope>";
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message =
factory.createMessage(new MimeHeaders(),
new ByteArrayInputStream(
soapMessageWithLeadingComment.getBytes()));
SOAPPart part = message.getSOAPPart();
SOAPEnvelope envelope = part.getEnvelope();
assertTrue(envelope != null);
assertTrue(envelope.getBody() != null);
}
public void testEnvelopeWithComments() throws Exception {
String soapMessageWithLeadingComment =
"<?xml version='1.0' encoding='UTF-8'?>\n" +
"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'\n" +
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'\n" +
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>\n" +
" <soapenv:Header>\n" +
"<!-- Comment -->" +
" <shw:Hello xmlns:shw=\"http://www.jcommerce.net/soap/ns/SOAPHelloWorld\">\n" +
"<!-- Comment -->" +
" <shw:Myname><!-- Comment -->Tony</shw:Myname>\n" +
" </shw:Hello>\n" +
" </soapenv:Header>\n" +
" <soapenv:Body>\n" +
"<!-- Comment -->" +
" <t:echo xmlns:t='http://test.org/Test'><t:arg0>Hello</t:arg0></t:echo>" +
" </soapenv:Body>\n" +
"</soapenv:Envelope>";
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message =
factory.createMessage(new MimeHeaders(),
new ByteArrayInputStream(
soapMessageWithLeadingComment.getBytes()));
SOAPPart part = message.getSOAPPart();
SOAPEnvelope envelope = part.getEnvelope();
assertTrue(envelope != null);
assertTrue(envelope.getBody() != null);
}
public void _testFaults() throws Exception {
SOAPEnvelope envelope = getSOAPEnvelope();
SOAPBody body = envelope.getBody();
assertFalse(body.hasFault());
SOAPFault soapFault = body.addFault();
soapFault.setFaultString("myFault");
soapFault.setFaultCode("CODE");
assertTrue(body.hasFault());
assertNotNull(body.getFault());
assertSame(soapFault, body.getFault());
assertEquals("myFault", soapFault.getFaultString());
assertEquals("CODE", soapFault.getFaultCode());
}
public void _testFaults2() throws Exception {
SOAPEnvelope envelope = getSOAPEnvelope();
SOAPBody body = envelope.getBody();
SOAPFault fault = body.addFault();
assertTrue(body.getFault() != null);
Detail d1 = fault.addDetail();
Name name = envelope.createName("GetLastTradePrice", "WOMBAT",
"http://www.wombat.org/trader");
d1.addDetailEntry(name);
Detail d2 = fault.getDetail();
assertTrue(d2 != null);
Iterator i = d2.getDetailEntries();
assertTrue(getIteratorCount(i) == 1);
i = d2.getDetailEntries();
while (i.hasNext()) {
DetailEntry de = (DetailEntry)i.next();
assertEquals(de.getElementName(), name);
}
}
public void testHeaderElements() throws Exception {
SOAPEnvelope envelope = getSOAPEnvelope();
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?