diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-11 23:07:28 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-11 23:07:28 +0000 |
commit | 07b7dfd1a70ba222b899d9813f8c449dbf3b785f (patch) | |
tree | ecfc876747e6cfedee0a8533d87c19ac78a2dbd0 /branches/sca-java-1.1/modules/interface-wsdl-java2wsdl | |
parent | 6fadbc9cd1fcf03d0b3630f772d91df149b70428 (diff) |
Moving 1.x branches
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835124 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.1/modules/interface-wsdl-java2wsdl')
6 files changed, 0 insertions, 854 deletions
diff --git a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/DISCLAIMER b/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/DISCLAIMER deleted file mode 100644 index d68a410903..0000000000 --- a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/DISCLAIMER +++ /dev/null @@ -1,8 +0,0 @@ -Apache Tuscany is an effort undergoing incubation at The Apache Software
-Foundation (ASF), sponsored by the Apache Web Services PMC. Incubation is
-required of all newly accepted projects until a further review indicates that
-the infrastructure, communications, and decision making process have stabilized
-in a manner consistent with other successful ASF projects. While incubation
-status is not necessarily a reflection of the completeness or stability of the
-code, it does indicate that the project has yet to be fully endorsed by the ASF.
-
diff --git a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/LICENSE b/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/LICENSE deleted file mode 100644 index 8aa906c321..0000000000 --- a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - - - diff --git a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/NOTICE b/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/NOTICE deleted file mode 100644 index fdfa0e9faa..0000000000 --- a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name} -Copyright (c) 2005 - 2008 The Apache Software Foundation - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - diff --git a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/pom.xml b/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/pom.xml deleted file mode 100644 index 9504a60d7f..0000000000 --- a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/pom.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * 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. ---> -<project> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-modules</artifactId> - <version>1.1-incubating-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - <artifactId>tuscany-interface-wsdl-java2wsdl</artifactId> - <name>Apache Tuscany SCA WSDL Interface Java2WSDL Helper</name> - - <dependencies> - - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-interface-wsdl</artifactId> - <version>1.1-incubating-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-interface-wsdl-xml</artifactId> - <version>1.1-incubating-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-interface-java</artifactId> - <version>1.1-incubating-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.axis2</groupId> - <artifactId>axis2-java2wsdl</artifactId> - <version>1.3</version> - </dependency> - <dependency> - <groupId>org.apache.axis2</groupId> - <artifactId>axis2-adb</artifactId> - <version>1.3</version> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.2</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - <version>1.3</version> - <exclusions> - <exclusion> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </exclusion> - </exclusions> - </dependency> - - </dependencies> - -</project> diff --git a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelper.java b/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelper.java deleted file mode 100644 index 170bdf9aed..0000000000 --- a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelper.java +++ /dev/null @@ -1,481 +0,0 @@ -/* - * 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.tuscany.sca.interfacedef.wsdl.java2wsdl; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Method; -import java.net.URI; -import java.net.URL; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.wsdl.Binding; -import javax.wsdl.BindingOperation; -import javax.wsdl.BindingOutput; -import javax.wsdl.Definition; -import javax.wsdl.Input; -import javax.wsdl.Message; -import javax.wsdl.OperationType; -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.WSDLException; -import javax.wsdl.extensions.ExtensibilityElement; -import javax.wsdl.extensions.UnknownExtensibilityElement; -import javax.wsdl.extensions.schema.Schema; -import javax.wsdl.xml.WSDLLocator; -import javax.wsdl.xml.WSDLReader; -import javax.xml.XMLConstants; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.interfacedef.DataType; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract; -import org.apache.tuscany.sca.interfacedef.util.XMLType; -import org.apache.tuscany.sca.interfacedef.wsdl.DefaultWSDLFactory; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract; -import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.impl.InvalidWSDLException; -import org.apache.tuscany.sca.interfacedef.wsdl.impl.WSDLOperationIntrospectorImpl; -import org.apache.tuscany.sca.interfacedef.wsdl.xml.WSDLModelResolver; -import org.apache.tuscany.sca.interfacedef.wsdl.xml.XMLDocumentHelper; -import org.apache.ws.commons.schema.XmlSchema; -import org.apache.ws.commons.schema.XmlSchemaCollection; -import org.apache.ws.java2wsdl.Java2WSDLBuilder; -import org.osoa.sca.annotations.OneWay; -import org.w3c.dom.Attr; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.xml.sax.InputSource; - -/** - * Utility methods to create WSDL objects from Java interfaces - */ -public class Java2WSDLHelper { - - private static void register(Map<String, String> map, DataType type) { - if (type == null) { - return; - } - Package pkg = type.getPhysical().getPackage(); - if (pkg != null) { - String pkgName = pkg.getName(); - Object logical = type.getLogical(); - if (logical instanceof XMLType) { - QName typeName = ((XMLType)logical).getTypeName(); - if (typeName != null && !XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(typeName.getNamespaceURI())) { - map.put(pkgName, typeName.getNamespaceURI()); - } - } - } - } - - /** - * Create a WSDLInterfaceContract from a JavaInterfaceContract - */ - public static WSDLInterfaceContract createWSDLInterfaceContract(JavaInterfaceContract contract) { - return createWSDLInterfaceContract(contract, false); - } - - /** - * Create a WSDLInterfaceContract from a JavaInterfaceContract - */ - public static WSDLInterfaceContract createWSDLInterfaceContract(JavaInterfaceContract contract, - boolean requiresSOAP12) { - JavaInterface iface = (JavaInterface)contract.getInterface(); - - // Create a package2ns map - Map<String, String> pkg2nsMap = new HashMap<String, String>(); - for (Operation op : iface.getOperations()) { - DataType<List<DataType>> inputType = op.getInputType(); - for (DataType t : inputType.getLogical()) { - register(pkg2nsMap, t); - } - DataType outputType = op.getOutputType(); - register(pkg2nsMap, outputType); - } - - Definition def = createDefinition(pkg2nsMap, iface.getJavaClass(), requiresSOAP12); - - DefaultWSDLFactory wsdlFactory = new DefaultWSDLFactory(); - - WSDLInterfaceContract wsdlContract = wsdlFactory.createWSDLInterfaceContract(); - WSDLInterface wsdlInterface = wsdlFactory.createWSDLInterface(); - - wsdlContract.setInterface(wsdlInterface); - WSDLDefinition wsdlDefinition = new DefaultWSDLFactory().createWSDLDefinition(); - wsdlDefinition.setDefinition(def); - wsdlInterface.setWsdlDefinition(wsdlDefinition); - wsdlInterface.setRemotable(true); - wsdlInterface.setConversational(contract.getInterface().isConversational()); - wsdlInterface.setUnresolved(false); - wsdlInterface.setRemotable(true); - PortType portType = (PortType)def.getAllPortTypes().values().iterator().next(); - wsdlInterface.setPortType(portType); - - readInlineSchemas(wsdlFactory, wsdlDefinition, def, new XmlSchemaCollection()); - - try { - for (Operation op : iface.getOperations()) { - javax.wsdl.Operation wsdlOp = portType.getOperation(op.getName(), null, null); - WSDLOperationIntrospectorImpl opx = - new WSDLOperationIntrospectorImpl(wsdlFactory, wsdlOp, wsdlDefinition, null, null); - - wsdlInterface.getOperations().add(opx.getOperation()); - - /* - Operation clonedOp = (Operation)op.clone(); - clonedOp.setDataBinding(null); - - if (clonedOp.getInputType().getLogical().isEmpty()) { - // null args case needs a single input type for the wrapper - clonedOp.setInputType(opx.getInputType()); - } - for (DataType<?> dt : clonedOp.getInputType().getLogical()) { - dt.setDataBinding(null); - } - - if (clonedOp.getOutputType() != null) { - clonedOp.getOutputType().setDataBinding(null); - } - for (DataType<?> dt : clonedOp.getFaultTypes()) { - dt.setDataBinding(null); - } - clonedOp.setWrapperStyle(true); - clonedOp.setWrapper(opx.getWrapper().getWrapperInfo()); - - wsdlInterface.getOperations().add(clonedOp); - */ - } - } catch (InvalidWSDLException e) { - throw new RuntimeException(e); - } - - return wsdlContract; - } - - private static Document promote(Element element) { - Document doc = (Document)element.getOwnerDocument().cloneNode(false); - Element schema = (Element)doc.importNode(element, true); - doc.appendChild(schema); - Node parent = element.getParentNode(); - while (parent instanceof Element) { - Element root = (Element)parent; - NamedNodeMap nodeMap = root.getAttributes(); - for (int i = 0; i < nodeMap.getLength(); i++) { - Attr attr = (Attr)nodeMap.item(i); - String name = attr.getName(); - if ("xmlns".equals(name) || name.startsWith("xmlns:")) { - if (schema.getAttributeNode(name) == null) { - schema.setAttributeNodeNS((Attr)doc.importNode(attr, true)); - } - } - } - parent = parent.getParentNode(); - } - doc.setDocumentURI(element.getOwnerDocument().getDocumentURI()); - return doc; - } - - /** - * Populate the inline schemas including those from the imported definitions - * - * @param definition - * @param schemaCollection - */ - private static void readInlineSchemas(WSDLFactory wsdlFactory, - WSDLDefinition wsdlDefinition, - Definition definition, - XmlSchemaCollection schemaCollection) { - Types types = definition.getTypes(); - if (types != null) { - int index = 0; - for (Object ext : types.getExtensibilityElements()) { - ExtensibilityElement extElement = (ExtensibilityElement)ext; - Element element = null; - if (WSDLModelResolver.XSD_QNAME_LIST.contains(extElement.getElementType())) { - if (extElement instanceof Schema) { - element = ((Schema)extElement).getElement(); - } else if (extElement instanceof UnknownExtensibilityElement) { - element = ((UnknownExtensibilityElement)extElement).getElement(); - } - } - if (element != null) { - Document doc = promote(element); - XSDefinition xsDefinition = wsdlFactory.createXSDefinition(); - xsDefinition.setUnresolved(true); - xsDefinition.setNamespace(element.getAttribute("targetNamespace")); - xsDefinition.setDocument(doc); - xsDefinition.setLocation(URI.create(doc.getDocumentURI() + "#" + index)); - loadXSD(schemaCollection, xsDefinition); - wsdlDefinition.getXmlSchemas().add(xsDefinition); - index++; - } - } - } - for (Object imports : definition.getImports().values()) { - List impList = (List)imports; - for (Object i : impList) { - javax.wsdl.Import anImport = (javax.wsdl.Import)i; - // Read inline schemas - if (anImport.getDefinition() != null) { - readInlineSchemas(wsdlFactory, wsdlDefinition, anImport.getDefinition(), schemaCollection); - } - } - } - } - - private static void loadXSD(XmlSchemaCollection schemaCollection, XSDefinition definition) { - if (definition.getSchema() != null) { - return; - } - if (definition.getDocument() != null) { - String uri = null; - if (definition.getLocation() != null) { - uri = definition.getLocation().toString(); - } - XmlSchema schema = schemaCollection.read(definition.getDocument(), uri, null); - definition.setSchemaCollection(schemaCollection); - definition.setSchema(schema); - } - } - - /** - * Create a WSDL4J Definition object from a Java interface - */ - protected static Definition createDefinition(Map map, Class<?> javaInterface, boolean requiresSOAP12) { - - String className = javaInterface.getName(); - ClassLoader cl = javaInterface.getClassLoader(); - ByteArrayOutputStream os = new ByteArrayOutputStream(); - Java2WSDLBuilder builder = new Java2WSDLBuilder(os, className, cl); - if (map != null) { - builder.setPkg2nsMap(map); - } - - try { - builder.generateWSDL(); - } catch (Exception e) { - throw new RuntimeException(e); - } - - try { - - WSDLReader reader = javax.wsdl.factory.WSDLFactory.newInstance().newWSDLReader(); - reader.setFeature("javax.wsdl.verbose", false); - reader.setFeature("javax.wsdl.importDocuments", true); - - WSDLLocatorImpl locator = new WSDLLocatorImpl(new ByteArrayInputStream(os.toByteArray())); - Definition definition = reader.readWSDL(locator); - - processSOAPVersion(definition, requiresSOAP12); - processNoArgAndVoidReturnMethods(definition, javaInterface); - - return definition; - - } catch (WSDLException e) { - throw new RuntimeException(e); - } - } - - private static void processSOAPVersion(Definition definition, boolean requiresSOAP12) { - if (requiresSOAP12) { - removePort(definition, "SOAP11port_http"); - } else { - removePort(definition, "SOAP12port_http"); - } - } - - private static void removePort(Definition definition, String portNameSuffix) { - Service service = (Service)definition.getServices().values().iterator().next(); - Map<?, ?> ports = service.getPorts(); - for (Object o : ports.keySet()) { - if (((String)o).endsWith(portNameSuffix)) { - Port p = (Port)ports.remove(o); - definition.removeBinding(p.getBinding().getQName()); - break; - } - } - } - - private static void processNoArgAndVoidReturnMethods(Definition definition, Class javaInterface) { - String namespaceURI = definition.getTargetNamespace(); - String prefix = definition.getPrefix(namespaceURI); - String xsPrefix = definition.getPrefix("http://www.w3.org/2001/XMLSchema"); - PortType portType = (PortType)definition.getAllPortTypes().values().iterator().next(); - - Element schema = null; - Document document = null; - Types types = definition.getTypes(); - if (types != null) { - for (Object ext : types.getExtensibilityElements()) { - if (ext instanceof Schema) { - Element element = ((Schema)ext).getElement(); - if (element.getAttribute("targetNamespace").equals(namespaceURI)) { - schema = element; - document = schema.getOwnerDocument(); - break; - } - } - } - } - if (document == null) { - return; - } - - // look at each operation in the port type to see if it needs fixing up - for (Object oper : portType.getOperations()) { - javax.wsdl.Operation operation = (javax.wsdl.Operation)oper; - String opName = operation.getName(); - - // if input message has no parts, add one containing an empty wrapper - Input input = operation.getInput(); - if (input != null) { - Message inputMsg = input.getMessage(); - if (inputMsg.getParts().isEmpty()) { - // create wrapper element and add it to the schema DOM - Element wrapper = - document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":element"); - wrapper.setAttribute("name", opName); - schema.appendChild(wrapper); - Element complexType = - document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":complexType"); - wrapper.appendChild(complexType); - - // create new part for the wrapper and add it to the message - Part part = definition.createPart(); - part.setName("parameters"); - part.setElementName(new QName(namespaceURI, opName, prefix)); - inputMsg.addPart(part); - } - } - - // if two-way operation has no output message, add one containing an empty wrapper - if (input != null && operation.getOutput() == null) { - boolean isOneWay = false; - Method[] methods = javaInterface.getMethods(); - for (Method method : methods) { - if (method.getName().equals(opName) && method.getAnnotation(OneWay.class) != null) { - isOneWay = true; - } - } - if (!isOneWay) { - // create wrapper element and add it to the schema DOM - String msgName = opName + "Response"; - Element wrapper = - document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":element"); - wrapper.setAttribute("name", msgName); - schema.appendChild(wrapper); - Element complexType = - document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":complexType"); - wrapper.appendChild(complexType); - - // create new part for the wrapper - Part part = definition.createPart(); - part.setName("parameters"); - part.setElementName(new QName(namespaceURI, msgName, prefix)); - - // create new message for the part - Message outputMsg = definition.createMessage(); - outputMsg.setQName(new QName(namespaceURI, msgName, prefix)); - outputMsg.addPart(part); - outputMsg.setUndefined(false); - definition.addMessage(outputMsg); - - // create output element for the operation - Output output = definition.createOutput(); - output.setMessage(outputMsg); - output.setExtensionAttribute(new QName("http://www.w3.org/2006/05/addressing/wsdl", "Action"), - new QName("urn:" + msgName)); - operation.setOutput(output); - operation.setStyle(OperationType.REQUEST_RESPONSE); - - // add binding output element to bindings for this port type - for (Object bindObj : definition.getAllBindings().values()) { - Binding binding = (Binding)bindObj; - if (binding.getPortType().equals(portType)) { - BindingOperation op = binding.getBindingOperation(opName, null, null); - if (op != null && op.getBindingInput() != null && op.getBindingOutput() == null) { - BindingOutput bindingOut = definition.createBindingOutput(); - for (Object extObj : op.getBindingInput().getExtensibilityElements()) { - bindingOut.addExtensibilityElement((ExtensibilityElement)extObj); - } - op.setBindingOutput(bindingOut); - } - } - } - } - } - } - - } - -} - -class WSDLLocatorImpl implements WSDLLocator { - private InputStream inputStream; - private String base = "http://"; - private String latestImportURI; - - public WSDLLocatorImpl(InputStream is) { - this.inputStream = is; - } - - public void close() { - try { - inputStream.close(); - } catch (IOException e) { - // Ignore - } - } - - public InputSource getBaseInputSource() { - try { - return XMLDocumentHelper.getInputSource(new URL(base), inputStream); - } catch (IOException e) { - throw new IllegalArgumentException(e); - } - } - - public String getBaseURI() { - return base; - } - - public InputSource getImportInputSource(String parentLocation, String importLocation) { - return null; - } - - public String getLatestImportURI() { - return latestImportURI; - } - -} diff --git a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelperTestCase.java b/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelperTestCase.java deleted file mode 100644 index 3988959af0..0000000000 --- a/branches/sca-java-1.1/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelperTestCase.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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.tuscany.sca.interfacedef.wsdl.java2wsdl; - -import java.util.List; -import java.util.Map; - -import javax.wsdl.Definition; -import javax.wsdl.Operation; -import javax.wsdl.PortType; - -import junit.framework.TestCase; - -import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; -import org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory; -import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract; - -public class Java2WSDLHelperTestCase extends TestCase { - - public void testCreateDefinition() { - Definition definition = Java2WSDLHelper.createDefinition(null, HelloWorld.class, false); - assertNotNull(definition); - - Map portTypes = definition.getPortTypes(); - assertEquals(1, portTypes.size()); - - PortType portType = (PortType)portTypes.values().iterator().next(); - assertEquals("HelloWorldPortType", portType.getQName().getLocalPart()); - assertEquals("http://java2wsdl.wsdl.interfacedef.sca.tuscany.apache.org", portType.getQName().getNamespaceURI()); - - List<?> ops = portType.getOperations(); - assertEquals(1, ops.size()); - - Operation operation = (Operation)ops.get(0); - assertEquals("sayHello", operation.getName()); - } - - - public void testCreateWSDLInterfaceContract() throws InvalidInterfaceException { - DefaultJavaInterfaceFactory factory = new DefaultJavaInterfaceFactory(); - JavaInterfaceContract javaIC = factory.createJavaInterfaceContract(); - javaIC.setInterface(factory.createJavaInterface(HelloWorld.class)); - WSDLInterfaceContract wsdlIC = Java2WSDLHelper.createWSDLInterfaceContract(javaIC); - assertNotNull(wsdlIC); - WSDLInterface wsdlInterface = (WSDLInterface)wsdlIC.getInterface(); - assertNotNull(wsdlInterface); - assertEquals(1, wsdlInterface.getOperations().size()); - assertEquals("sayHello", wsdlInterface.getOperations().get(0).getName()); - assertNotNull(wsdlInterface.getPortType()); - } - -} - -interface HelloWorld { - public String sayHello(String s); -} |