blob: 1ebb839ccc5c11fef8972cf31b4b50224744703d [file] [log] [blame]
/*
* 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.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
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 javax.xml.transform.dom.DOMSource;
import java.io.File;
import java.util.Iterator;
/**
*
*/
@RunWith(SAAJTestRunner.class)
public class SOAPPartTest extends Assert {
@Validated @Test
public void testAddSource() throws Exception {
/*
FileReader testFile = new FileReader(new File(System.getProperty("basedir",".")+"/test-resources" + File.separator + "soap-part.xml"));
StAXOMBuilder stAXOMBuilder =
OMXMLBuilderFactory.createStAXOMBuilder(
OMAbstractFactory.getSOAP11Factory(),
XMLInputFactory.newInstance().createXMLStreamReader(
testFile));
*/
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder builder = dbf.newDocumentBuilder();
Document document = builder.parse(TestUtils.getTestFileURI("soap-part.xml"));
DOMSource domSource = new DOMSource(document);
SOAPMessage message = MessageFactory.newInstance().createMessage();
// Get the SOAP part and set its content to domSource
SOAPPart soapPart = message.getSOAPPart();
soapPart.setContent(domSource);
message.saveChanges();
SOAPHeader header = message.getSOAPHeader();
if (header != null) {
Iterator iter1 = header.getChildElements();
getContents(iter1, "");
}
SOAPBody body = message.getSOAPBody();
Iterator iter2 = body.getChildElements();
getContents(iter2, "");
}
public void getContents(Iterator iterator, String indent) {
while (iterator.hasNext()) {
Node node = (Node)iterator.next();
SOAPElement element = null;
Text text = null;
if (node instanceof SOAPElement) {
element = (SOAPElement)node;
Name name = element.getElementName();
Iterator attrs = element.getAllAttributes();
while (attrs.hasNext()) {
Name attrName = (Name)attrs.next();
assertNotNull(attrName);
}
Iterator iter2 = element.getChildElements();
getContents(iter2, indent + " ");
} else {
text = (Text)node;
String content = text.getValue();
assertNotNull(content);
}
}
}
@Validated @Test
public void testAddSource2() throws Exception {
SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
SOAPEnvelope soapEnv = soapMessage.getSOAPPart().getEnvelope();
SOAPHeader header = soapEnv.getHeader();
SOAPBody body = soapEnv.getBody();
assertTrue(header.addChildElement("ebxmlms1", "ch2",
"http://test.apache.org") instanceof SOAPHeaderElement);
assertTrue(header.addHeaderElement(
soapEnv.createName("ebxmlms2", "ch3", "http://test2.apache.org")) != null);
assertTrue(header.addHeaderElement(
new PrefixedQName("http://test3.apache.org", "ebxmlms3", "ch5")) != null);
body.addChildElement("bodyEle1", "ele1", "http://ws.apache.org");
soapMessage.saveChanges();
SOAPMessage soapMessage2 = MessageFactory.newInstance().createMessage();
SOAPPart soapPart = soapMessage2.getSOAPPart();
soapPart.setContent(soapMessage.getSOAPPart().getContent());
soapMessage2.saveChanges();
assertNotNull(soapMessage2);
}
@Validated @Test
public void testAddSource3() throws Exception {
SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
SOAPEnvelope soapEnv = soapMessage.getSOAPPart().getEnvelope();
SOAPHeader header = soapEnv.getHeader();
SOAPBody body = soapEnv.getBody();
assertTrue(header.addChildElement("ebxmlms1", "ch2",
"http://test.apache.org") instanceof SOAPHeaderElement);
assertTrue(header.addHeaderElement(
soapEnv.createName("ebxmlms2", "ch3", "http://test2.apache.org")) != null);
assertTrue(header.addHeaderElement(
new PrefixedQName("http://test3.apache.org", "ebxmlms3", "ch5")) != null);
body.addChildElement("bodyEle1", "ele1", "http://ws.apache.org");
soapMessage.saveChanges();
SOAPMessage soapMessage2 = MessageFactory.newInstance().createMessage();
SOAPPart soapPart = soapMessage2.getSOAPPart();
soapPart.setContent(soapMessage.getSOAPPart().getContent());
soapMessage2.saveChanges();
assertNotNull(soapMessage2);
}
public void _testInputEncoding() throws Exception {
DOMSource domSource;
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new File(System.getProperty("basedir", ".") +
"/test-resources" + File.separator + "soap-part.xml"));
domSource = new DOMSource(document);
SOAPMessage message = MessageFactory.newInstance().createMessage();
// Get the SOAP part and set its content to domSource
SOAPPart soapPart = message.getSOAPPart();
soapPart.setContent(domSource);
message.saveChanges();
SOAPPart sp = message.getSOAPPart();
// String inputEncoding = sp.getInputEncoding();
// assertNotNull(inputEncoding);
}
/**
* Check parent processing of SOAPMessage
*/
@Validated @Test
public void test_parentAccess1() throws Exception {
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage m = mf.createMessage();
SOAPPart sp = m.getSOAPPart();
Node node = sp.getParentNode();
assertTrue(node == null);
SOAPElement e = sp.getParentElement();
assertTrue(node == null);
}
// TODO: check why this fails with Sun's SAAJ implementation
@Test
public void testNodeTypes() throws Exception {
MessageFactory fact = MessageFactory.newInstance();
SOAPMessage message = fact.createMessage();
SOAPPart soapPart = message.getSOAPPart();
assertTrue("first child", soapPart.getFirstChild() instanceof SOAPEnvelope);
assertTrue("last child", soapPart.getLastChild() instanceof SOAPEnvelope);
NodeList nodes = soapPart.getChildNodes();
assertEquals(1, nodes.getLength());
for (int i = 0; i < nodes.getLength(); i++) {
assertTrue(nodes.item(i) instanceof SOAPEnvelope);
}
}
// TODO: check why this fails with Sun's SAAJ implementation
@Test
public void testRemoveChild1() throws Exception {
MessageFactory fact = MessageFactory.newInstance();
SOAPMessage message = fact.createMessage();
SOAPPart soapPart = message.getSOAPPart();
assertTrue("soap env before", soapPart.getFirstChild() instanceof SOAPEnvelope);
soapPart.removeChild(soapPart.getFirstChild());
assertTrue("soap env after", soapPart.getFirstChild() == null);
}
// TODO: check why this fails with Sun's SAAJ implementation
@Test
public void testRemoveChild2() throws Exception {
MessageFactory fact = MessageFactory.newInstance();
SOAPMessage message = fact.createMessage();
SOAPPart soapPart = message.getSOAPPart();
assertTrue("soap env before", soapPart.getFirstChild() instanceof SOAPEnvelope);
soapPart.removeChild(soapPart.getEnvelope());
assertTrue("soap env after", soapPart.getFirstChild() == null);
}
}