/* * 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.jaxws.description; import junit.framework.TestCase; import org.apache.axis2.description.AxisService; import org.apache.axis2.jaxws.spi.BindingProvider; import org.apache.axis2.jaxws.spi.ServiceDelegate; import org.apache.axis2.jaxws.unitTest.echo.EchoPort; import javax.xml.namespace.QName; import javax.xml.ws.Dispatch; import javax.xml.ws.Service; import java.lang.reflect.Proxy; import java.net.URL; /** * Test that the EndpointDescription can be gotten from * the Binding Provider impl class and that the AxisService can be * gotten from the EndpointDesc. Note that the BindingProvider class is NOT * the jaxws API one; it is the internal implementation BindingProvider class. */ public class GetDescFromBindingProviderTests extends TestCase { private static final String wsdlSOAPAddress = "http://localhost:6060/axis2/services/EchoService"; public void testForProxy() { String namespaceURI = "http://ws.apache.org/axis2/tests"; String localPart = "EchoService"; URL wsdlURL = DescriptionTestUtils2.getWSDLURL(); assertNotNull(wsdlURL); Service service = Service.create(wsdlURL, new QName(namespaceURI, localPart)); assertNotNull(service); QName validPortQName = new QName(namespaceURI, "EchoPort"); EchoPort echoPort = service.getPort(validPortQName, EchoPort.class); assertNotNull(echoPort); BindingProvider bindingProvider = (BindingProvider)Proxy.getInvocationHandler(echoPort); ServiceDelegate serviceDelegate = bindingProvider.getServiceDelegate(); assertNotNull(serviceDelegate); EndpointDescription endpointDesc = bindingProvider.getEndpointDescription(); assertNotNull(endpointDesc); AxisService axisService = endpointDesc.getAxisService(); assertNotNull(axisService); // The endpoint address should match what is in the WSDL String endpointAddress = endpointDesc.getEndpointAddress(); assertEquals(wsdlSOAPAddress, endpointAddress); } public void testForDispatch() { String namespaceURI = "http://ws.apache.org/axis2/tests"; String localPart = "EchoService"; URL wsdlURL = DescriptionTestUtils2.getWSDLURL(); assertNotNull(wsdlURL); Service service = Service.create(wsdlURL, new QName(namespaceURI, localPart)); assertNotNull(service); QName validPortQName = new QName(namespaceURI, "EchoPort"); Dispatch<String> dispatch = service.createDispatch(validPortQName, String.class, null); assertNotNull(dispatch); BindingProvider bindingProvider = (BindingProvider) dispatch; ServiceDelegate serviceDelegate = bindingProvider.getServiceDelegate(); assertNotNull(serviceDelegate); EndpointDescription endpointDesc = bindingProvider.getEndpointDescription(); assertNotNull(endpointDesc); AxisService axisService = endpointDesc.getAxisService(); assertNotNull(axisService); // The endpoint address should match what is in the WSDL String endpointAddress = endpointDesc.getEndpointAddress(); assertEquals(wsdlSOAPAddress, endpointAddress); } public void testForAddPort() { String namespaceURI = "http://ws.apache.org/axis2/tests"; String localPart = "EchoService"; URL wsdlURL = DescriptionTestUtils2.getWSDLURL(); assertNotNull(wsdlURL); Service service = Service.create(wsdlURL, new QName(namespaceURI, localPart)); assertNotNull(service); QName validPortQName = new QName(namespaceURI, "EchoPortAdded"); service.addPort(validPortQName, null, null); Dispatch<String> dispatch = service.createDispatch(validPortQName, String.class, null); assertNotNull(dispatch); BindingProvider bindingProvider = (BindingProvider) dispatch; ServiceDelegate serviceDelegate = bindingProvider.getServiceDelegate(); assertNotNull(serviceDelegate); EndpointDescription endpointDesc = bindingProvider.getEndpointDescription(); assertNotNull(endpointDesc); AxisService axisService = endpointDesc.getAxisService(); assertNotNull(axisService); // The endpoint address should be null since it wasn't specified on the addPort String endpointAddress = endpointDesc.getEndpointAddress(); assertNull(endpointAddress); QName validPortQName2 = new QName(namespaceURI, "EchoPortAdded2"); final String port2EndpointAddress = "http://testAddress:6060/my/test/address"; service.addPort(validPortQName2, null, port2EndpointAddress); dispatch = service.createDispatch(validPortQName2, String.class, null); assertNotNull(dispatch); bindingProvider = (BindingProvider) dispatch; endpointDesc = bindingProvider.getEndpointDescription(); assertNotNull(endpointDesc); // The endpoint address should be as set on the addPort above. endpointAddress = endpointDesc.getEndpointAddress(); assertEquals(port2EndpointAddress, endpointAddress); } public void testForProxyNoWSDL() { String namespaceURI = "http://ws.apache.org/axis2/tests"; String localPart = "EchoService"; Service service = Service.create(null, new QName(namespaceURI, localPart)); assertNotNull(service); QName validPortQName = new QName(namespaceURI, "EchoPort"); EchoPort echoPort = service.getPort(validPortQName, EchoPort.class); assertNotNull(echoPort); BindingProvider bindingProvider = (BindingProvider)Proxy.getInvocationHandler(echoPort); ServiceDelegate serviceDelegate = bindingProvider.getServiceDelegate(); assertNotNull(serviceDelegate); EndpointDescription endpointDesc = bindingProvider.getEndpointDescription(); assertNotNull(endpointDesc); AxisService axisService = endpointDesc.getAxisService(); assertNotNull(axisService); // The endpoint address should be null since there was no WSDL and it hasn't been set yet String endpointAddress = endpointDesc.getEndpointAddress(); assertNull(endpointAddress); } public void testForDispatchNoWSDL() { String namespaceURI = "http://ws.apache.org/axis2/tests"; String localPart = "EchoService"; Service service = Service.create(null, new QName(namespaceURI, localPart)); assertNotNull(service); QName validPortQName = new QName(namespaceURI, "EchoPort"); EchoPort echoPort = service.getPort(validPortQName, EchoPort.class); Dispatch<String> dispatch = service.createDispatch(validPortQName, String.class, null); assertNotNull(dispatch); BindingProvider bindingProvider = (BindingProvider) dispatch; ServiceDelegate serviceDelegate = bindingProvider.getServiceDelegate(); assertNotNull(serviceDelegate); EndpointDescription endpointDesc = bindingProvider.getEndpointDescription(); assertNotNull(endpointDesc); AxisService axisService = endpointDesc.getAxisService(); assertNotNull(axisService); } public void testForAddPortNoWSDL() { String namespaceURI = "http://ws.apache.org/axis2/tests"; String localPart = "EchoService"; Service service = Service.create(null, new QName(namespaceURI, localPart)); assertNotNull(service); QName validPortQName = new QName(namespaceURI, "EchoPortAdded"); service.addPort(validPortQName, null, null); Dispatch<String> dispatch = service.createDispatch(validPortQName, String.class, null); assertNotNull(dispatch); BindingProvider bindingProvider = (BindingProvider) dispatch; ServiceDelegate serviceDelegate = bindingProvider.getServiceDelegate(); assertNotNull(serviceDelegate); EndpointDescription endpointDesc = bindingProvider.getEndpointDescription(); assertNotNull(endpointDesc); AxisService axisService = endpointDesc.getAxisService(); assertNotNull(axisService); } }