/* * 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.addressing; import junit.framework.TestCase; import junit.textui.TestRunner; 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 javax.xml.namespace.QName; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.Map; public class EndpointReferenceTypeTest extends TestCase { EndpointReference endpointReference; private String address = "htttp://wwww.openource.lk/~chinthaka"; public static void main(String[] args) { TestRunner.run(EndpointReferenceTypeTest.class); } /* * @see TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); endpointReference = new EndpointReference(address); } public void testGetAndSetAddress() { assertEquals("Address not set properly in the constructor", address, endpointReference.getAddress()); String newAddress = "http://www.axis2.com"; endpointReference.setAddress(newAddress); assertEquals("Address not set properly in the setter method", newAddress, endpointReference.getAddress()); } public void testGetAndSetReferenceParameters() { for (int i = 0; i < 10; i++) { endpointReference.addReferenceParameter( new QName("http://www.opensouce.lk/" + i, "" + i), "value " + i * 50); } Map retrievedReferenceParameters = endpointReference.getAllReferenceParameters(); for (int i = 0; i < 10; i++) { OMElement referenceParameter = (OMElement) retrievedReferenceParameters.get( new QName("http://www.opensouce.lk/" + i, "" + i)); assertEquals( "Input value differs from what is taken out from AnyContentType", referenceParameter.getText(), "value " + i * 50); } } public void testHasAnonymousAddress() { // Default EndpointReference does not has 'anonymous address' assertFalse(endpointReference.hasAnonymousAddress()); // EndpointReference with 2005/08 Anonymous address EndpointReference epr200508anon = new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL); assertTrue(epr200508anon.hasAnonymousAddress()); // EndpointReference with 2004/08 Anonymous address EndpointReference epr200408anon = new EndpointReference(AddressingConstants.Submission.WSA_ANONYMOUS_URL); assertTrue(epr200408anon.hasAnonymousAddress()); } public void testHasNoneAddress() { // Default EndpointReference does not has 'anonymous address' assertFalse(endpointReference.hasNoneAddress()); // EndpointReference with 2005/08 None address EndpointReference epr200508none = new EndpointReference(AddressingConstants.Final.WSA_NONE_URI); assertTrue(epr200508none.hasNoneAddress()); } public void testSerializationDeserialization() 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"); ArrayList addressAttributes = new ArrayList(); addressAttributes.add(attr1); addressAttributes.add(attr2); epr.setAddressAttributes(addressAttributes); ArrayList metadataAttributes = new ArrayList(); metadataAttributes.add(attr1); metadataAttributes.add(attr2); epr.setMetadataAttributes(metadataAttributes); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(epr); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bais); EndpointReference deserializedEPR = (EndpointReference) ois.readObject(); assertEquals(epr.getAddress(), deserializedEPR.getAddress()); ArrayList addrAttrs = deserializedEPR.getAddressAttributes(); assertAttributesEqual(attr1, (OMAttribute) addrAttrs.get(0)); assertAttributesEqual(attr2, (OMAttribute) addrAttrs.get(1)); ArrayList attrs = deserializedEPR.getAttributes(); assertAttributesEqual(attr1, (OMAttribute) attrs.get(0)); assertAttributesEqual(attr2, (OMAttribute) attrs.get(1)); ArrayList metadata = deserializedEPR.getMetaData(); assertEquals(md1.toString(), metadata.get(0).toString()); assertEquals(md2.toString(), metadata.get(1).toString()); ArrayList mdAttrs = deserializedEPR.getMetadataAttributes(); assertAttributesEqual(attr1, (OMAttribute) mdAttrs.get(0)); assertAttributesEqual(attr2, (OMAttribute) mdAttrs.get(1)); ArrayList extelts = deserializedEPR.getExtensibleElements(); assertEquals(ext1.toString(), extelts.get(0).toString()); assertEquals(ext2.toString(), extelts.get(1).toString()); Map m = deserializedEPR.getAllReferenceParameters(); assertEquals("rp1", ((OMElement) m.get(rp1Qname)).getText()); assertEquals("rp2", ((OMElement) m.get(rp2Qname)).getText()); } private void assertAttributesEqual(OMAttribute attribute1, OMAttribute attribute2) { if (!attribute1.getAttributeValue().equals(attribute2.getAttributeValue()) || (!attribute1.getQName().equals(attribute2.getQName()))) { fail("expected:" + attribute1.getQName() + "=" + attribute1.getAttributeValue() + " but got " + attribute2.getQName() + "=" + attribute2.getAttributeValue()); } } }