| /* |
| * 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); |
| } |
| } |