| /* |
| * Copyright 2001-2004 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 test.wsdl.inheritance; |
| |
| import org.apache.axis.utils.XMLUtils; |
| import org.w3c.dom.Document; |
| import org.w3c.dom.Element; |
| import org.w3c.dom.Node; |
| import org.w3c.dom.NodeList; |
| |
| import javax.wsdl.Definition; |
| import javax.wsdl.Operation; |
| import javax.wsdl.PortType; |
| import javax.wsdl.factory.WSDLFactory; |
| import javax.wsdl.xml.WSDLReader; |
| import javax.xml.rpc.ServiceException; |
| import java.io.File; |
| import java.util.Iterator; |
| import java.util.List; |
| |
| /** |
| * This class contains the methods necessary for testing that the use inherited methods |
| * function in the Java2WSDL tool works as specified. |
| * |
| * When using the Java2WSDL tool with the use inherited methods switch on, the tool |
| * should generate the appropriate classes to include all of the inherited methods |
| * of the specified interface (in addition to the actual methods in the interface). |
| * |
| * @version 1.00 21 Jan 2002 |
| * @author Brent Ulbricht |
| */ |
| public class InheritanceTestCase extends junit.framework.TestCase { |
| |
| /** |
| * Constructor used in all tests utilizing the Junit Framework. |
| */ |
| public InheritanceTestCase(String name) { |
| super(name); |
| } // Constructor |
| |
| /** |
| * This method insures that two methods (getLastTradePrice and getRealtimeLastTradePrice) |
| * can be called, and they return the expected stock values. The main goal is to verify |
| * that the getLastTradePrice method does not cause any compile errors and returns the |
| * expected stock value. |
| * |
| * The getLastTradePrice method originates from the test/wsdl/inheritance/StockQuoteProvider |
| * interface. The InheritancePortType interface extends the StockQuoteProvider interface. |
| * |
| * When the WSDL is generated for the InheritancePortType interface and the use inherited |
| * methods switch is used, all methods from the StockQuoteProvider and InheritancePortType |
| * interfaces should be available for service. |
| */ |
| public void testInheritanceTest() { |
| test.wsdl.inheritance.InheritancePortType binding; |
| try { |
| binding = new InheritancePortTypeServiceLocator().getInheritanceTest(); |
| } catch (ServiceException jre) { |
| throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre); |
| } |
| assertTrue("binding is null", binding != null); |
| |
| // The getLastTradePrice method should return a value of 20.25 when sent the tickerSymbol |
| // "SOAP". |
| try { |
| float expected = 20.25F; |
| float actual = binding.getLastTradePrice(new java.lang.String("SOAP")); |
| float delta = 0.0F; |
| assertEquals("The actual and expected values did not match.", expected, actual, delta); |
| } catch (java.rmi.RemoteException re) { |
| throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re); |
| } |
| |
| // The getRealtimeLastTradePrice method should return a value of 21.75 when sent the |
| // tickerSymbol "AXIS". |
| try { |
| float expected = 21.75F; |
| float actual = binding.getRealtimeLastTradePrice(new java.lang.String("AXIS")); |
| float delta = 0.0F; |
| assertEquals("The actual and expected values did not match.", expected, actual, delta); |
| } catch (java.rmi.RemoteException re) { |
| throw new junit.framework.AssertionFailedError("Remote Exception caught: " + re); |
| } |
| |
| } // testInheritanceTest |
| |
| /** |
| * This test validates the WSDL generated by Java2WSDL |
| */ |
| public void testStopClasses() { |
| String path = "build" + File.separator + "work" + File.separator + |
| "test" + File.separator + "wsdl" + File.separator + |
| "inheritance" + File.separator + "StopExclude.wsdl"; |
| Document doc = null; |
| Definition def = null; |
| try { |
| doc = XMLUtils.newDocument(path); |
| assertNotNull("Unable to locate WSDL file: " + path, doc); |
| WSDLReader reader = WSDLFactory.newInstance().newWSDLReader(); |
| //reader.setFeature("javax.wsdl.verbose", true); |
| def = reader.readWSDL(path, doc); |
| assertNotNull("unable to generate WSDL definition from document: " + path, def); |
| } catch (Exception e) { |
| throw new junit.framework.AssertionFailedError("Exception caught: " + e); |
| } |
| |
| // Now check parts of the definition |
| |
| // types |
| // The complex types Baby_bean and Child_bean should exist |
| // The type Parent_bean should NOT exist |
| NodeList typeList = doc.getElementsByTagName("wsdl:types"); |
| Node typeNode = typeList.item(0); |
| assertNotNull("types section of the WSDL document", typeNode); |
| Element typeElem = (Element) typeNode; |
| |
| boolean babyFound = false; |
| boolean childFound = false; |
| NodeList nodeList = typeElem.getElementsByTagName("complexType"); |
| for (int i = 0; i < nodeList.getLength(); i++) { |
| Node n = nodeList.item(i); |
| String name = nodeList.item(i).getAttributes().getNamedItem("name").getNodeValue(); |
| if (name.equals("Baby_bean")) |
| babyFound = true; |
| else if (name.equals("Child_bean")) |
| childFound = true; |
| else if (name.equals("Parent_bean")) |
| assertTrue("Parent_bean found in WSDL types section", false); |
| else |
| assertTrue("Unknown node found in types section: " + name, false); |
| } |
| assertTrue("Baby_bean not found in WSDL types section", babyFound); |
| assertTrue("Child_bean not found in WSDL types section", childFound); |
| |
| // operations |
| // The only ones we shold find are baby_method and child_method |
| boolean babyOpFound = false; |
| boolean childOpFound = false; |
| |
| // we iterate the portTypes, but we check to make sure there is only one |
| Iterator ip = def.getPortTypes().values().iterator(); |
| PortType portType = (PortType) ip.next(); |
| List operationList = portType.getOperations(); |
| for (int i = 0; i < operationList.size(); ++i) { |
| String opName = ((Operation) operationList.get(i)).getName(); |
| if (opName.equals("baby_method")) |
| babyOpFound = true; |
| else if (opName.equals("child_method")) |
| childOpFound = true; |
| else if (opName.equals("parent_method")) |
| assertTrue("parent_method operation found in WSDL", false); |
| else |
| assertTrue("Invalid operation found in WSDL: " + opName, false); |
| } |
| assertTrue("WSDL has more than one portType", !ip.hasNext()); |
| assertTrue("baby_method operation not found in WSDL", babyOpFound); |
| assertTrue("child_method operation not found in WSDL ", childOpFound); |
| |
| } // testStopClasses |
| |
| } // InheritanceTestCase |
| |