blob: 849c816f4aaa0f992649b27fef63422d853ff122 [file] [log] [blame]
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed 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.MessageFactory;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
import java.util.Iterator;
public class SOAPHeaderTest extends TestCase {
private MessageFactory mf = null;
private SOAPMessage msg = null;
private SOAPPart sp = null;
private SOAPEnvelope envelope = null;
private SOAPHeader hdr = null;
private SOAPHeaderElement she1 = null;
private SOAPHeaderElement she2 = null;
public SOAPHeaderTest(String name) {
super(name);
}
public void testAddHeaderElements() throws Exception {
javax.xml.soap.SOAPMessage soapMessage =
javax.xml.soap.MessageFactory.newInstance().createMessage();
javax.xml.soap.SOAPEnvelope soapEnv =
soapMessage.getSOAPPart().getEnvelope();
javax.xml.soap.SOAPHeader header = soapEnv.getHeader();
assertTrue(header.addChildElement("ebxmlms1") instanceof SOAPHeaderElement);
assertTrue(header.addChildElement("ebxmlms2", "ch2", "http;//test.apache.org") instanceof SOAPHeaderElement);
assertTrue(header.addHeaderElement(soapEnv.createName("ebxmlms3", "ch3", "http://test2.apache.org")) != null);
assertTrue(header.addHeaderElement(soapEnv.createName("ebxmlms4")) != null);
assertTrue(header.addHeaderElement(new PrefixedQName("http://test3.apache.org", "ebxmlms5", "ch5")) != null);
SOAPHeaderElement firstChild = (SOAPHeaderElement) header.getFirstChild();
assertEquals("ebxmlms1", firstChild.getLocalName());
assertEquals("", firstChild.getPrefix());
assertEquals("", firstChild.getNamespaceURI());
SOAPHeaderElement secondChild = (SOAPHeaderElement) firstChild.getNextSibling();
assertEquals("ebxmlms2", secondChild.getLocalName());
assertEquals("ch2", secondChild.getPrefix());
assertEquals("http;//test.apache.org", secondChild.getNamespaceURI());
SOAPHeaderElement thirdChild = (SOAPHeaderElement) secondChild.getNextSibling();
assertEquals("ebxmlms3", thirdChild.getLocalName());
assertEquals("ch3", thirdChild.getPrefix());
assertEquals("http://test2.apache.org", thirdChild.getNamespaceURI());
SOAPHeaderElement lastChild = (SOAPHeaderElement) header.getLastChild();
assertEquals("ebxmlms5", lastChild.getLocalName());
assertEquals("ch5", lastChild.getPrefix());
assertEquals("http://test3.apache.org", lastChild.getNamespaceURI());
SOAPHeaderElement fourthChild = (SOAPHeaderElement) lastChild.getPreviousSibling();
assertEquals("ebxmlms4", fourthChild.getLocalName());
assertEquals("", fourthChild.getPrefix());
assertEquals("", fourthChild.getNamespaceURI());
Iterator it = header.getChildElements();
int numOfHeaderElements = 0;
while (it.hasNext()) {
Object o = it.next();
assertTrue(o instanceof SOAPHeaderElement);
SOAPHeaderElement el = (SOAPHeaderElement) o;
String lName = el.getLocalName();
assertTrue(lName.equals("ebxmlms" + ++numOfHeaderElements));
}
assertEquals(5, numOfHeaderElements);
}
public void testHeaders() {
try {
// Create message factory and SOAP factory
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPFactory soapFactory = SOAPFactory.newInstance();
// Create a message
SOAPMessage message = messageFactory.createMessage();
// Get the SOAP header from the message and
// add headers to it
SOAPHeader header = message.getSOAPHeader();
String nameSpace = "ns";
String nameSpaceURI = "http://gizmos.com/NSURI";
Name order =
soapFactory.createName("orderDesk", nameSpace, nameSpaceURI);
SOAPHeaderElement orderHeader = header.addHeaderElement(order);
orderHeader.setActor("http://gizmos.com/orders");
Name shipping =
soapFactory.createName("shippingDesk", nameSpace, nameSpaceURI);
SOAPHeaderElement shippingHeader =
header.addHeaderElement(shipping);
shippingHeader.setActor("http://gizmos.com/shipping");
Name confirmation =
soapFactory.createName("confirmationDesk", nameSpace,
nameSpaceURI);
SOAPHeaderElement confirmationHeader =
header.addHeaderElement(confirmation);
confirmationHeader.setActor("http://gizmos.com/confirmations");
Name billing =
soapFactory.createName("billingDesk", nameSpace, nameSpaceURI);
SOAPHeaderElement billingHeader = header.addHeaderElement(billing);
billingHeader.setActor("http://gizmos.com/billing");
// Add header with mustUnderstand attribute
Name tName =
soapFactory.createName("Transaction", "t",
"http://gizmos.com/orders");
SOAPHeaderElement transaction = header.addHeaderElement(tName);
transaction.setMustUnderstand(true);
transaction.addTextNode("5");
// Get the SOAP body from the message but leave
// it empty
SOAPBody body = message.getSOAPBody();
message.saveChanges();
// Display the message that would be sent
System.out.println("\n----- Request Message ----\n");
message.writeTo(System.out);
// Look at the headers
Iterator allHeaders = header.examineAllHeaderElements();
while (allHeaders.hasNext()) {
SOAPHeaderElement headerElement =
(SOAPHeaderElement) allHeaders.next();
Name headerName = headerElement.getElementName();
System.out.println("\nHeader name is " +
headerName.getQualifiedName());
System.out.println("Actor is " + headerElement.getActor());
System.out.println("mustUnderstand is " +
headerElement.getMustUnderstand());
}
} catch (Exception e) {
fail("Enexpected Exception " + e);
}
}
protected void setUp() throws Exception {
msg = MessageFactory.newInstance().createMessage();
sp = msg.getSOAPPart();
envelope = sp.getEnvelope();
hdr = envelope.getHeader();
}
public void testExamineHeader() {
SOAPHeaderElement she = null;
try {
she1 = hdr.addHeaderElement(envelope.createName("foo1", "f1", "foo1-URI"));
she1.setActor("actor-URI");
Iterator iterator = hdr.examineAllHeaderElements();
int cnt = 0;
while (iterator.hasNext()) {
cnt++;
she = (SOAPHeaderElement) iterator.next();
if (!she.equals(she1)) {
fail("SOAP Header Elements do not match");
}
}
if (cnt != 1) {
fail("SOAPHeaderElement count mismatch: expected 1, received " + cnt);
}
iterator = hdr.examineAllHeaderElements();
if (!iterator.hasNext()) {
fail("no elements in iterator - unexpected");
}
} catch (Exception e) {
fail("Unexpected Exception: " + e);
}
}
}