soapmessageprovidertests.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 469 行 · 第 1/2 页
JAVA
469 行
// Test the transport headers by sending a content description
request.setContentDescription(SoapMessageProvider.XML_WSE_REQUEST);
try {
// Dispatch
TestLogger.logger.debug(">> Invoking SourceMessageProviderDispatch");
SOAPMessage response = dispatch.invoke(request);
assertTrue("Expected failure", false);
} catch (SOAPFaultException e) {
// Okay...SOAPFaultException should be thrown
SOAPFault fault = e.getFault();
assertTrue(fault != null);
assertTrue(fault.getFaultString().equals("A WSE was thrown"));
}
}
/**
* Sends an SOAPMessage containing xml data and raw attachments to the web service.
* Receives a response containing xml data and the same raw attachments.
*/
public void testProviderSourceRawAttachment(){
// Raw Attachments are attachments that are not referenced in the xml with MTOM or SWARef.
// Currently there is no support in Axis 2 for these kinds of attachments.
// The belief is that most customers will use MTOM. Some legacy customers will use SWARef.
// Raw Attachments may be so old that no customers need this behavior.
try{
// Create the dispatch
Dispatch<SOAPMessage> dispatch = createDispatch();
// Create the SOAPMessage
String msg = reqMsgStart + ATTACHMENT_INVOKE + reqMsgEnd;
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage request = factory.createMessage(null,
new ByteArrayInputStream(msg.getBytes()));
// Add the Attachment
AttachmentPart ap = request.createAttachmentPart(SoapMessageProvider.TEXT_XML_ATTACHMENT, "text/xml");
ap.setContentId(SoapMessageProvider.ID);
request.addAttachmentPart(ap);
TestLogger.logger.debug("Request Message:");
request.writeTo(System.out);
// Dispatch
TestLogger.logger.debug(">> Invoking SourceMessageProviderDispatch");
SOAPMessage response = dispatch.invoke(request);
// Check assertions and get the data element
SOAPElement dataElement = assertResponseXML(response, SoapMessageProvider.XML_ATTACHMENT_RESPONSE);
assertTrue(countAttachments(response) == 1);
// Get the Attachment
AttachmentPart attachmentPart = (AttachmentPart) response.getAttachments().next();
// Check the attachment
StreamSource contentSS = (StreamSource) attachmentPart.getContent();
String content = SoapMessageProvider.getAsString(contentSS);
assertTrue(content != null);
assertTrue(content.contains(SoapMessageProvider.TEXT_XML_ATTACHMENT));
// Print out the response
TestLogger.logger.debug(">> Response [" + response.toString() + "]");
response.writeTo(System.out);
}catch(Exception e){
e.printStackTrace();
fail("Caught exception " + e);
}
}
/**
* Sends an SOAPMessage containing xml data and mtom attachment.
* Receives a response containing xml data and the mtom attachment.
*/
public void testProviderSourceMTOM(){
try{
// Create the dispatch
Dispatch<SOAPMessage> dispatch = createDispatch();
// MTOM should be automatically detected. There is no need to set it
//Binding binding = dispatch.getBinding();
//SOAPBinding soapBinding = (SOAPBinding) binding;
//soapBinding.setMTOMEnabled(true);
// Create the SOAPMessage
String msg = reqMsgStart + MTOM_INVOKE + reqMsgEnd;
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage request = factory.createMessage(null,
new ByteArrayInputStream(msg.getBytes()));
// Add the Attachment
AttachmentPart ap = request.createAttachmentPart(SoapMessageProvider.TEXT_XML_ATTACHMENT, "text/xml");
ap.setContentId(SoapMessageProvider.ID);
request.addAttachmentPart(ap);
TestLogger.logger.debug("Request Message:");
request.writeTo(System.out);
// Dispatch
TestLogger.logger.debug(">> Invoking SourceMessageProviderDispatch");
SOAPMessage response = dispatch.invoke(request);
// Check assertions and get the data element
SOAPElement dataElement = assertResponseXML(response, SoapMessageProvider.XML_MTOM_RESPONSE);
assertTrue(countAttachments(response) == 1);
// Get the Attachment
AttachmentPart attachmentPart = (AttachmentPart) response.getAttachments().next();
// Check the attachment
StreamSource contentSS = (StreamSource) attachmentPart.getContent();
String content = SoapMessageProvider.getAsString(contentSS);
assertTrue(content != null);
assertTrue(content.contains(SoapMessageProvider.TEXT_XML_ATTACHMENT));
// Print out the response
TestLogger.logger.debug(">> Response [" + response.toString() + "]");
response.writeTo(System.out);
}catch(Exception e){
e.printStackTrace();
fail("Caught exception " + e);
}
}
/**
* Sends an SOAPMessage containing xml data and a swaref attachment to the web service.
* Receives a response containing xml data and the swaref attachment attachment.
*/
public void testProviderSourceSWARef(){
try{
// Create the dispatch
Dispatch<SOAPMessage> dispatch = createDispatch();
// Create the SOAPMessage
String msg = reqMsgStart + SWAREF_INVOKE + reqMsgEnd;
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage request = factory.createMessage(null,
new ByteArrayInputStream(msg.getBytes()));
// Add the Attachment
AttachmentPart ap = request.createAttachmentPart(SoapMessageProvider.TEXT_XML_ATTACHMENT, "text/xml");
ap.setContentId(SoapMessageProvider.ID);
request.addAttachmentPart(ap);
TestLogger.logger.debug("Request Message:");
request.writeTo(System.out);
// Dispatch
TestLogger.logger.debug(">> Invoking SourceMessageProviderDispatch");
SOAPMessage response = dispatch.invoke(request);
// Check assertions and get the data element
SOAPElement dataElement = assertResponseXML(response, SoapMessageProvider.XML_SWAREF_RESPONSE);
assertTrue(countAttachments(response) == 1);
// Get the Attachment
AttachmentPart attachmentPart = (AttachmentPart) response.getAttachments().next();
// Check the attachment
StreamSource contentSS = (StreamSource) attachmentPart.getContent();
String content = SoapMessageProvider.getAsString(contentSS);
assertTrue(content != null);
assertTrue(content.contains(SoapMessageProvider.TEXT_XML_ATTACHMENT));
assertEquals(SoapMessageProvider.ID, attachmentPart.getContentId());
// Print out the response
TestLogger.logger.debug(">> Response [" + response.toString() + "]");
response.writeTo(System.out);
}catch(Exception e){
e.printStackTrace();
fail("Caught exception " + e);
}
}
/**
* @return
* @throws Exception
*/
private Dispatch<SOAPMessage> createDispatch() throws Exception {
Service svc = Service.create(serviceName);
svc.addPort(portName,null, endpointUrl);
Dispatch<SOAPMessage> dispatch = svc.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
return dispatch;
}
/**
* Common assertion checking of the response
* @param msg
* @param expectedText
* @return SOAPElement representing the data element
*/
private SOAPElement assertResponseXML(SOAPMessage msg, String expectedText) throws Exception {
assertTrue(msg != null);
SOAPBody body = msg.getSOAPBody();
assertTrue(body != null);
Node invokeElement = (Node) body.getFirstChild();
assertTrue(invokeElement instanceof SOAPElement);
assertEquals(SoapMessageProvider.RESPONSE_NAME, invokeElement.getLocalName());
Node dataElement = (Node) invokeElement.getFirstChild();
assertTrue(dataElement instanceof SOAPElement);
assertEquals(SoapMessageProvider.RESPONSE_DATA_NAME, dataElement.getLocalName());
// TODO AXIS2 SAAJ should (but does not) support the getTextContent();
// String text = dataElement.getTextContent();
String text = dataElement.getValue();
assertEquals("Found ("+ text + ") but expected (" + expectedText + ")", expectedText, text);
return (SOAPElement) dataElement;
}
/**
* Count Attachments
* @param msg
* @return
*/
private int countAttachments(SOAPMessage msg) {
Iterator it = msg.getAttachments();
int count = 0;
assertTrue(it != null);
while (it.hasNext()) {
it.next();
count++;
}
return count;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?