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