blob: 73d5617ab55cec772467a6ee4e2d3f49dc1dbf17 [file] [log] [blame]
package org.apache.axis.handlers.addressing;
import javax.xml.namespace.QName;
import junit.framework.TestCase;
import org.apache.axis.addressing.AddressingConstants;
import org.apache.axis.addressing.AnyContentType;
import org.apache.axis.addressing.EndpointReference;
import org.apache.axis.addressing.MessageInformationHeadersCollection;
import org.apache.axis.addressing.ServiceName;
import org.apache.axis.addressing.miheaders.RelatesTo;
import org.apache.axis.context.MessageContext;
import org.apache.axis.handlers.util.TestUtil;
import org.apache.axis.om.OMAbstractFactory;
import org.apache.axis.om.impl.llom.util.XMLComparator;
import org.apache.axis.soap.SOAPEnvelope;
import org.apache.axis.soap.impl.llom.builder.StAXSOAPModelBuilder;
/**
* Copyright 2001-2004 The Apache Software Foundation.
* <p/>
* 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
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* 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.
* <p/>
*/
public class AddressingOutHandlerTest extends TestCase implements AddressingConstants {
/**
* Eran Chinthaka (chinthaka@apache.org)
*/
private AddressingOutHandler outHandler;
private MessageContext msgCtxt;
private TestUtil testUtil;
public AddressingOutHandlerTest(String testName) {
super(testName);
}
protected void setUp() throws Exception {
super.setUp();
outHandler = new AddressingOutHandler();
testUtil = new TestUtil();
}
public void testAddToSOAPHeader() throws Exception {
EndpointReference epr = new EndpointReference(WSA_FROM, "http://www.from.org/service/");
epr.setPortType(new QName("http://www.from.org/service/port/", "Port", "portNS"));
epr.setServiceName(new ServiceName(new QName("http://www.from.org/service/", "Service", "serviceNS"), "port"));
AnyContentType anyContentType = new AnyContentType();
for (int i = 0; i < 5; i++) {
anyContentType.addReferenceValue(new QName("Reference" + i), "Value " + i * 100);
}
epr.setReferenceParameters(anyContentType);
SOAPEnvelope defaultEnvelope = OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope();
defaultEnvelope.getHeader().declareNamespace(WSA_NAMESPACE, "wsa");
outHandler.addToSOAPHeader(epr, WSA_FROM, defaultEnvelope.getHeader());
StAXSOAPModelBuilder omBuilder = testUtil.getOMBuilder("eprTest.xml");
XMLComparator xmlComparator = new XMLComparator();
assertTrue(xmlComparator.compare(omBuilder.getDocumentElement(), defaultEnvelope));
}
public void testHeaderCreationFromMsgCtxtInformation() throws Exception {
MessageInformationHeadersCollection mIHeaders = new MessageInformationHeadersCollection();
AnyContentType referenceValues = new AnyContentType();
EndpointReference epr = new EndpointReference(WSA_FROM, "http://www.from.org/service/");
referenceValues.addReferenceValue(new QName("Reference2"), "Value 200");
epr.setReferenceParameters(referenceValues);
mIHeaders.setFrom(epr);
epr = new EndpointReference(WSA_TO, "http://www.to.org/service/");
referenceValues = new AnyContentType();
referenceValues.addReferenceValue(new QName("Reference1"), "Value 100");
epr.setReferenceProperties(referenceValues);
epr.setServiceName(new ServiceName(new QName("http://www.from.org/service/", "Service", "serviceNS"), "port"));
mIHeaders.setTo(epr);
epr = new EndpointReference(WSA_REPLY_TO, "http://www.replyTo.org/service/");
referenceValues = new AnyContentType();
referenceValues.addReferenceValue(new QName("Reference3"), "Value 300");
epr.setPortType(new QName("http://www.from.org/service/port/", "Port", "portNS"));
epr.setReferenceProperties(referenceValues);
referenceValues = new AnyContentType();
referenceValues.addReferenceValue(new QName("Reference4"), "Value 400");
epr.setReferenceParameters(referenceValues);
mIHeaders.setReplyTo(epr);
mIHeaders.setMessageId("123456-7890");
mIHeaders.setAction("http://www.actions.org/action");
RelatesTo relatesTo = new RelatesTo("http://www.relatesTo.org/service/", "TestRelation");
mIHeaders.setRelatesTo(relatesTo);
msgCtxt = new MessageContext(null);
msgCtxt.setMessageInformationHeaders(mIHeaders);
msgCtxt.setEnvelope(OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope());
outHandler.invoke(msgCtxt);
XMLComparator xmlComparator = new XMLComparator();
assertTrue(xmlComparator.compare(msgCtxt.getEnvelope(), testUtil.getOMBuilder("OutHandlerTest.xml").getDocumentElement()));
}
}