blob: ff861e2bb504ea7128b6b3f9127972c878d8bbf9 [file] [log] [blame]
/*
* Copyright 2006 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.addressing;
import java.util.ArrayList;
import java.util.Map;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.context.MessageContext;
import junit.framework.TestCase;
public class EndpointReferenceHelperTest extends TestCase {
public void testToAndFromOMForFinalSpecEPR() throws Exception{
String address = "http://ws.apache.org/axis2";
EndpointReference epr = new EndpointReference(address);
OMFactory omf = OMAbstractFactory.getOMFactory();
OMNamespace ns1 = omf.createOMNamespace("http://uri1","prefix1");
OMAttribute attr1 = omf.createOMAttribute("attr1",ns1,"attr1value");
OMNamespace ns2 = omf.createOMNamespace("http://uri2","prefix2");
OMAttribute attr2 = omf.createOMAttribute("attr2",ns2,"attr2value");
epr.addAttribute(attr1);
epr.addAttribute(attr2);
OMElement md1 = omf.createOMElement("md1", "http://mduri1", "md1prefix");
OMElement md2 = omf.createOMElement("md2", "http://mduri2", "md2prefix");
epr.addMetaData(md1);
epr.addMetaData(md2);
OMElement ext1 = omf.createOMElement("ext1", "http://exturi1", "ext1prefix");
OMElement ext2 = omf.createOMElement("ext2", "http://exturi2", "ext2prefix");
epr.addExtensibleElement(ext1);
epr.addExtensibleElement(ext2);
QName rp1Qname = new QName("http://rp1uri","refParm1","rp1prefix");
QName rp2Qname = new QName("http://rp2uri","refParm2","rp2prefix");
epr.addReferenceParameter(rp1Qname,"rp1");
epr.addReferenceParameter(rp2Qname,"rp2");
OMElement om = EndpointReferenceHelper.toOM(omf, epr, new QName("http://nsurl","localName","prefix"), AddressingConstants.Final.WSA_NAMESPACE);
//Test deserialize using fromOM(OMElement)
EndpointReference deser = EndpointReferenceHelper.fromOM(om);
assertEquals(epr.getAddress(),deser.getAddress());
ArrayList attrs = deser.getAttributes();
assertEquals(attr1,attrs.get(0));
assertEquals(attr2,attrs.get(1));
ArrayList metadata = deser.getMetaData();
assertEquals(md1, metadata.get(0));
assertEquals(md2, metadata.get(1));
ArrayList extelts = deser.getExtensibleElements();
assertEquals(ext1,extelts.get(0));
assertEquals(ext2,extelts.get(1));
Map m = deser.getAllReferenceParameters();
assertEquals("rp1", ((OMElement)m.get(rp1Qname)).getText());
assertEquals("rp2", ((OMElement)m.get(rp2Qname)).getText());
//Test deserialize using fromOM(EndpointReference, OMElement, String)
deser = new EndpointReference("");
EndpointReferenceHelper.fromOM(deser, om, AddressingConstants.Final.WSA_NAMESPACE);
assertEquals(epr.getAddress(),deser.getAddress());
attrs = deser.getAttributes();
assertEquals(attr1,attrs.get(0));
assertEquals(attr2,attrs.get(1));
metadata = deser.getMetaData();
assertEquals(md1, metadata.get(0));
assertEquals(md2, metadata.get(1));
extelts = deser.getExtensibleElements();
assertEquals(ext1,extelts.get(0));
assertEquals(ext2,extelts.get(1));
m = deser.getAllReferenceParameters();
assertEquals("rp1", ((OMElement)m.get(rp1Qname)).getText());
assertEquals("rp2", ((OMElement)m.get(rp2Qname)).getText());
//Failure test
try {
deser = new EndpointReference("");
EndpointReferenceHelper.fromOM(deser, om, AddressingConstants.Submission.WSA_NAMESPACE);
fail("An exception should have been thrown due to failure to locate a wsa:Address field.");
}
catch (Exception e) {
//pass
}
}
public void testToAndFromOMForSubmissionSpecEPR() throws Exception{
String address = "http://ws.apache.org/axis2";
EndpointReference epr = new EndpointReference(address);
OMFactory omf = OMAbstractFactory.getOMFactory();
OMNamespace ns1 = omf.createOMNamespace("http://uri1","prefix1");
OMAttribute attr1 = omf.createOMAttribute("attr1",ns1,"attr1value");
OMNamespace ns2 = omf.createOMNamespace("http://uri2","prefix2");
OMAttribute attr2 = omf.createOMAttribute("attr2",ns2,"attr2value");
epr.addAttribute(attr1);
epr.addAttribute(attr2);
OMElement md1 = omf.createOMElement("md1", "http://mduri1", "md1prefix");
OMElement md2 = omf.createOMElement("md2", "http://mduri2", "md2prefix");
epr.addMetaData(md1);
epr.addMetaData(md2);
OMElement ext1 = omf.createOMElement("ext1", "http://exturi1", "ext1prefix");
OMElement ext2 = omf.createOMElement("ext2", "http://exturi2", "ext2prefix");
epr.addExtensibleElement(ext1);
epr.addExtensibleElement(ext2);
QName rp1Qname = new QName("http://rp1uri","refParm1","rp1prefix");
QName rp2Qname = new QName("http://rp2uri","refParm2","rp2prefix");
epr.addReferenceParameter(rp1Qname,"rp1");
epr.addReferenceParameter(rp2Qname,"rp2");
OMElement om = EndpointReferenceHelper.toOM(omf, epr, new QName("http://nsurl","localName","prefix"), AddressingConstants.Submission.WSA_NAMESPACE);
//Add some reference properties.
QName p1Qname = new QName("http://p1uri","refProp1","p1prefix");
QName p2Qname = new QName("http://p2uri","refProp2","p2prefix");
QName qname = new QName(AddressingConstants.Submission.WSA_NAMESPACE, "ReferenceProperties", AddressingConstants.WSA_DEFAULT_PREFIX);
OMElement referenceProperties = omf.createOMElement(qname, om);
OMElement prop1 = omf.createOMElement(p1Qname, referenceProperties);
OMElement prop2 = omf.createOMElement(p2Qname, referenceProperties);
prop1.setText("p1");
prop2.setText("p2");
//Test deserialize using fromOM(OMElement)
EndpointReference deser = EndpointReferenceHelper.fromOM(om);
assertEquals(epr.getAddress(),deser.getAddress());
ArrayList attrs = deser.getAttributes();
assertEquals(attr1,attrs.get(0));
assertEquals(attr2,attrs.get(1));
//Metadata will be lost unless it is saved as an extensibility element.
ArrayList metadata = deser.getMetaData();
assertNull(metadata);
ArrayList extelts = deser.getExtensibleElements();
assertEquals(ext1,extelts.get(0));
assertEquals(ext2,extelts.get(1));
//All reference properties are returned as reference parameters.
Map m = deser.getAllReferenceParameters();
assertEquals(4, m.size());
assertEquals("rp1", ((OMElement)m.get(rp1Qname)).getText());
assertEquals("rp2", ((OMElement)m.get(rp2Qname)).getText());
assertEquals("p1", ((OMElement)m.get(p1Qname)).getText());
assertEquals("p2", ((OMElement)m.get(p2Qname)).getText());
//Test deserialize using fromOM(EndpointReference, OMElement, String)
deser = new EndpointReference("");
EndpointReferenceHelper.fromOM(deser, om, AddressingConstants.Submission.WSA_NAMESPACE);
assertEquals(epr.getAddress(),deser.getAddress());
attrs = deser.getAttributes();
assertEquals(attr1,attrs.get(0));
assertEquals(attr2,attrs.get(1));
//Metadata will be lost unless it is saved as an extensibility element.
metadata = deser.getMetaData();
assertNull(metadata);
extelts = deser.getExtensibleElements();
assertEquals(ext1,extelts.get(0));
assertEquals(ext2,extelts.get(1));
//All reference properties are returned as reference parameters.
m = deser.getAllReferenceParameters();
assertEquals(4, m.size());
assertEquals("rp1", ((OMElement)m.get(rp1Qname)).getText());
assertEquals("rp2", ((OMElement)m.get(rp2Qname)).getText());
assertEquals("p1", ((OMElement)m.get(p1Qname)).getText());
assertEquals("p2", ((OMElement)m.get(p2Qname)).getText());
//Failure test
try {
deser = new EndpointReference("");
EndpointReferenceHelper.fromOM(deser, om, AddressingConstants.Final.WSA_NAMESPACE);
fail("An exception should have been thrown due to failure to locate a wsa:Address field.");
}
catch (Exception e) {
//pass
}
}
}