Return-Path: Delivered-To: apmail-tuscany-commits-archive@www.apache.org Received: (qmail 60143 invoked from network); 3 Dec 2010 20:51:58 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 3 Dec 2010 20:51:58 -0000 Received: (qmail 85453 invoked by uid 500); 3 Dec 2010 20:51:58 -0000 Delivered-To: apmail-tuscany-commits-archive@tuscany.apache.org Received: (qmail 85432 invoked by uid 500); 3 Dec 2010 20:51:58 -0000 Mailing-List: contact commits-help@tuscany.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@tuscany.apache.org Delivered-To: mailing list commits@tuscany.apache.org Received: (qmail 85425 invoked by uid 99); 3 Dec 2010 20:51:58 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 03 Dec 2010 20:51:58 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 03 Dec 2010 20:51:52 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id F32EB23889B9; Fri, 3 Dec 2010 20:50:18 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1041987 - in /tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src: main/java/wsdlgen/verify/ main/java/wsdlgen/verify/impl/ main/resources/ test/java/wsdlgen/verify/ Date: Fri, 03 Dec 2010 20:50:18 -0000 To: commits@tuscany.apache.org From: nash@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101203205018.F32EB23889B9@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: nash Date: Fri Dec 3 20:50:18 2010 New Revision: 1041987 URL: http://svn.apache.org/viewvc?rev=1041987&view=rev Log: Refactor into framework and separate test cases, and add more tests Added: tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/BaseFramework.java Removed: tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/resources/dynamic-sdo.composite Modified: tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/resources/DataTypes.composite tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DynamicSDOTestCase.java Modified: tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java URL: http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java?rev=1041987&r1=1041986&r2=1041987&view=diff ============================================================================== --- tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java (original) +++ tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/DataTypes.java Fri Dec 3 20:50:18 2010 @@ -20,6 +20,8 @@ package wsdlgen.verify; import java.util.List; +import javax.jws.WebParam; +import javax.jws.soap.SOAPBinding; import commonj.sdo.DataObject; import org.osoa.sca.annotations.Remotable; @@ -30,8 +32,18 @@ public interface DataTypes { void testSimpleArrayInt(int[] simple); + void testSimpleMultiArrayInt(int[][] simple); + + void testList(List any); + void testSimpleListString(List simple); + List testReturnSimpleListString(); + + void testListByteArray(List byteArrayList); + + void testListWildcard(List wild); + void testComplex(ComplexNumber complex); void testByteArray(byte[] byteArray); @@ -39,4 +51,12 @@ public interface DataTypes { void testException() throws Exception; DataObject testDynamicSDO(); + +/* + @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE) + void testWebParam(@WebParam(name="simpleInt") int simple); + + @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE) + void testWebParamArray(@WebParam(name="arrayInt") int[] array); +*/ } Modified: tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java URL: http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java?rev=1041987&r1=1041986&r2=1041987&view=diff ============================================================================== --- tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java (original) +++ tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/java/wsdlgen/verify/impl/DataTypesImpl.java Fri Dec 3 20:50:18 2010 @@ -20,6 +20,8 @@ package wsdlgen.verify.impl; import java.util.List; +import javax.jws.WebParam; +import javax.jws.soap.SOAPBinding; import commonj.sdo.DataObject; import wsdlgen.verify.ComplexNumber; import wsdlgen.verify.DataTypes; @@ -32,9 +34,25 @@ public class DataTypesImpl implements Da public void testSimpleArrayInt(int[] simple) { } + public void testSimpleMultiArrayInt(int[][] simple) { + } + + public void testList(List any) { + } + public void testSimpleListString(List simple) { } + public List testReturnSimpleListString() { + return null; + } + + public void testListByteArray(List byteArrayList) { + } + + public void testListWildcard(List wild) { + } + public void testComplex(ComplexNumber complex) { } @@ -47,4 +65,10 @@ public class DataTypesImpl implements Da public DataObject testDynamicSDO() { return null; } + + public void testWebParam(int simple) { + } + + public void testWebParamArray(int[] array) { + } } Modified: tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/resources/DataTypes.composite URL: http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/resources/DataTypes.composite?rev=1041987&r1=1041986&r2=1041987&view=diff ============================================================================== --- tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/resources/DataTypes.composite (original) +++ tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/main/resources/DataTypes.composite Fri Dec 3 20:50:18 2010 @@ -28,4 +28,11 @@ + + + + + + + Added: tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/BaseFramework.java URL: http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/BaseFramework.java?rev=1041987&view=auto ============================================================================== --- tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/BaseFramework.java (added) +++ tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/BaseFramework.java Fri Dec 3 20:50:18 2010 @@ -0,0 +1,252 @@ +/* + * 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 wsdlgen.verify; + +import java.util.HashMap; +import java.util.Map; + +import javax.wsdl.Binding; +import javax.wsdl.Definition; +import javax.wsdl.Fault; +import javax.wsdl.Input; +import javax.wsdl.Message; +import javax.wsdl.Operation; +import javax.wsdl.Output; +import javax.wsdl.Part; +import javax.wsdl.Port; +import javax.wsdl.PortType; +import javax.wsdl.Service; +import javax.wsdl.Types; +import javax.wsdl.extensions.ExtensibilityElement; +import javax.wsdl.extensions.schema.Schema; +import javax.wsdl.factory.WSDLFactory; +import javax.wsdl.xml.WSDLReader; +import javax.xml.namespace.QName; +import javax.xml.transform.Result; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.apache.tuscany.sca.binding.ws.wsdlgen.WSDLServiceGenerator; +import static org.junit.Assert.assertNotNull; + +import org.w3c.dom.Attr; +import org.w3c.dom.Element; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import org.apache.tuscany.sca.host.embedded.SCADomain; + +/** + * Test ?wsdl works and that the returned WSDL is correct + * + * @version $Rev: 814373 $ $Date: 2009-09-13 19:06:29 +0100 (Sun, 13 Sep 2009) $ + */ +public class BaseFramework { + private static final String SCHEMA_NS = "http://www.w3.org/2001/XMLSchema"; + private static final String SCHEMA_NAME = "schema"; + private static final QName SCHEMA_QNAME = new QName(SCHEMA_NS, SCHEMA_NAME); + + private static SCADomain domain; + private static Map schemaMap; + private static PortType portType; + + private Map prefixMap; + + public BaseFramework() { + // create a new instance of this for each of the tests + prefixMap = new HashMap(); + } + + protected Element parameterElement(String methodName) { + Operation op = portType.getOperation(methodName, null, null); + Input in = op.getInput(); + Message msg = in.getMessage(); + Part part = msg.getPart(msg.getQName().getLocalPart()); + if (part == null) { + // bare parameter style + part = msg.getPart("arg0"); + return bareElement(part.getElementName()); + } else { + return schemaElement(part.getElementName()); + } + } + + protected String parameterType(String methodName) { + return parameterElement(methodName).getAttribute("type"); + } + + protected Element returnElement(String methodName) { + Operation op = portType.getOperation(methodName, null, null); + Output out = op.getOutput(); + Message msg = out.getMessage(); + Part part = msg.getPart(msg.getQName().getLocalPart()); + QName elementQName = part.getElementName(); + return schemaElement(elementQName); + } + + protected String returnType(String methodName) { + return returnElement(methodName).getAttribute("type"); + } + + protected Element faultElement(String methodName, String faultName) { + Operation op = portType.getOperation(methodName, null, null); + Fault fault = op.getFault(faultName); + Message msg = fault.getMessage(); + Part part = msg.getPart(msg.getQName().getLocalPart()); + QName elementQName = part.getElementName(); + return schemaElement(elementQName); + } + + protected String faultType(String methodName, String faultName) { + return faultElement(methodName, faultName).getAttribute("type"); + } + + private Element bareElement(QName elementQName) { + // find schema definition for wrapper element + Element schema = schemaMap.get(elementQName.getNamespaceURI()); + + // find namespace prefixes for this schema definition + NamedNodeMap attrNodes = schema.getAttributes(); + for (int i = 0; i < attrNodes.getLength(); i++) { + Attr attr = (Attr)attrNodes.item(i); + String attrName = attr.getName(); + if (attrName.startsWith("xmlns:")) { + prefixMap.put(attrName.substring(6), attr.getValue()); + } + } + + // find wrapper element definition in schema + String elementName = elementQName.getLocalPart(); + Element wrapper = null; + NodeList childNodes = schema.getElementsByTagNameNS(SCHEMA_NS, "element"); + for (int i = 0; i < childNodes.getLength(); i++) { + Node childNode = childNodes.item(i); + if (childNode instanceof Element) { + String name = ((Element)childNode).getAttribute("name"); + if (elementName.equals(name)) { + wrapper = (Element)childNode; + break; + } + } + } + return wrapper; + } + + private Element schemaElement(QName elementQName) { + Element wrapper = bareElement(elementQName); + + // find type definition for wrapper element + String typeName = wrapper.getAttribute("type"); + Element wrapperType = null; + if ("".equals(typeName)) { + NodeList childNodes = wrapper.getElementsByTagNameNS(SCHEMA_NS, "complexType"); + wrapperType = (Element)childNodes.item(0); + } else { + wrapperType = typeDefinition(typeName); + } + + return firstChild(wrapperType); + } + + protected Element typeDefinition(String typeName) { + String typePrefix = typeName.substring(0, typeName.indexOf(":")); + String typeLocalName = typeName.substring(typeName.indexOf(":") + 1); + Element typeSchema = schemaMap.get(prefixMap.get(typePrefix)); + Element typeElement = null; + NodeList childNodes = typeSchema.getElementsByTagNameNS(SCHEMA_NS, "complexType"); + for (int i = 0; i < childNodes.getLength(); i++) { + Node childNode = childNodes.item(i); + if (childNode instanceof Element) { + String name = ((Element)childNode).getAttribute("name"); + if (typeLocalName.equals(name)) { + typeElement = (Element)childNode; + break; + } + } + } + return typeElement; + } + + protected Element firstChild(Element complexType) { + // find xs:sequence child element + NodeList childNodes = complexType.getElementsByTagNameNS(SCHEMA_NS, "sequence"); + Element sequence = (Element)childNodes.item(0); + + // find first xs:element child element + childNodes = sequence.getElementsByTagNameNS(SCHEMA_NS, "element"); + return (Element)childNodes.item(0); + } + + private static void readWSDL(String serviceName) throws Exception { + WSDLReader wsdlReader = WSDLFactory.newInstance().newWSDLReader(); + wsdlReader.setFeature("javax.wsdl.verbose",false); + wsdlReader.setFeature("javax.wsdl.importDocuments",true); + + Definition definition = wsdlReader.readWSDL("http://localhost:8085/" + serviceName + "?wsdl"); + assertNotNull(definition); + + // find portType + Service service = definition.getService(new QName("http://verify.wsdlgen/", serviceName + "Service")); + Port port = service.getPort(serviceName + "Port"); + Binding binding = port.getBinding(); + portType = binding.getPortType(); + + // find schema definitions + Types types = definition.getTypes(); + schemaMap = new HashMap(); + for (Object ext : types.getExtensibilityElements()) { + ExtensibilityElement extElement = (ExtensibilityElement)ext; + if (SCHEMA_QNAME.equals(extElement.getElementType())) { + if (extElement instanceof Schema) { + Element schemaElement = ((Schema)extElement).getElement(); + schemaMap.put(schemaElement.getAttribute("targetNamespace"), schemaElement); + } + } + } + } + + /* + * Used for debugging DOM problems + */ + private void printDOM(Node node){ + try { + Transformer transformer = TransformerFactory.newInstance().newTransformer(); + Source source = new DOMSource(node); + Result result = new StreamResult(System.out); + transformer.transform(source, result); + } catch (Exception ex){ + ex.printStackTrace(); + } + } + + protected static void start(String serviceName) throws Exception { + WSDLServiceGenerator.printWSDL = true; + domain = SCADomain.newInstance("DataTypes.composite"); + readWSDL(serviceName); + } + + protected static void stop() throws Exception { + domain.close(); + } +} Modified: tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java URL: http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java?rev=1041987&r1=1041986&r2=1041987&view=diff ============================================================================== --- tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java (original) +++ tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DataTypesTestCase.java Fri Dec 3 20:50:18 2010 @@ -19,72 +19,19 @@ package wsdlgen.verify; -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; - -import javax.wsdl.Binding; -import javax.wsdl.Definition; -import javax.wsdl.Fault; -import javax.wsdl.Input; -import javax.wsdl.Message; -import javax.wsdl.Operation; -import javax.wsdl.Output; -import javax.wsdl.Part; -import javax.wsdl.Port; -import javax.wsdl.PortType; -import javax.wsdl.Service; -import javax.wsdl.Types; -import javax.wsdl.extensions.ExtensibilityElement; -import javax.wsdl.extensions.schema.Schema; -import javax.wsdl.factory.WSDLFactory; -import javax.wsdl.xml.WSDLReader; -import javax.xml.namespace.QName; -import javax.xml.transform.Result; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import org.w3c.dom.Attr; import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import org.apache.tuscany.sca.host.embedded.SCADomain; +import static org.junit.Assert.assertEquals; /** * Test ?wsdl works and that the returned WSDL is correct * * @version $Rev: 814373 $ $Date: 2009-09-13 19:06:29 +0100 (Sun, 13 Sep 2009) $ */ -public class DataTypesTestCase { - private static final String SCHEMA_NS = "http://www.w3.org/2001/XMLSchema"; - private static final String SCHEMA_NAME = "schema"; - private static final QName SCHEMA_QNAME = new QName(SCHEMA_NS, SCHEMA_NAME); - - private static SCADomain domain; - private static Map schemaMap; - private static PortType portType; - - private Map prefixMap; - - public DataTypesTestCase() { - // create a new instance of this for each of the tests - prefixMap = new HashMap(); - } +public class DataTypesTestCase extends BaseFramework { @Test public void testSimpleInt() throws Exception { @@ -98,8 +45,23 @@ public class DataTypesTestCase { assertEquals("unbounded", paramElement.getAttribute("maxOccurs")); } +/* + @Test + public void testSimpleMultiArrayInt() throws Exception { + Element paramElement = parameterElement("testSimpleMultiArrayInt"); + assertEquals("ns1:intArray", paramElement.getAttribute("type")); + assertEquals("unbounded", paramElement.getAttribute("maxOccurs")); + } +*/ + + @Test + public void testList() throws Exception { + Element paramElement = parameterElement("testList"); + assertEquals("xs:anyType", paramElement.getAttribute("type")); + assertEquals("unbounded", paramElement.getAttribute("maxOccurs")); + } + @Test - @Ignore("TUSCANY-3799") public void testSimpleListString() throws Exception { Element paramElement = parameterElement("testSimpleListString"); assertEquals("xs:string", paramElement.getAttribute("type")); @@ -107,6 +69,27 @@ public class DataTypesTestCase { } @Test + public void testReturnSimpleListString() throws Exception { + Element retElement = returnElement("testReturnSimpleListString"); + assertEquals("xs:string", retElement.getAttribute("type")); + assertEquals("unbounded", retElement.getAttribute("maxOccurs")); + } + + @Test + public void testListByteArray() throws Exception { + Element paramElement = parameterElement("testListByteArray"); + assertEquals("xs:base64Binary", paramElement.getAttribute("type")); + assertEquals("unbounded", paramElement.getAttribute("maxOccurs")); + } + + @Test + public void testListWildcard() throws Exception { + Element paramElement = parameterElement("testListWildcard"); + assertEquals("xs:anyType", paramElement.getAttribute("type")); + assertEquals("unbounded", paramElement.getAttribute("maxOccurs")); + } + + @Test public void testComplex() throws Exception { String paramType = parameterType("testComplex"); assertEquals("tns:complexNumber", paramType); @@ -128,176 +111,32 @@ public class DataTypesTestCase { assertEquals("xs:anyType", returnType("testDynamicSDO")); } - private Element parameterElement(String methodName) { - Operation op = portType.getOperation(methodName, null, null); - Input in = op.getInput(); - Message msg = in.getMessage(); - Part part = msg.getPart(msg.getQName().getLocalPart()); - QName elementQName = part.getElementName(); - return schemaElement(elementQName); - } - - private String parameterType(String methodName) { - return parameterElement(methodName).getAttribute("type"); - } - - private Element returnElement(String methodName) { - Operation op = portType.getOperation(methodName, null, null); - Output out = op.getOutput(); - Message msg = out.getMessage(); - Part part = msg.getPart(msg.getQName().getLocalPart()); - QName elementQName = part.getElementName(); - return schemaElement(elementQName); - } - - private String returnType(String methodName) { - return returnElement(methodName).getAttribute("type"); - } - - private Element faultElement(String methodName, String faultName) { - Operation op = portType.getOperation(methodName, null, null); - Fault fault = op.getFault(faultName); - Message msg = fault.getMessage(); - Part part = msg.getPart(msg.getQName().getLocalPart()); - QName elementQName = part.getElementName(); - return schemaElement(elementQName); - } - - private String faultType(String methodName, String faultName) { - return faultElement(methodName, faultName).getAttribute("type"); - } - - private Element schemaElement(QName elementQName) { - // find schema definition for wrapper element - Element schema = schemaMap.get(elementQName.getNamespaceURI()); - - // find namespace prefixes for this schema definition - NamedNodeMap attrNodes = schema.getAttributes(); - for (int i = 0; i < attrNodes.getLength(); i++) { - Attr attr = (Attr)attrNodes.item(i); - String attrName = attr.getName(); - if (attrName.startsWith("xmlns:")) { - prefixMap.put(attrName.substring(6), attr.getValue()); - } - } - - // find wrapper element definition in schema - String elementName = elementQName.getLocalPart(); - Element wrapper = null; - NodeList childNodes = schema.getElementsByTagNameNS(SCHEMA_NS, "element"); - for (int i = 0; i < childNodes.getLength(); i++) { - Node childNode = childNodes.item(i); - if (childNode instanceof Element) { - String name = ((Element)childNode).getAttribute("name"); - if (elementName.equals(name)) { - wrapper = (Element)childNode; - break; - } - } - } - - // find type definition for wrapper element - String typeName = wrapper.getAttribute("type"); - Element wrapperType = null; - if ("".equals(typeName)) { - childNodes = wrapper.getElementsByTagNameNS(SCHEMA_NS, "complexType"); - wrapperType = (Element)childNodes.item(0); - } else { - wrapperType = typeDefinition(typeName); - } - - return firstChild(wrapperType); - } - - private Element typeDefinition(String typeName) { - String typePrefix = typeName.substring(0, typeName.indexOf(":")); - String typeLocalName = typeName.substring(typeName.indexOf(":") + 1); - Element typeSchema = schemaMap.get(prefixMap.get(typePrefix)); - Element typeElement = null; - NodeList childNodes = typeSchema.getElementsByTagNameNS(SCHEMA_NS, "complexType"); - for (int i = 0; i < childNodes.getLength(); i++) { - Node childNode = childNodes.item(i); - if (childNode instanceof Element) { - String name = ((Element)childNode).getAttribute("name"); - if (typeLocalName.equals(name)) { - typeElement = (Element)childNode; - break; - } - } - } - return typeElement; - } - - private Element firstChild(Element complexType) { - // find xs:sequence child element - NodeList childNodes = complexType.getElementsByTagNameNS(SCHEMA_NS, "sequence"); - Element sequence = (Element)childNodes.item(0); - - // find first xs:element child element - childNodes = sequence.getElementsByTagNameNS(SCHEMA_NS, "element"); - return (Element)childNodes.item(0); - } - - private static void readWSDL() throws Exception { - if (portType == null) { - InputStream inp = new URL("http://localhost:8085/DataTypes?wsdl").openStream(); - BufferedReader br = new BufferedReader(new InputStreamReader(inp)); - String line; - while((line = br.readLine()) != null) { - System.out.println(line); - } - br.close(); - - WSDLReader wsdlReader = WSDLFactory.newInstance().newWSDLReader(); - wsdlReader.setFeature("javax.wsdl.verbose",false); - wsdlReader.setFeature("javax.wsdl.importDocuments",true); - - Definition definition = wsdlReader.readWSDL("http://localhost:8085/DataTypes?wsdl"); - assertNotNull(definition); - - // find portType - Service service = definition.getService(new QName("http://verify.wsdlgen/", "DataTypesService")); - Port port = service.getPort("DataTypesPort"); - Binding binding = port.getBinding(); - portType = binding.getPortType(); - - // find schema definitions - Types types = definition.getTypes(); - schemaMap = new HashMap(); - for (Object ext : types.getExtensibilityElements()) { - ExtensibilityElement extElement = (ExtensibilityElement)ext; - if (SCHEMA_QNAME.equals(extElement.getElementType())) { - if (extElement instanceof Schema) { - Element schemaElement = ((Schema)extElement).getElement(); - schemaMap.put(schemaElement.getAttribute("targetNamespace"), schemaElement); - } - } - } - } - } - - /* - * Used for debugging DOM problems - */ - private void printDOM(Node node){ - try { - Transformer transformer = TransformerFactory.newInstance().newTransformer(); - Source source = new DOMSource(node); - Result result = new StreamResult(System.out); - transformer.transform(source, result); - } catch (Exception ex){ - ex.printStackTrace(); - } +/* + @Test + public void testWebParam() throws Exception { + Element paramElement = parameterElement("testWebParam"); + assertEquals("simpleInt", paramElement.getAttribute("name")); + assertEquals("xs:int", paramElement.getAttribute("type")); + } + + @Test + @Ignore + public void testWebParamArray() throws Exception { + Element paramElement = parameterElement("testWebParamArray"); + assertEquals("arrayInt", paramElement.getAttribute("name")); + assertEquals("xs:int", paramElement.getAttribute("type")); + assertEquals("unbounded", paramElement.getAttribute("maxOccurs")); } +*/ + @BeforeClass public static void setUpBeforeClass() throws Exception { - domain = SCADomain.newInstance("DataTypes.composite"); - readWSDL(); + BaseFramework.start("DataTypes"); } @AfterClass public static void tearDownAfterClass() throws Exception { - domain.close(); + BaseFramework.stop(); } } Modified: tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DynamicSDOTestCase.java URL: http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DynamicSDOTestCase.java?rev=1041987&r1=1041986&r2=1041987&view=diff ============================================================================== --- tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DynamicSDOTestCase.java (original) +++ tuscany/sca-java-1.x/trunk/itest/wsdlgen-verify/src/test/java/wsdlgen/verify/DynamicSDOTestCase.java Fri Dec 3 20:50:18 2010 @@ -19,154 +19,63 @@ package wsdlgen.verify; -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; - -import javax.wsdl.Binding; -import javax.wsdl.Definition; -import javax.wsdl.Message; -import javax.wsdl.Part; -import javax.wsdl.Operation; -import javax.wsdl.Output; -import javax.wsdl.Port; -import javax.wsdl.PortType; -import javax.wsdl.Service; -import javax.wsdl.Types; -import javax.wsdl.extensions.ExtensibilityElement; -import javax.wsdl.extensions.schema.Schema; -import javax.wsdl.factory.WSDLFactory; -import javax.wsdl.xml.WSDLReader; -import javax.xml.namespace.QName; -import javax.xml.transform.Result; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import junit.framework.TestCase; - +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import org.apache.tuscany.sca.host.embedded.SCADomain; +import static org.junit.Assert.assertEquals; /** - * Test ?wsdl works and that the returned WSDL has the correct endpoint + * Test ?wsdl works and that the returned WSDL is correct * * @version $Rev: 814373 $ $Date: 2009-09-13 19:06:29 +0100 (Sun, 13 Sep 2009) $ */ -public class DynamicSDOTestCase extends TestCase { - private static final String SCHEMA_NS = "http://www.w3.org/2001/XMLSchema"; - private static final String SCHEMA_NAME = "schema"; - private static final QName SCHEMA_QNAME = new QName(SCHEMA_NS, SCHEMA_NAME); - - private SCADomain domain; - - /** - * Tests ?wsdl works and produces xs:anyType for commonj.sdo.DataObject - */ - public void testDynamicSDO() throws Exception { - InputStream inp = new URL("http://localhost:8085/DataService?wsdl").openStream(); - BufferedReader br = new BufferedReader(new InputStreamReader(inp)); - String line; - while((line = br.readLine()) != null) { - System.out.println(line); - } - br.close(); - - WSDLReader wsdlReader = WSDLFactory.newInstance().newWSDLReader(); - wsdlReader.setFeature("javax.wsdl.verbose",false); - wsdlReader.setFeature("javax.wsdl.importDocuments",true); - - Definition definition = wsdlReader.readWSDL("http://localhost:8085/DataService?wsdl"); - assertNotNull(definition); - Service service = definition.getService(new QName("http://verify.wsdlgen/", - "GetDataServiceWithoutExceptionService")); - Port port = service.getPort("GetDataServiceWithoutExceptionPort"); - Binding binding = port.getBinding(); - PortType portType = binding.getPortType(); - - // find wrapper element for getMessageSDO return type - Operation op = portType.getOperation("getMessageSDO", null, null); - Output out = op.getOutput(); - Message msg = out.getMessage(); - Part part = msg.getPart(msg.getQName().getLocalPart()); - QName elementQName = part.getElementName(); - - // find schema definition for wrapper element - Types types = definition.getTypes(); - String elementNS = elementQName.getNamespaceURI(); - Element schema = null; - for (Object ext : types.getExtensibilityElements()) { - ExtensibilityElement extElement = (ExtensibilityElement)ext; - if (SCHEMA_QNAME.equals(extElement.getElementType())) { - if (extElement instanceof Schema) { - Element schemaElement = ((Schema)extElement).getElement(); - if (elementNS.equals(schemaElement.getAttribute("targetNamespace"))) { - schema = schemaElement; - break; - } - } - } - } - - // find wrapper element definition in schema - String elementName = elementQName.getLocalPart(); - Element wrapper = null; - NodeList childNodes = schema.getElementsByTagNameNS(SCHEMA_NS, "element"); - for (int i = 0; i < childNodes.getLength(); i++) { - Node childNode = childNodes.item(i); - if (childNode instanceof Element) { - String name = ((Element)childNode).getAttribute("name"); - if (elementName.equals(name)) { - wrapper = (Element)childNode; - break; - } - } - } - - // find xs:complexType child element - childNodes = wrapper.getElementsByTagNameNS(SCHEMA_NS, "complexType"); - Element complexType = (Element)childNodes.item(0); - - // find xs:sequence child element - childNodes = complexType.getElementsByTagNameNS(SCHEMA_NS, "sequence"); - Element sequence = (Element)childNodes.item(0); - - // find xs:element child element - childNodes = sequence.getElementsByTagNameNS(SCHEMA_NS, "element"); - Element returnValue = (Element)childNodes.item(0); - - // verify that return type is xs:anyType - assertEquals("xs:anyType", returnValue.getAttribute("type")); - } - - /* - * Used for debugging DOM problems - */ - private void printDOM(Node node){ - try { - Transformer transformer = TransformerFactory.newInstance().newTransformer(); - Source source = new DOMSource(node); - Result result = new StreamResult(System.out); - transformer.transform(source, result); - } catch (Exception ex){ - ex.printStackTrace(); - } - } - - @Override - protected void setUp() throws Exception { - domain = SCADomain.newInstance("dynamic-sdo.composite"); - } - - @Override - protected void tearDown() throws Exception { - domain.close(); +public class DynamicSDOTestCase extends BaseFramework { + + @Test + public void testGetMessage() throws Exception { + assertEquals("xs:base64Binary", returnType("getMessage")); } + @Test + public void testGetMessageList() throws Exception { + Element retElement = returnElement("getMessageList"); + assertEquals("xs:base64Binary", retElement.getAttribute("type")); + assertEquals("unbounded", retElement.getAttribute("maxOccurs")); + } + + @Test + public void testGetMessageSDO() throws Exception { + assertEquals("xs:anyType", returnType("getMessageSDO")); + } + + @Test + public void testGetMessageListSDOList() throws Exception { + Element retElement = returnElement("getMessageListSDOList"); + assertEquals("xs:anyType", retElement.getAttribute("type")); + assertEquals("unbounded", retElement.getAttribute("maxOccurs")); + } + + @Test + public void testGetMessageListSDOArr() throws Exception { + Element retElement = returnElement("getMessageListSDOArr"); + assertEquals("xs:anyType", retElement.getAttribute("type")); + assertEquals("unbounded", retElement.getAttribute("maxOccurs")); + } + + @Test + public void testGetMessageListSDOinSDO() throws Exception { + assertEquals("xs:anyType", returnType("getMessageListSDOinSDO")); + } + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + BaseFramework.start("GetDataServiceWithoutException"); + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + BaseFramework.stop(); + } }