/* * 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.handlers.addressing; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMAttribute; import org.apache.axiom.om.OMNamespace; import org.apache.axiom.om.OMXMLParserWrapper; import org.apache.axiom.soap.SOAPEnvelope; import org.apache.axiom.soap.SOAPFactory; import org.apache.axiom.soap.SOAPHeaderBlock; import org.apache.axis2.addressing.AddressingConstants; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.addressing.RelatesTo; import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.context.ConfigurationContextFactory; import org.apache.axis2.context.MessageContext; import org.apache.axis2.description.AxisModule; import org.apache.axis2.description.Parameter; import org.apache.axis2.engine.AxisConfiguration; import org.apache.axis2.handlers.util.TestUtil; import org.custommonkey.xmlunit.XMLTestCase; import org.custommonkey.xmlunit.XMLUnit; import javax.xml.namespace.QName; import java.io.File; import java.util.ArrayList; import java.util.Iterator; public class AddressingOutHandlerTest extends XMLTestCase implements AddressingConstants { private AddressingOutHandler outHandler; private MessageContext msgCtxt; public AddressingOutHandlerTest(String testName) { super(testName); } protected void setUp() throws Exception { super.setUp(); outHandler = new AddressingOutHandler(); } public void testAddToSOAPHeader() throws Exception { EndpointReference replyTo = new EndpointReference( "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous"); EndpointReference epr = new EndpointReference("http://www.to.org/service/"); for (int i = 0; i < 5; i++) { epr.addReferenceParameter( new QName(Submission.WSA_NAMESPACE, "Reference" + i, AddressingConstants.WSA_DEFAULT_PREFIX), "Value " + i * 100); } SOAPFactory factory = OMAbstractFactory.getSOAP11Factory(); SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope(); ConfigurationContext configCtx = ConfigurationContextFactory.createEmptyConfigurationContext(); MessageContext msgCtxt = configCtx.createMessageContext(); msgCtxt.setProperty(WS_ADDRESSING_VERSION, Submission.WSA_NAMESPACE); msgCtxt.setTo(epr); msgCtxt.setReplyTo(replyTo); msgCtxt.setEnvelope(defaultEnvelope); msgCtxt.setWSAAction("http://www.actions.org/action"); msgCtxt.setMessageID("urn:test:123"); OMAttribute extAttr = OMAbstractFactory.getOMFactory().createOMAttribute("AttrExt", OMAbstractFactory .getOMFactory().createOMNamespace( "http://ws.apache.org/namespaces/axis2", "axis2"), "123456789"); ArrayList al = new ArrayList(); al.add(extAttr); msgCtxt.setProperty(AddressingConstants.ACTION_ATTRIBUTES, al); msgCtxt.setProperty(AddressingConstants.MESSAGEID_ATTRIBUTES, al); outHandler.invoke(msgCtxt); OMXMLParserWrapper omBuilder = TestUtil.getOMBuilder("eprTest.xml"); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(omBuilder.getDocumentElement().toString(), defaultEnvelope.toString()); } public void testHeaderCreationFromMsgCtxtInformation() throws Exception { ConfigurationContext cfgCtx = ConfigurationContextFactory.createEmptyConfigurationContext(); msgCtxt = cfgCtx.createMessageContext(); EndpointReference epr = new EndpointReference("http://www.from.org/service/"); epr.addReferenceParameter(new QName("Reference2"), "Value 200"); msgCtxt.setFrom(epr); epr = new EndpointReference("http://www.to.org/service/"); epr.addReferenceParameter( new QName("http://reference.org", "Reference4", "myRef"), "Value 400"); epr.addReferenceParameter( new QName("http://reference.org", "Reference3", "myRef"), "Value 300"); msgCtxt.setTo(epr); msgCtxt.setProperty(WS_ADDRESSING_VERSION, Submission.WSA_NAMESPACE); epr = new EndpointReference("http://www.replyTo.org/service/"); msgCtxt.setReplyTo(epr); msgCtxt.setMessageID("123456-7890"); msgCtxt.setWSAAction("http://www.actions.org/action"); org.apache.axis2.addressing.RelatesTo relatesTo = new org.apache.axis2.addressing.RelatesTo( "http://www.relatesTo.org/service/", "TestRelation"); msgCtxt.addRelatesTo(relatesTo); msgCtxt.setEnvelope( OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope()); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(msgCtxt.getEnvelope().toString(), TestUtil.getOMBuilder("OutHandlerTest.xml") .getDocumentElement().toString()); } public void testMustUnderstandSupport() throws Exception { ConfigurationContext cfgCtx = ConfigurationContextFactory.createEmptyConfigurationContext(); msgCtxt = cfgCtx.createMessageContext(); msgCtxt.setProperty(AddressingConstants.ADD_MUST_UNDERSTAND_TO_ADDRESSING_HEADERS, Boolean.TRUE); EndpointReference epr = new EndpointReference("http://www.from.org/service/"); epr.addReferenceParameter(new QName("Reference2"), "Value 200"); msgCtxt.setFrom(epr); epr = new EndpointReference("http://www.to.org/service/"); epr.addReferenceParameter( new QName("http://reference.org", "Reference4", "myRef"), "Value 400"); epr.addReferenceParameter( new QName("http://reference.org", "Reference3", "myRef"), "Value 300"); msgCtxt.setTo(epr); msgCtxt.setProperty(WS_ADDRESSING_VERSION, Submission.WSA_NAMESPACE); epr = new EndpointReference("http://www.replyTo.org/service/"); msgCtxt.setReplyTo(epr); msgCtxt.setMessageID("123456-7890"); msgCtxt.setWSAAction("http://www.actions.org/action"); org.apache.axis2.addressing.RelatesTo relatesTo = new org.apache.axis2.addressing.RelatesTo( "http://www.relatesTo.org/service/", "TestRelation"); msgCtxt.addRelatesTo(relatesTo); msgCtxt.setEnvelope( OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope()); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(TestUtil.getOMBuilder("mustUnderstandTest.xml") .getDocumentElement().toString(), msgCtxt.getEnvelope().toString()); } public void testSOAPRoleSupport() throws Exception { ConfigurationContext cfgCtx = ConfigurationContextFactory.createEmptyConfigurationContext(); msgCtxt = cfgCtx.createMessageContext(); msgCtxt.setProperty(AddressingConstants.SOAP_ROLE_FOR_ADDRESSING_HEADERS, "urn:test:role"); EndpointReference epr = new EndpointReference("http://www.from.org/service/"); epr.addReferenceParameter(new QName("Reference2"), "Value 200"); msgCtxt.setFrom(epr); epr = new EndpointReference("http://www.to.org/service/"); epr.addReferenceParameter( new QName("http://reference.org", "Reference4", "myRef"), "Value 400"); epr.addReferenceParameter( new QName("http://reference.org", "Reference3", "myRef"), "Value 300"); msgCtxt.setTo(epr); msgCtxt.setProperty(WS_ADDRESSING_VERSION, Submission.WSA_NAMESPACE); epr = new EndpointReference("http://www.replyTo.org/service/"); msgCtxt.setReplyTo(epr); msgCtxt.setMessageID("123456-7890"); msgCtxt.setWSAAction("http://www.actions.org/action"); org.apache.axis2.addressing.RelatesTo relatesTo = new org.apache.axis2.addressing.RelatesTo( "http://www.relatesTo.org/service/", "TestRelation"); msgCtxt.addRelatesTo(relatesTo); msgCtxt.setEnvelope( OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope()); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(msgCtxt.getEnvelope().toString(), TestUtil.getOMBuilder("soap11roleTest.xml").getDocumentElement().toString()); } public void testSOAP12RoleSupport() throws Exception { ConfigurationContext cfgCtx = ConfigurationContextFactory.createEmptyConfigurationContext(); msgCtxt = cfgCtx.createMessageContext(); msgCtxt.setProperty(AddressingConstants.SOAP_ROLE_FOR_ADDRESSING_HEADERS, "urn:test:role"); EndpointReference epr = new EndpointReference("http://www.from.org/service/"); epr.addReferenceParameter(new QName("Reference2"), "Value 200"); msgCtxt.setFrom(epr); epr = new EndpointReference("http://www.to.org/service/"); epr.addReferenceParameter( new QName("http://reference.org", "Reference4", "myRef"), "Value 400"); epr.addReferenceParameter( new QName("http://reference.org", "Reference3", "myRef"), "Value 300"); msgCtxt.setTo(epr); msgCtxt.setProperty(WS_ADDRESSING_VERSION, Submission.WSA_NAMESPACE); epr = new EndpointReference("http://www.replyTo.org/service/"); msgCtxt.setReplyTo(epr); msgCtxt.setMessageID("123456-7890"); msgCtxt.setWSAAction("http://www.actions.org/action"); org.apache.axis2.addressing.RelatesTo relatesTo = new org.apache.axis2.addressing.RelatesTo( "http://www.relatesTo.org/service/", "TestRelation"); msgCtxt.addRelatesTo(relatesTo); msgCtxt.setEnvelope( OMAbstractFactory.getSOAP12Factory().getDefaultEnvelope()); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(msgCtxt.getEnvelope().toString(), TestUtil.getOMBuilder("soap12roleTest.xml") .getDocumentElement().toString()); } public void testDuplicateHeaders() throws Exception { // this will check whether we can add to epr, if there is one already. EndpointReference eprOne = new EndpointReference("http://whatever.org"); EndpointReference duplicateEpr = new EndpointReference("http://whatever.duplicate.org"); RelatesTo reply = new RelatesTo("urn:id"); ConfigurationContext cfgCtx = ConfigurationContextFactory.createEmptyConfigurationContext(); msgCtxt = cfgCtx.createMessageContext(); SOAPFactory factory = OMAbstractFactory.getSOAP11Factory(); SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope(); msgCtxt.setEnvelope(defaultEnvelope); msgCtxt.addRelatesTo(reply); msgCtxt.setTo(eprOne); msgCtxt.setWSAAction("http://www.actions.org/action"); outHandler.invoke(msgCtxt); // now the soap message within the msgCtxt must have a to header. // lets invoke twice and see msgCtxt.setTo(duplicateEpr); outHandler.invoke(msgCtxt); assertEquals("http://whatever.org", defaultEnvelope.getHeader() .getFirstChildWithName(Final.QNAME_WSA_TO).getText()); Iterator iterator = defaultEnvelope.getHeader().getChildrenWithName(Final.QNAME_WSA_RELATES_TO); int i = 0; while (iterator.hasNext()) { iterator.next(); i++; } assertEquals("Reply should be added twice.", 2, i); } public void testDuplicateHeadersWithOverridingOn() throws Exception { // this will check whether we can add to epr, if there is one already. EndpointReference eprOne = new EndpointReference("http://whatever.org"); RelatesTo custom = new RelatesTo("urn:id", "customRelationship"); ConfigurationContext cfgCtx = ConfigurationContextFactory.createEmptyConfigurationContext(); msgCtxt = cfgCtx.createMessageContext(); SOAPFactory factory = OMAbstractFactory.getSOAP11Factory(); SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope(); OMNamespace addressingNamespace = factory.createOMNamespace(Final.WSA_NAMESPACE, WSA_DEFAULT_PREFIX); SOAPHeaderBlock soapHeaderBlock = defaultEnvelope.getHeader().addHeaderBlock(WSA_TO, addressingNamespace); soapHeaderBlock.setText("http://oldEPR.org"); soapHeaderBlock = defaultEnvelope.getHeader().addHeaderBlock(WSA_RELATES_TO, addressingNamespace); soapHeaderBlock.setText("urn:id"); soapHeaderBlock = defaultEnvelope.getHeader().addHeaderBlock(WSA_RELATES_TO, addressingNamespace); soapHeaderBlock.setText("urn:id"); soapHeaderBlock .addAttribute(WSA_RELATES_TO_RELATIONSHIP_TYPE, custom.getRelationshipType(), null); msgCtxt.setEnvelope(defaultEnvelope); msgCtxt.setProperty(REPLACE_ADDRESSING_HEADERS, Boolean.TRUE); msgCtxt.addRelatesTo(custom); msgCtxt.setTo(eprOne); msgCtxt.setWSAAction("http://www.actions.org/action"); outHandler.invoke(msgCtxt); assertEquals("http://whatever.org", defaultEnvelope.getHeader() .getFirstChildWithName(Final.QNAME_WSA_TO).getText()); Iterator iterator = defaultEnvelope.getHeader().getChildrenWithName(Final.QNAME_WSA_RELATES_TO); int i = 0; while (iterator.hasNext()) { iterator.next(); i++; } assertEquals("Custom should replace reply.", 1, i); } public void testDuplicateHeadersWithOverridingOff() throws Exception { // this will check whether we can add to epr, if there is one already. EndpointReference eprOne = new EndpointReference("http://whatever.org"); RelatesTo custom = new RelatesTo("urn:id", "customRelationship"); ConfigurationContext cfgCtx = ConfigurationContextFactory.createEmptyConfigurationContext(); msgCtxt = cfgCtx.createMessageContext(); SOAPFactory factory = OMAbstractFactory.getSOAP11Factory(); SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope(); OMNamespace addressingNamespace = factory.createOMNamespace(Final.WSA_NAMESPACE, WSA_DEFAULT_PREFIX); SOAPHeaderBlock soapHeaderBlock = defaultEnvelope.getHeader().addHeaderBlock(WSA_TO, addressingNamespace); soapHeaderBlock.setText("http://oldEPR.org"); soapHeaderBlock = defaultEnvelope.getHeader().addHeaderBlock(WSA_RELATES_TO, addressingNamespace); soapHeaderBlock.setText("urn:id"); msgCtxt.setEnvelope(defaultEnvelope); msgCtxt.setProperty(REPLACE_ADDRESSING_HEADERS, Boolean.FALSE); msgCtxt.addRelatesTo(custom); msgCtxt.setTo(eprOne); msgCtxt.setWSAAction("http://www.actions.org/action"); outHandler.invoke(msgCtxt); assertEquals("http://oldEPR.org", defaultEnvelope.getHeader() .getFirstChildWithName(Final.QNAME_WSA_TO).getText()); Iterator iterator = defaultEnvelope.getHeader().getChildrenWithName(Final.QNAME_WSA_RELATES_TO); int i = 0; while (iterator.hasNext()) { iterator.next(); i++; } assertEquals("Both reply and custom should be found.", 2, i); } public void testAxis2DisableAddressingForOutMessagesTrue() throws Exception { File configFile = new File(System.getProperty("basedir",".") + "/test-resources/axis2-disableAddressingForOutMessagesTrue.xml"); ConfigurationContext cfgCtx = ConfigurationContextFactory .createConfigurationContextFromFileSystem("target/test-classes", configFile.getAbsolutePath()); msgCtxt = cfgCtx.createMessageContext(); // Need to add a SOAP Header to stop this error from XMLComparator: // "There is no Header element under Envelope" SOAPFactory factory = OMAbstractFactory.getSOAP11Factory(); SOAPEnvelope envelope = factory.getDefaultEnvelope(); SOAPHeaderBlock soapHeaderBlock = envelope.getHeader().addHeaderBlock( "testHeader", factory.createOMNamespace("http://test.com", "test")); msgCtxt.setEnvelope(envelope); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(msgCtxt.getEnvelope().toString(), TestUtil .getOMBuilder("addressingDisabledTest.xml") .getDocumentElement().toString()); } public void testAxis2DisableAddressingForOutMessagesFalse() throws Exception { File configFile = new File(System.getProperty("basedir",".") + "/test-resources/axis2-disableAddressingForOutMessagesFalse.xml"); ConfigurationContext cfgCtx = ConfigurationContextFactory .createConfigurationContextFromFileSystem("target/test-classes", configFile.getAbsolutePath()); msgCtxt = cfgCtx.createMessageContext(); msgCtxt.setEnvelope(OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope()); msgCtxt.setTo(new EndpointReference("http://www.to.org/service/")); msgCtxt.setFrom(new EndpointReference("http://www.from.org/service/")); msgCtxt.setReplyTo(new EndpointReference("http://www.replyTo.org/service/")); msgCtxt.setFaultTo(new EndpointReference("http://www.faultTo.org/service/")); msgCtxt.setWSAAction("http://www.actions.org/action"); msgCtxt.setMessageID("123456-7890"); msgCtxt.addRelatesTo(new RelatesTo("http://www.relatesTo.org/service/")); msgCtxt.setProperty(WS_ADDRESSING_VERSION, Final.WSA_NAMESPACE); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(msgCtxt.getEnvelope().toString(), TestUtil .getOMBuilder("addressingEnabledTest.xml") .getDocumentElement().toString()); } public void testAxis2IncludeOptionalHeadersTrue() throws Exception { File configFile = new File(System.getProperty("basedir",".") + "/test-resources/axis2-IncludeOptionalHeadersTrue.xml"); ConfigurationContext cfgCtx = ConfigurationContextFactory .createConfigurationContextFromFileSystem("target/test-classes", configFile.getAbsolutePath()); msgCtxt = cfgCtx.createMessageContext(); msgCtxt.setEnvelope(OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope()); msgCtxt.setTo(new EndpointReference("http://www.to.org/service/")); msgCtxt.setFrom(new EndpointReference("http://www.from.org/service/")); msgCtxt.setReplyTo(new EndpointReference("http://www.replyTo.org/service/")); msgCtxt.setFaultTo(new EndpointReference("http://www.faultTo.org/service/")); msgCtxt.setWSAAction("http://www.actions.org/action"); msgCtxt.setMessageID("123456-7890"); msgCtxt.addRelatesTo(new RelatesTo("http://www.relatesTo.org/service/")); msgCtxt.setProperty(WS_ADDRESSING_VERSION, Final.WSA_NAMESPACE); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(msgCtxt.getEnvelope().toString(), TestUtil .getOMBuilder("withOptionalHeadersTest.xml") .getDocumentElement().toString()); } public void testAxis2IncludeOptionalHeadersFalse() throws Exception { File configFile = new File(System.getProperty("basedir",".") + "/test-resources/axis2-IncludeOptionalHeadersFalse.xml"); ConfigurationContext cfgCtx = ConfigurationContextFactory .createConfigurationContextFromFileSystem("target/test-classes", configFile.getAbsolutePath()); msgCtxt = cfgCtx.createMessageContext(); msgCtxt.setEnvelope(OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope()); msgCtxt.setTo(new EndpointReference("http://www.to.org/service/")); msgCtxt.setFrom(new EndpointReference("http://www.from.org/service/")); msgCtxt.setReplyTo(new EndpointReference("http://www.replyTo.org/service/")); msgCtxt.setFaultTo(new EndpointReference("http://www.faultTo.org/service/")); msgCtxt.setWSAAction("http://www.actions.org/action"); msgCtxt.setMessageID("123456-7890"); msgCtxt.addRelatesTo(new RelatesTo("http://www.relatesTo.org/service/")); msgCtxt.setProperty(WS_ADDRESSING_VERSION, Final.WSA_NAMESPACE); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(msgCtxt.getEnvelope().toString(), TestUtil .getOMBuilder("addressingEnabledTest.xml") .getDocumentElement().toString()); } public void testModuleDisableAddressingForOutMessagesTrue() throws Exception { File configFile = new File(System.getProperty("basedir",".") + "/test-resources/axis2-noParameters.xml"); ConfigurationContext cfgCtx = ConfigurationContextFactory .createConfigurationContextFromFileSystem("target/test-classes", configFile.getAbsolutePath()); AxisConfiguration config = cfgCtx.getAxisConfiguration(); // Can't test with a module.xml file in test-resources because it gets // overridden by target\classes\META-INF\module.xml, so create our own // AxisModule with the required parameter value AxisModule module = config.getModule("addressing"); module.addParameter(new Parameter("disableAddressingForOutMessages", "true")); msgCtxt = cfgCtx.createMessageContext(); // Need to add a SOAP Header to stop this error from XMLComparator: // "There is no Header element under Envelope" SOAPFactory factory = OMAbstractFactory.getSOAP11Factory(); SOAPEnvelope envelope = factory.getDefaultEnvelope(); SOAPHeaderBlock soapHeaderBlock = envelope.getHeader().addHeaderBlock( "testHeader", factory.createOMNamespace("http://test.com", "test")); msgCtxt.setEnvelope(envelope); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(msgCtxt.getEnvelope().toString(), TestUtil .getOMBuilder("addressingDisabledTest.xml") .getDocumentElement().toString()); } public void testModuleDisableAddressingForOutMessagesFalse() throws Exception { File configFile = new File(System.getProperty("basedir",".") + "/test-resources/axis2-noParameters.xml"); ConfigurationContext cfgCtx = ConfigurationContextFactory .createConfigurationContextFromFileSystem("target/test-classes", configFile.getAbsolutePath()); AxisConfiguration config = cfgCtx.getAxisConfiguration(); // Can't test with a module.xml file in test-resources because it gets // overridden by target\classes\META-INF\module.xml, so create our own // AxisModule with the required parameter value AxisModule module = config.getModule("addressing"); module.addParameter(new Parameter("disableAddressingForOutMessages", "false")); msgCtxt = cfgCtx.createMessageContext(); msgCtxt.setEnvelope(OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope()); msgCtxt.setTo(new EndpointReference("http://www.to.org/service/")); msgCtxt.setFrom(new EndpointReference("http://www.from.org/service/")); msgCtxt.setReplyTo(new EndpointReference("http://www.replyTo.org/service/")); msgCtxt.setFaultTo(new EndpointReference("http://www.faultTo.org/service/")); msgCtxt.setWSAAction("http://www.actions.org/action"); msgCtxt.setMessageID("123456-7890"); msgCtxt.addRelatesTo(new RelatesTo("http://www.relatesTo.org/service/")); msgCtxt.setProperty(WS_ADDRESSING_VERSION, Final.WSA_NAMESPACE); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(msgCtxt.getEnvelope().toString(), TestUtil .getOMBuilder("addressingEnabledTest.xml") .getDocumentElement().toString()); } public void testModuleIncludeOptionalHeadersTrue() throws Exception { File configFile = new File(System.getProperty("basedir",".") + "/test-resources/axis2-noParameters.xml"); ConfigurationContext cfgCtx = ConfigurationContextFactory .createConfigurationContextFromFileSystem("target/test-classes", configFile.getAbsolutePath()); AxisConfiguration config = cfgCtx.getAxisConfiguration(); // Can't test with a module.xml file in test-resources because it gets // overridden by target\classes\META-INF\module.xml, so create our own // AxisModule with the required parameter value AxisModule module = config.getModule("addressing"); module.addParameter(new Parameter("includeOptionalHeaders", "true")); msgCtxt = cfgCtx.createMessageContext(); msgCtxt.setEnvelope(OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope()); msgCtxt.setTo(new EndpointReference("http://www.to.org/service/")); msgCtxt.setFrom(new EndpointReference("http://www.from.org/service/")); msgCtxt.setReplyTo(new EndpointReference("http://www.replyTo.org/service/")); msgCtxt.setFaultTo(new EndpointReference("http://www.faultTo.org/service/")); msgCtxt.setWSAAction("http://www.actions.org/action"); msgCtxt.setMessageID("123456-7890"); msgCtxt.addRelatesTo(new RelatesTo("http://www.relatesTo.org/service/")); msgCtxt.setProperty(WS_ADDRESSING_VERSION, Final.WSA_NAMESPACE); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(msgCtxt.getEnvelope().toString(), TestUtil .getOMBuilder("withOptionalHeadersTest.xml") .getDocumentElement().toString()); } public void testModuleIncludeOptionalHeadersFalse() throws Exception { File configFile = new File(System.getProperty("basedir",".") + "/test-resources/axis2-noParameters.xml"); ConfigurationContext cfgCtx = ConfigurationContextFactory .createConfigurationContextFromFileSystem("target/test-classes", configFile.getAbsolutePath()); AxisConfiguration config = cfgCtx.getAxisConfiguration(); // Can't test with a module.xml file in test-resources because it gets // overridden by target\classes\META-INF\module.xml, so create our own // AxisModule with the required parameter value AxisModule module = config.getModule("addressing"); module.addParameter(new Parameter("includeOptionalHeaders", "false")); msgCtxt = cfgCtx.createMessageContext(); msgCtxt.setEnvelope(OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope()); msgCtxt.setTo(new EndpointReference("http://www.to.org/service/")); msgCtxt.setFrom(new EndpointReference("http://www.from.org/service/")); msgCtxt.setReplyTo(new EndpointReference("http://www.replyTo.org/service/")); msgCtxt.setFaultTo(new EndpointReference("http://www.faultTo.org/service/")); msgCtxt.setWSAAction("http://www.actions.org/action"); msgCtxt.setMessageID("123456-7890"); msgCtxt.addRelatesTo(new RelatesTo("http://www.relatesTo.org/service/")); msgCtxt.setProperty(WS_ADDRESSING_VERSION, Final.WSA_NAMESPACE); outHandler.invoke(msgCtxt); XMLUnit.setIgnoreWhitespace(true); assertXMLEqual(msgCtxt.getEnvelope().toString(), TestUtil .getOMBuilder("addressingEnabledTest.xml") .getDocumentElement().toString()); } }