soapmessagetest.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 624 行 · 第 1/2 页
JAVA
624 行
/*
* 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.extensions.TestSetup;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.Parameter;
import org.apache.axis2.saaj.integration.EchoService;
import org.apache.axis2.saaj.integration.IntegrationTest;
import org.apache.axis2.saaj.integration.UtilServer;
import org.apache.axis2.saaj.util.SAAJDataSource;
import org.apache.axis2.util.Utils;
import javax.activation.DataHandler;
import javax.xml.namespace.QName;
import javax.xml.soap.AttachmentPart;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPFactory;
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.transform.stream.StreamSource;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.net.URL;
import java.util.Iterator;
/**
*
*/
public class SOAPMessageTest extends TestCase {
private SOAPMessage msg;
// static int port;
// public static final QName SERVICE_NAME = new QName("Echo");
// public static final QName OPERATION_NAME = new QName("echo");
//
// public static final String SAAJ_REPO =
// System.getProperty("basedir", ".") + "/" + "target/test-resources/saaj-repo";
//
// public SOAPMessageTest(String name) {
// super(name);
// }
//
// protected static String getAddress() {
// return "http://127.0.0.1:" +
// port +
// "/axis2/services/Echo";
// }
//
// public static Test suite() {
// return new TestSetup(new TestSuite(IntegrationTest.class)) {
// public void setUp() throws Exception {
// port = UtilServer.start(SAAJ_REPO);
// Parameter eneblemtom = new Parameter("enableMTOM", "true");
// UtilServer.getConfigurationContext().getAxisConfiguration()
// .addParameter(eneblemtom);
// }
//
// public void tearDown() throws Exception {
// UtilServer.stop();
// }
// };
// }
protected void setUp() throws Exception {
// final AxisService service = Utils.createSimpleService(SERVICE_NAME,
// EchoService.class.getName(),
// OPERATION_NAME);
// UtilServer.deployService(service);
msg = MessageFactory.newInstance().createMessage();
}
// protected void tearDown() throws Exception {
// UtilServer.unDeployService(SERVICE_NAME);
// UtilServer.unDeployClientService();
// }
public void testSaveRequired() {
try {
assertTrue("Save Required is False", msg.saveRequired());
} catch (Exception e) {
fail("Unexpected Exception : " + e);
}
}
public void testSaveRequired2() {
try {
msg.saveChanges();
assertFalse("Save Required is True", msg.saveRequired());
} catch (Exception e) {
fail("Unexpected Exception : " + e);
}
}
public void testRemoveAttachements() {
Iterator iterator = null;
AttachmentPart ap1 = null;
AttachmentPart ap2 = null;
AttachmentPart ap3 = null;
try {
MessageFactory fac = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
//MessageFactory fac = MessageFactory.newInstance();
SOAPMessage msg = fac.createMessage();
SOAPPart soapPart = msg.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
SOAPFault sf = body.addFault();
InputStream in1 = new FileInputStream(new File(System.getProperty("basedir", ".") +
"/target/test-resources" + File.separator + "attach.xml"));
ap1 = msg.createAttachmentPart(in1, "text/xml");
msg.addAttachmentPart(ap1);
InputStream in2 = new FileInputStream(new File(System.getProperty("basedir", ".") +
"/target/test-resources" + File.separator + "axis2.xml"));
ap2 = msg.createAttachmentPart(in2, "text/xml");
msg.addAttachmentPart(ap2);
InputStream in3 = new FileInputStream(new File(System.getProperty("basedir", ".") +
"/target/test-resources" + File.separator + "axis2.xml"));
ap3 = msg.createAttachmentPart(in3, "text/plain");
msg.addAttachmentPart(ap3);
//get all attachments
iterator = msg.getAttachments();
int cnt = 0;
while (iterator.hasNext()) {
cnt++;
iterator.next();
}
assertEquals(cnt, 3);
//remove just the text/xml attachments
MimeHeaders mhs = new MimeHeaders();
mhs.addHeader("Content-Type", "text/xml");
msg.removeAttachments(mhs);
//get all attachments
iterator = msg.getAttachments();
cnt = 0;
iterator = msg.getAttachments();
while (iterator.hasNext()) {
cnt++;
iterator.next();
}
assertEquals(cnt, 1);
iterator = msg.getAttachments();
AttachmentPart ap = (AttachmentPart)iterator.next();
String ctype = ap.getContentType();
assertTrue(ctype.equals("text/plain"));
} catch (Exception e) {
fail("Exception: " + e);
}
}
public void testGetContent() {
try {
MessageFactory fac = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
//MessageFactory fac = MessageFactory.newInstance();
SOAPMessage msg = fac.createMessage();
SOAPPart soapPart = msg.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
AttachmentPart ap;
InputStream inputStream = new FileInputStream(new File(System
.getProperty("basedir", ".") + "/test-resources" + File.separator +
"attach.xml"));
ap = msg.createAttachmentPart(inputStream, "text/xml");
DataHandler dh =
new DataHandler(new SAAJDataSource(inputStream, 1000, "text/xml", true));
StringBuffer sb1 = copyToBuffer(dh.getInputStream());
assertNotNull(ap);
//Verify attachment part is not empty and contents are correct
try {
Object o = ap.getContent();
InputStream is = null;
assertNotNull(o);
if (o instanceof StreamSource) {
StreamSource ss = (StreamSource)o;
is = ss.getInputStream();
} else {
fail("got object: " + o +
", expected object: javax.xml.transform.stream.StreamSource");
}
}
catch (Exception e) {
fail("attachment has no content - unexpected");
}
} catch (Exception e) {
fail("Exception: " + e);
}
}
private StringBuffer copyToBuffer(InputStream inputStream) {
if (inputStream == null) {
return null;
}
StringWriter stringWriter = new StringWriter();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
try {
String s;
while ((s = br.readLine()) != null)
stringWriter.write(s);
}
catch (Exception e) {
e.printStackTrace();
}
return stringWriter.getBuffer();
}
/*
* Do not add this test unless below mentioned resources are accessible
*/
public void _testGetAttachmentsByHREF() {
String NS_PREFIX = "mypre";
String NS_URI = "http://myuri.org/";
try {
//MessageFactory fac = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPMessage msg = MessageFactory.newInstance().createMessage();
// Message creation takes care of creating the SOAPPart - a
// required part of the message as per the SOAP 1.1 spec.
SOAPPart sp = msg.getSOAPPart();
SOAPEnvelope envelope = sp.getEnvelope();
SOAPHeader hdr = envelope.getHeader();
SOAPBody bdy = envelope.getBody();
SOAPBodyElement sbe1 = bdy.addBodyElement(
envelope.createName("Body1", NS_PREFIX, NS_URI));
sbe1.addChildElement(envelope.createName(
"TheGifAttachment", NS_PREFIX, NS_URI));
sbe1.setAttribute("href", "cid:THEGIF");
SOAPBodyElement sbe2 = bdy.addBodyElement(
envelope.createName("Body2", NS_PREFIX, NS_URI));
sbe2.addChildElement(envelope.createName(
"TheXmlAttachment", NS_PREFIX, NS_URI));
sbe2.setAttribute("href", "cid:THEXML");
URL url1 = new URL("http://localhost:8080/SOAPMessage/attach.xml");
URL url2 = new URL("http://localhost:8080/SOAPMessage/attach.gif");
URL url3 = new URL("http://localhost:8080/SOAPMessage/attach.txt");
URL url4 = new URL("http://localhost:8080/SOAPMessage/attach.html");
URL url5 = new URL("http://localhost:8080/SOAPMessage/attach.jpeg");
//Add various mime type attachments to SOAP message
AttachmentPart ap1 = msg.createAttachmentPart(new DataHandler(url1));
AttachmentPart ap2 = msg.createAttachmentPart(new DataHandler(url2));
AttachmentPart ap3 = msg.createAttachmentPart(new DataHandler(url3));
AttachmentPart ap4 = msg.createAttachmentPart(new DataHandler(url4));
AttachmentPart ap5 = msg.createAttachmentPart(new DataHandler(url5));
ap1.setContentType("text/xml");
ap1.setContentId("<THEXML>");
ap2.setContentType("image/gif");
ap2.setContentId("<THEGIF>");
ap3.setContentType("text/plain");
ap3.setContentId("<THEPLAIN>");
ap4.setContentType("text/html");
ap4.setContentId("<THEHTML>");
ap5.setContentType("image/jpeg");
ap5.setContentId("<THEJPEG>");
msg.addAttachmentPart(ap1);
msg.addAttachmentPart(ap2);
msg.addAttachmentPart(ap3);
msg.addAttachmentPart(ap4);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?