diff options
Diffstat (limited to '')
18 files changed, 0 insertions, 2367 deletions
diff --git a/java/sca/itest/osgi-tuscany/tuscany-spi/pom.xml b/java/sca/itest/osgi-tuscany/tuscany-spi/pom.xml index 510a20257f..28d55fa2c6 100644 --- a/java/sca/itest/osgi-tuscany/tuscany-spi/pom.xml +++ b/java/sca/itest/osgi-tuscany/tuscany-spi/pom.xml @@ -82,11 +82,6 @@ </dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-interface-wsdl-java2wsdl</artifactId>
- <version>1.4-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-databinding</artifactId>
<version>1.4-SNAPSHOT</version>
</dependency>
diff --git a/java/sca/modules/binding-sca-axis2/pom.xml b/java/sca/modules/binding-sca-axis2/pom.xml index f02cc42deb..2314c139c8 100644 --- a/java/sca/modules/binding-sca-axis2/pom.xml +++ b/java/sca/modules/binding-sca-axis2/pom.xml @@ -78,12 +78,6 @@ <version>1.4-SNAPSHOT</version>
<scope>test</scope>
</dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-interface-wsdl-java2wsdl</artifactId>
- <version>1.4-SNAPSHOT</version>
- </dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
diff --git a/java/sca/modules/binding-ws-axis2/pom.xml b/java/sca/modules/binding-ws-axis2/pom.xml index d51c4d56e3..1b8e743f3c 100644 --- a/java/sca/modules/binding-ws-axis2/pom.xml +++ b/java/sca/modules/binding-ws-axis2/pom.xml @@ -53,12 +53,6 @@ <dependency> <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-interface-wsdl-java2wsdl</artifactId> - <version>1.4-SNAPSHOT</version> - </dependency> - - <dependency> - <groupId>org.apache.tuscany.sca</groupId> <artifactId>tuscany-assembly-xml</artifactId> <version>1.4-SNAPSHOT</version> </dependency> diff --git a/java/sca/modules/interface-wsdl-java2wsdl/LICENSE b/java/sca/modules/interface-wsdl-java2wsdl/LICENSE deleted file mode 100644 index 8aa906c321..0000000000 --- a/java/sca/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/java/sca/modules/interface-wsdl-java2wsdl/NOTICE b/java/sca/modules/interface-wsdl-java2wsdl/NOTICE deleted file mode 100644 index fdfa0e9faa..0000000000 --- a/java/sca/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/java/sca/modules/interface-wsdl-java2wsdl/pom.xml b/java/sca/modules/interface-wsdl-java2wsdl/pom.xml deleted file mode 100644 index 77cb0b8d64..0000000000 --- a/java/sca/modules/interface-wsdl-java2wsdl/pom.xml +++ /dev/null @@ -1,135 +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.4-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.4-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-interface-wsdl-xml</artifactId> - <version>1.4-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-interface-java</artifactId> - <version>1.4-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-interface-java-jaxws</artifactId> - <version>1.4-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-xsd</artifactId> - <version>1.4-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-xsd-xml</artifactId> - <version>1.4-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-databinding</artifactId> - <version>1.4-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.axis2</groupId> - <artifactId>axis2-java2wsdl</artifactId> - <version>1.3</version> - <exclusions> - <exclusion> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </exclusion> - <exclusion> - <groupId>backport-util-concurrent</groupId> - <artifactId>backport-util-concurrent</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>backport-util-concurrent</groupId> - <artifactId>backport-util-concurrent</artifactId> - <version>3.0</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>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-core-databinding</artifactId> - <version>1.4-SNAPSHOT</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - <version>1.3</version> - </dependency> - - </dependencies> - - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - - <configuration> - <instructions> - <Bundle-Version>${tuscany.version}</Bundle-Version> - <Bundle-SymbolicName>org.apache.tuscany.sca.interface.wsdl.java2wsdl</Bundle-SymbolicName> - <Bundle-Description>${pom.name}</Bundle-Description> - <Export-Package>org.apache.tuscany.sca.interfacedef.wsdl*</Export-Package> - </instructions> - </configuration> - </plugin> - </plugins> - </build> - -</project> diff --git a/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java b/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java deleted file mode 100644 index c9566bec4a..0000000000 --- a/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java +++ /dev/null @@ -1,685 +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.interface2wsdl; - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; - -import javax.wsdl.Binding; -import javax.wsdl.BindingOperation; -import javax.wsdl.Definition; -import javax.wsdl.Fault; -import javax.wsdl.Input; -import javax.wsdl.Message; -import javax.wsdl.OperationType; -import javax.wsdl.Output; -import javax.wsdl.Part; -import javax.wsdl.PortType; -import javax.wsdl.Types; -import javax.wsdl.WSDLException; -import javax.wsdl.extensions.schema.Schema; -import javax.wsdl.factory.WSDLFactory; -import javax.xml.namespace.QName; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.databinding.DataBinding; -import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; -import org.apache.tuscany.sca.databinding.XMLTypeHelper; -import org.apache.tuscany.sca.databinding.jaxb.JAXBDataBinding; -import org.apache.tuscany.sca.interfacedef.DataType; -import org.apache.tuscany.sca.interfacedef.Interface; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.interfacedef.java.JavaOperation; -import org.apache.tuscany.sca.interfacedef.util.ElementInfo; -import org.apache.tuscany.sca.interfacedef.util.JavaXMLMapper; -import org.apache.tuscany.sca.interfacedef.util.TypeInfo; -import org.apache.tuscany.sca.interfacedef.util.WrapperInfo; -import org.apache.tuscany.sca.interfacedef.util.XMLType; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.xsd.XSDFactory; -import org.apache.tuscany.sca.xsd.XSDefinition; -import org.apache.ws.commons.schema.XmlSchema; -import org.apache.ws.commons.schema.XmlSchemaCollection; -import org.apache.ws.commons.schema.XmlSchemaException; -import org.apache.ws.commons.schema.utils.NamespaceMap; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * @version $Rev$ $Date$ - */ -public class Interface2WSDLGenerator { - 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 final String XMLNS_NS = "http://www.w3.org/2000/xmlns/"; - - private static final String ANYTYPE_NAME = "anyType"; - private static final QName ANYTYPE_QNAME = new QName(SCHEMA_NS, ANYTYPE_NAME); - - - private WSDLFactory factory; - private DataBindingExtensionPoint dataBindings; - private WSDLDefinitionGenerator definitionGenerator; - private boolean requiresSOAP12; - private ModelResolver resolver; - private XSDFactory xsdFactory; - - public Interface2WSDLGenerator(boolean requiresSOAP12, - ModelResolver resolver, - DataBindingExtensionPoint dataBindings, - XSDFactory xsdFactory) throws WSDLException { - this(requiresSOAP12, resolver, dataBindings, xsdFactory, WSDLFactory.newInstance()); - } - - public Interface2WSDLGenerator(boolean requiresSOAP12, - ModelResolver resolver, - DataBindingExtensionPoint dataBindings, - XSDFactory xsdFactory, - WSDLFactory factory) { - super(); - this.requiresSOAP12 = requiresSOAP12; - this.resolver = resolver; - definitionGenerator = new WSDLDefinitionGenerator(requiresSOAP12); - this.dataBindings = dataBindings; - this.xsdFactory = xsdFactory; - this.factory = factory; - } - - private void addDataType(Map<String, List<DataType>> map, DataType type) { - if (type == null) { - return; - } - String db = type.getDataBinding(); - if (db == null) { - return; - } - if ("java:array".equals(db)) { - DataType dt = (DataType)type.getLogical(); - db = dt.getDataBinding(); - } - List<DataType> types = map.get(db); - if (types == null) { - types = new ArrayList<DataType>(); - map.put(db, types); - } - types.add(type); - } - - private Map<String, List<DataType>> getDataTypes(Interface intf, boolean useWrapper) { - Map<String, List<DataType>> dataTypes = new HashMap<String, List<DataType>>(); - for (Operation op : intf.getOperations()) { - WrapperInfo wrapper = op.getWrapper(); - if (useWrapper && wrapper != null) { - DataType dt1 = wrapper.getInputWrapperType(); - addDataType(dataTypes, dt1); - DataType dt2 = wrapper.getOutputWrapperType(); - addDataType(dataTypes, dt2); - } else { - for (DataType dt1 : op.getInputType().getLogical()) { - addDataType(dataTypes, dt1); - } - DataType dt2 = op.getOutputType(); - addDataType(dataTypes, dt2); - } - for (DataType<DataType> dt3 : op.getFaultTypes()) { - DataType dt4 = dt3.getLogical(); - addDataType(dataTypes, dt4); - } - } - return dataTypes; - } - - - public Definition generate(Interface interfaze, WSDLDefinition wsdlDefinition) throws WSDLException { - if (interfaze == null) { - return null; - } - if (!interfaze.isRemotable()) { - throw new IllegalArgumentException("Interface is not remotable"); - } - if (interfaze instanceof WSDLInterface) { - return ((WSDLInterface)interfaze).getWsdlDefinition().getDefinition(); - } - JavaInterface iface = (JavaInterface)interfaze; - QName name = getQName(iface); - Definition definition = factory.newDefinition(); - if (requiresSOAP12) { - definition.addNamespace("soap12", "http://schemas.xmlsoap.org/wsdl/soap12/"); - } else { - definition.addNamespace("soap", "http://schemas.xmlsoap.org/wsdl/soap/"); - } - definition.addNamespace("wsdl", "http://schemas.xmlsoap.org/wsdl/"); - definition.addNamespace("xs", SCHEMA_NS); - - String namespaceURI = name.getNamespaceURI(); - definition.setTargetNamespace(namespaceURI); - definition.setQName(new QName(namespaceURI, name.getLocalPart() + "Service", name.getPrefix())); - definition.addNamespace(name.getPrefix(), namespaceURI); - - PortType portType = definition.createPortType(); - portType.setQName(name); - Binding binding = definitionGenerator.createBinding(definition, portType); - Map<String, XMLTypeHelper> helpers = new HashMap<String, XMLTypeHelper>(); - Map<QName, List<ElementInfo>> wrappers = new HashMap<QName, List<ElementInfo>>(); - for (Operation op : interfaze.getOperations()) { - javax.wsdl.Operation operation = generateOperation(definition, op, helpers, wrappers); - portType.addOperation(operation); - String action = ((JavaOperation)op).getAction(); - BindingOperation bindingOp = definitionGenerator.createBindingOperation(definition, operation, action); - binding.addBindingOperation(bindingOp); - } - portType.setUndefined(false); - definition.addPortType(portType); - binding.setUndefined(false); - definition.addBinding(binding); - wsdlDefinition.setBinding(binding); - - // call each helper in turn to populate the wsdl.types element - XmlSchemaCollection schemaCollection = new XmlSchemaCollection(); - - for (Map.Entry<String, List<DataType>> en: getDataTypes(interfaze, false).entrySet()) { - XMLTypeHelper helper = helpers.get(en.getKey()); - if (helper == null) { - continue; - } - List<XSDefinition> xsDefinitions = helper.getSchemaDefinitions(xsdFactory, resolver, en.getValue()); - for (XSDefinition xsDef: xsDefinitions) { - addSchemaExtension(xsDef, schemaCollection, wsdlDefinition, definition); - } - } - - // remove global wrapper elements with schema definitions from generation list - for (QName wrapperName: new HashSet<QName>(wrappers.keySet())) { - if (wsdlDefinition.getXmlSchemaElement(wrapperName) != null) { - wrappers.remove(wrapperName); - } - } - - // generate schema elements for wrappers that aren't defined in the schemas - if (wrappers.size() > 0) { - int i = 0; - Map<String, XSDefinition> wrapperXSDs = new HashMap<String, XSDefinition>(); - Map<Element, Map<String, String>> prefixMaps = new HashMap<Element, Map<String, String>>(); - for (Map.Entry<QName, List<ElementInfo>> entry: wrappers.entrySet()) { - String targetNS = entry.getKey().getNamespaceURI(); - Document schemaDoc = null; - Element schema = null; - XSDefinition xsDef = wrapperXSDs.get(targetNS); - if (xsDef != null) { - schemaDoc = xsDef.getDocument(); - schema = schemaDoc.getDocumentElement(); - } else { - schemaDoc = createDocument(); - schema = schemaDoc.createElementNS(SCHEMA_NS, "xs:schema"); - // The elementFormDefault should be set to unqualified, see TUSCANY-2388 - schema.setAttribute("elementFormDefault", "unqualified"); - schema.setAttribute("attributeFormDefault", "qualified"); - schema.setAttribute("targetNamespace", targetNS); - schema.setAttributeNS(XMLNS_NS, "xmlns:xs", SCHEMA_NS); - schemaDoc.appendChild(schema); - Schema schemaExt = createSchemaExt(definition); - schemaExt.setElement(schema); - prefixMaps.put(schema, new HashMap<String, String>()); - xsDef = xsdFactory.createXSDefinition(); - xsDef.setUnresolved(true); - xsDef.setNamespace(targetNS); - xsDef.setDocument(schemaDoc); - wrapperXSDs.put(targetNS, xsDef); - } - Element wrapper = schemaDoc.createElementNS(SCHEMA_NS, "xs:element"); - schema.appendChild(wrapper); - wrapper.setAttribute("name", entry.getKey().getLocalPart()); - if (entry.getValue().size() == 1 && entry.getValue().get(0).getQName() == null) { - // special case for global fault element - QName typeName = entry.getValue().get(0).getType().getQName(); - wrapper.setAttribute("type", typeName.getLocalPart()); - } else { - // normal wrapper containing type definition inline - Element complexType = schemaDoc.createElementNS(SCHEMA_NS, "xs:complexType"); - wrapper.appendChild(complexType); - if (entry.getValue().size() > 0) { - Element sequence = schemaDoc.createElementNS(SCHEMA_NS, "xs:sequence"); - complexType.appendChild(sequence); - for (ElementInfo element: entry.getValue()) { - Element xsElement = schemaDoc.createElementNS(SCHEMA_NS, "xs:element"); - if (element.isMany()) { - xsElement.setAttribute("maxOccurs", "unbounded"); - } - xsElement.setAttribute("minOccurs", "0"); - xsElement.setAttribute("name", element.getQName().getLocalPart()); - if (element.isNillable()) { - xsElement.setAttribute("nillable", "true"); - } - QName typeName = element.getType().getQName(); - String nsURI = typeName.getNamespaceURI(); - if ("".equals(nsURI) || targetNS.equals(nsURI)) { - xsElement.setAttribute("type", typeName.getLocalPart()); - } else if (SCHEMA_NS.equals(nsURI)) { - xsElement.setAttribute("type", "xs:" + typeName.getLocalPart()); - } else { - Map<String, String> prefixMap = prefixMaps.get(schema); - String prefix = prefixMap.get(nsURI); - if (prefix == null) { - prefix = "ns" + i++; - prefixMap.put(nsURI, prefix); - schema.setAttributeNS(XMLNS_NS, "xmlns:" + prefix, nsURI); - } - xsElement.setAttribute("type", prefix + ":" + typeName.getLocalPart()); - } - sequence.appendChild(xsElement); - } - } - } - } - - // resolve XSDefinitions containing generated wrappers - for (XSDefinition xsDef: wrapperXSDs.values()) { - loadXSD(schemaCollection, xsDef); - wsdlDefinition.getXmlSchemas().add(xsDef); - } - } - - return definition; - } - - private void addSchemaExtension(XSDefinition xsDef, - XmlSchemaCollection schemaCollection, - WSDLDefinition wsdlDefinition, - Definition definition) throws WSDLException { - if (xsDef.getAggregatedDefinitions() != null) { - for (XSDefinition xsd: xsDef.getAggregatedDefinitions()) { - addSchemaExtension(xsd, schemaCollection, wsdlDefinition, definition); - } - } else { - String nsURI = xsDef.getNamespace(); - Document document = xsDef.getDocument(); - if (document == null) { - try { - NamespaceMap prefixMap = new NamespaceMap(); - prefixMap.add("xs", SCHEMA_NS); - prefixMap.add("tns", nsURI); - XmlSchema schemaDef = xsDef.getSchema(); - schemaDef.setNamespaceContext(prefixMap); - Document[] docs = schemaDef.getAllSchemas(); - document = docs[docs.length-1]; - document.setDocumentURI(xsDef.getLocation().toString()); - xsDef.setDocument(document); - } catch (XmlSchemaException e) { - throw new RuntimeException(e); - } - } - loadXSD(schemaCollection, xsDef); - wsdlDefinition.getXmlSchemas().add(xsDef); - Element schema = document.getDocumentElement(); - Schema schemaExt = createSchemaExt(definition); - schemaExt.setDocumentBaseURI(document.getDocumentURI()); - schemaExt.setElement(schema); - } - } - - 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); - if (definition.getSchemaCollection() == null) { - definition.setSchemaCollection(schemaCollection); - } - if (definition.getSchema() == null) { - definition.setSchema(schema); - } - } - } - - public Schema createSchemaExt(Definition definition) throws WSDLException { - Types types = definition.getTypes(); - if (types == null) { - types = definition.createTypes(); - definition.setTypes(types); - } - - Schema schemaExt = createSchema(definition); - types.addExtensibilityElement(schemaExt); - - return schemaExt; - } - - public Schema createSchema(Definition definition) throws WSDLException { - return (Schema)definition.getExtensionRegistry().createExtension(Types.class, SCHEMA_QNAME); - } - - private DocumentBuilderFactory documentBuilderFactory; - - public Document createDocument() { - Document document; - try { - if (documentBuilderFactory == null) { - documentBuilderFactory = DocumentBuilderFactory.newInstance(); - documentBuilderFactory.setNamespaceAware(true); - } - document = documentBuilderFactory.newDocumentBuilder().newDocument(); - } catch (ParserConfigurationException e) { - throw new RuntimeException(e); - } - // document.setDocumentURI("http://"); - return document; - } - - protected QName getQName(Interface interfaze) { - JavaInterface iface = (JavaInterface)interfaze; - QName qname = iface.getQName(); - if (qname != null) { - return qname; - } else { - Class<?> javaClass = iface.getJavaClass(); - return new QName(JavaXMLMapper.getNamespace(javaClass), javaClass.getSimpleName(), "tns"); - } - } - - public javax.wsdl.Operation generateOperation(Definition definition, - Operation op, - Map<String, XMLTypeHelper> helpers, - Map<QName, List<ElementInfo>> wrappers) - throws WSDLException { - javax.wsdl.Operation operation = definition.createOperation(); - operation.setName(op.getName()); - operation.setUndefined(false); - - Input input = definition.createInput(); - Message inputMsg = definition.createMessage(); - String namespaceURI = definition.getQName().getNamespaceURI(); - QName inputMsgName = new QName(namespaceURI, op.getName()); - inputMsg.setQName(inputMsgName); - inputMsg.setUndefined(false); - definition.addMessage(inputMsg); - - // FIXME: By default, java interface is mapped to doc-lit-wrapper style WSDL - if (op.getWrapper() != null) { - // Generate doc-lit-wrapper style - inputMsg.addPart(generateWrapperPart(definition, op, helpers, wrappers, true)); - } else { - // Bare style - int i = 0; - for (DataType d : op.getInputType().getLogical()) { - inputMsg.addPart(generatePart(definition, d, "arg" + i)); - i++; - } - } - input.setMessage(inputMsg); - operation.setInput(input); - - if (!op.isNonBlocking()) { - Output output = definition.createOutput(); - Message outputMsg = definition.createMessage(); - QName outputMsgName = new QName(namespaceURI, op.getName() + "Response"); - outputMsg.setQName(outputMsgName); - outputMsg.setUndefined(false); - definition.addMessage(outputMsg); - - if (op.getWrapper() != null) { - outputMsg.addPart(generateWrapperPart(definition, op, helpers, wrappers, false)); - } else { - outputMsg.addPart(generatePart(definition, op.getOutputType(), "return")); - } - output.setMessage(outputMsg); - - operation.setOutput(output); - operation.setStyle(OperationType.REQUEST_RESPONSE); - } else { - operation.setStyle(OperationType.ONE_WAY); - } - - for (DataType<DataType> faultType: op.getFaultTypes()) { - Fault fault = definition.createFault(); - QName faultName = ((XMLType)faultType.getLogical().getLogical()).getElementName(); - fault.setName(faultName.getLocalPart()); - Message faultMsg = definition.getMessage(faultName); - if (faultMsg == null) { - faultMsg = definition.createMessage(); - faultMsg.setQName(faultName); - faultMsg.setUndefined(false); - definition.addMessage(faultMsg); - faultMsg.addPart(generatePart(definition, faultType.getLogical(), faultName.getLocalPart())); - } - fault.setMessage(faultMsg); - operation.addFault(fault); - List<ElementInfo> elements = null; - if (faultType.getLogical().getPhysical() != faultType.getPhysical()) { - // create special wrapper for type indirection to real fault bean - elements = new ArrayList<ElementInfo>(1); - DataType logical = faultType.getLogical(); - elements.add(getElementInfo(logical.getPhysical(), logical, null, helpers)); - } else { - // convert synthesized fault bean to a wrapper type - elements = new ArrayList<ElementInfo>(); - for (DataType<XMLType> propDT: op.getFaultBeans().get(faultName)) { - XMLType logical = propDT.getLogical(); - elements.add(getElementInfo(propDT.getPhysical(), propDT, logical.getElementName(), helpers)); - } - } - wrappers.put(faultName, elements); - } - - operation.setUndefined(false); - return operation; - } - - public Part generatePart(Definition definition, DataType arg, String partName) { - Part part = definition.createPart(); - part.setName(partName); - if (arg != null && arg.getLogical() instanceof XMLType) { - XMLType xmlType = (XMLType)arg.getLogical(); - QName elementName = xmlType.getElementName(); - part.setElementName(elementName); - addNamespace(definition, elementName); - if (xmlType.getElementName() == null) { - QName typeName = xmlType.getTypeName(); - part.setTypeName(typeName); - addNamespace(definition, typeName); - } - } - return part; - } - - public Part generateWrapperPart(Definition definition, - Operation operation, - Map<String, XMLTypeHelper> helpers, - Map<QName, List<ElementInfo>> wrappers, - boolean input) throws WSDLException { - Part part = definition.createPart(); - String partName = input ? operation.getName() : (operation.getName() + "Response"); - part.setName(partName); - WrapperInfo opWrapper = operation.getWrapper(); - if (opWrapper != null) { - ElementInfo elementInfo = - input ? opWrapper.getInputWrapperElement() : opWrapper.getOutputWrapperElement(); - List<ElementInfo> elements = - input ? opWrapper.getInputChildElements() : opWrapper.getOutputChildElements(); - QName wrapperName = elementInfo.getQName(); - part.setElementName(wrapperName); - addNamespace(definition, wrapperName); - wrappers.put(wrapperName, elements); - - // FIXME: [rfeng] Ideally, we should try to register the wrappers only. But we are - // expriencing the problem that we cannot handle XSD imports - /* - Class<?> wrapperClass = input ? opWrapper.getInputWrapperClass() : opWrapper.getOutputWrapperClass(); - DataType wrapperDT = input ? opWrapper.getInputWrapperType() : opWrapper.getOutputWrapperType(); - if (wrapperClass != null) { - getElementInfo(wrapperClass, wrapperDT, wrapperName, helpers); - return part; - } - */ - - Method method = ((JavaOperation)operation).getJavaMethod(); - if (input) { - Class<?>[] paramTypes = method.getParameterTypes(); - for (int i = 0; i < paramTypes.length; i++) { - DataType dataType = operation.getInputType().getLogical().get(i); - elements.set(i, getElementInfo(paramTypes[i], dataType, elements.get(i).getQName(), helpers)); - } - } else { - Class<?> returnType = method.getReturnType(); - if (returnType != Void.TYPE) { - DataType dataType = operation.getOutputType(); - elements.set(0, getElementInfo(returnType, dataType, elements.get(0).getQName(), helpers)); - } - } - } - return part; - } - - private ElementInfo getElementInfo(Class javaType, - DataType dataType, - QName name, - Map<String, XMLTypeHelper> helpers) { - String db = dataType.getDataBinding(); - while ("java:array".equals(db)) { - dataType = (DataType)dataType.getLogical(); - db = dataType.getDataBinding(); - } - XMLTypeHelper helper = helpers.get(db); - if (helper == null) { - DataBinding dataBinding = dataBindings.getDataBinding(db); - if (dataBinding == null) { - QName element = name; - if (element == null || dataType.getLogical() instanceof XMLType) { - XMLType xmlType = (XMLType)dataType.getLogical(); - if (xmlType.getElementName() != null) { - element = xmlType.getElementName(); - } - } - return new ElementInfo(element, new TypeInfo(ANYTYPE_QNAME, false, null)); - // throw new ServiceRuntimeException("No data binding for " + db); - } - - helper = dataBinding.getXMLTypeHelper(); - if (helper == null) { - // Default to JAXB - helper = helpers.get(JAXBDataBinding.NAME); - if (helper == null) { - helper = dataBindings.getDataBinding(JAXBDataBinding.NAME).getXMLTypeHelper(); - helpers.put(JAXBDataBinding.NAME, helper); - } - } - helpers.put(db, helper); - } - TypeInfo typeInfo = helper.getTypeInfo(javaType.isArray() ? javaType.getComponentType() : javaType, - dataType.getLogical()); - ElementInfo element = new ElementInfo(name, typeInfo); - element.setMany(byte[].class != javaType && javaType.isArray()); - element.setNillable(!javaType.isPrimitive()); - return element; - } - - private static void addNamespace(Definition definition, QName name) { - String namespace = name.getNamespaceURI(); - if (definition.getPrefix(namespace) == null) { - definition.addNamespace("ns" + definition.getNamespaces().size(), namespace); - } - } - - /* - // currently not using the next three methods - public XmlSchemaType getXmlSchemaType(DataType type) { - return null; - } - - // FIXME: WE need to add databinding-specific Java2XSD generation - public Element generateXSD(DataType dataType) { - DataBinding dataBinding = dataBindings.getDataBinding(dataType.getDataBinding()); - if (dataBinding != null) { - // return dataBinding.generateSchema(dataType); - } - return null; - } - - public void generateWrapperElements(Operation op) { - XmlSchemaCollection collection = new XmlSchemaCollection(); - String ns = getQName(op.getInterface()).getNamespaceURI(); - XmlSchema schema = new XmlSchema(ns, collection); - schema.setAttributeFormDefault(new XmlSchemaForm(XmlSchemaForm.QUALIFIED)); - schema.setElementFormDefault(new XmlSchemaForm(XmlSchemaForm.QUALIFIED)); - - XmlSchemaElement inputElement = new XmlSchemaElement(); - inputElement.setQName(new QName(ns, op.getName())); - XmlSchemaComplexType inputType = new XmlSchemaComplexType(schema); - inputType.setName(""); - XmlSchemaSequence inputSeq = new XmlSchemaSequence(); - inputType.setParticle(inputSeq); - List<DataType> argTypes = op.getInputType().getLogical(); - for (DataType argType : argTypes) { - XmlSchemaElement child = new XmlSchemaElement(); - Object logical = argType.getLogical(); - if (logical instanceof XMLType) { - child.setName(((XMLType)logical).getElementName().getLocalPart()); - XmlSchemaType type = getXmlSchemaType(argType); - child.setType(type); - } - inputSeq.getItems().add(child); - } - inputElement.setType(inputType); - - XmlSchemaElement outputElement = new XmlSchemaElement(); - outputElement.setQName(new QName(ns, op.getName() + "Response")); - XmlSchemaComplexType outputType = new XmlSchemaComplexType(schema); - outputType.setName(""); - XmlSchemaSequence outputSeq = new XmlSchemaSequence(); - outputType.setParticle(outputSeq); - DataType returnType = op.getOutputType(); - XmlSchemaElement child = new XmlSchemaElement(); - Object logical = returnType.getLogical(); - if (logical instanceof XMLType) { - child.setName(((XMLType)logical).getElementName().getLocalPart()); - XmlSchemaType type = getXmlSchemaType(returnType); - child.setType(type); - } - outputSeq.getItems().add(child); - outputElement.setType(outputType); - - schema.getElements().add(inputElement.getQName(), inputElement); - schema.getElements().add(outputElement.getQName(), outputElement); - - } - */ - - public WSDLFactory getFactory() { - return factory; - } - - public void setFactory(WSDLFactory factory) { - this.factory = factory; - } - -} diff --git a/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/WSDLDefinitionGenerator.java b/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/WSDLDefinitionGenerator.java deleted file mode 100644 index 7cecf4379f..0000000000 --- a/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/WSDLDefinitionGenerator.java +++ /dev/null @@ -1,304 +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.interface2wsdl; - -import java.util.Iterator; - -import javax.wsdl.Binding; -import javax.wsdl.BindingFault; -import javax.wsdl.BindingInput; -import javax.wsdl.BindingOperation; -import javax.wsdl.BindingOutput; -import javax.wsdl.Definition; -import javax.wsdl.Fault; -import javax.wsdl.Input; -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.WSDLException; -import javax.wsdl.extensions.ExtensibilityElement; -import javax.wsdl.extensions.soap.SOAPAddress; -import javax.wsdl.extensions.soap.SOAPBinding; -import javax.wsdl.extensions.soap.SOAPBody; -import javax.wsdl.extensions.soap.SOAPFault; -import javax.wsdl.extensions.soap.SOAPOperation; -import javax.wsdl.extensions.soap12.SOAP12Address; -import javax.wsdl.extensions.soap12.SOAP12Binding; -import javax.wsdl.extensions.soap12.SOAP12Body; -import javax.wsdl.extensions.soap12.SOAP12Fault; -import javax.wsdl.extensions.soap12.SOAP12Operation; -import javax.wsdl.factory.WSDLFactory; -import javax.wsdl.xml.WSDLReader; -import javax.xml.namespace.QName; - -import org.w3c.dom.Element; - -/** - * - * @version $Rev$ $Date$ - */ -public class WSDLDefinitionGenerator { - private static final String SOAP_NS = "http://schemas.xmlsoap.org/wsdl/soap/"; - public static final QName SOAP_ADDRESS = new QName(SOAP_NS, "address"); - private static final QName SOAP_BINDING = new QName(SOAP_NS, "binding"); - private static final QName SOAP_BODY = new QName(SOAP_NS, "body"); - private static final QName SOAP_FAULT = new QName(SOAP_NS, "fault"); - private static final QName SOAP_OPERATION = new QName(SOAP_NS, "operation"); - private static final String SOAP12_NS = "http://schemas.xmlsoap.org/wsdl/soap12/"; - public static final QName SOAP12_ADDRESS = new QName(SOAP12_NS, "address"); - private static final QName SOAP12_BINDING = new QName(SOAP12_NS, "binding"); - private static final QName SOAP12_BODY = new QName(SOAP12_NS, "body"); - private static final QName SOAP12_FAULT = new QName(SOAP12_NS, "fault"); - private static final QName SOAP12_OPERATION = new QName(SOAP12_NS, "operation"); - - private static final String BINDING_SUFFIX = "Binding"; - private static final String SERVICE_SUFFIX = "Service"; - private static final String PORT_SUFFIX = "Port"; - - private boolean requiresSOAP12; - private QName soapAddress; - private QName soapBinding; - private QName soapBody; - private QName soapFault; - private QName soapOperation; - - public WSDLDefinitionGenerator(boolean requiresSOAP12) { - super(); - this.requiresSOAP12 = requiresSOAP12; - soapAddress = requiresSOAP12 ? SOAP12_ADDRESS : SOAP_ADDRESS; - soapBinding = requiresSOAP12 ? SOAP12_BINDING : SOAP_BINDING; - soapBody = requiresSOAP12 ? SOAP12_BODY : SOAP_BODY; - soapFault = requiresSOAP12 ? SOAP12_FAULT : SOAP_FAULT; - soapOperation = requiresSOAP12 ? SOAP12_OPERATION : SOAP_OPERATION; - } - - public Definition cloneDefinition(WSDLFactory factory, Definition definition) throws WSDLException { - Element root = definition.getDocumentationElement(); - root = (Element)root.cloneNode(true); - WSDLReader reader = factory.newWSDLReader(); - return reader.readWSDL(definition.getDocumentBaseURI(), root); - } - - public Types createTypes(Definition definition) { - Types types = definition.createTypes(); - definition.setTypes(types); - return types; - } - - public Binding createBinding(Definition definition, PortType portType) { - try { - Binding binding = definition.createBinding(); - binding.setPortType(portType); - configureBinding(definition, binding, portType); - ExtensibilityElement bindingExtension = - definition.getExtensionRegistry().createExtension(Binding.class, soapBinding); - if (requiresSOAP12) { - ((SOAP12Binding)bindingExtension).setStyle("document"); - ((SOAP12Binding)bindingExtension).setTransportURI("http://schemas.xmlsoap.org/soap/http"); - } else { - ((SOAPBinding)bindingExtension).setStyle("document"); - ((SOAPBinding)bindingExtension).setTransportURI("http://schemas.xmlsoap.org/soap/http"); - } - binding.addExtensibilityElement(bindingExtension); - return binding; - } catch (WSDLException e) { - throw new IllegalArgumentException(e); - } - } - - protected void configureBinding(Definition definition, Binding binding, PortType portType) throws WSDLException { - QName portTypeName = portType.getQName(); - if (portTypeName != null) { - // Choose <porttype>Binding if available. If this name is in use, insert - // separating underscores until there is no clash. - for (String suffix = BINDING_SUFFIX; ; suffix = "_" + suffix) { - QName name = new QName(definition.getTargetNamespace(), portTypeName.getLocalPart() + suffix); - if (definition.getBinding(name) == null) { - binding.setQName(name); - break; - } - } - } - } - - @SuppressWarnings("unchecked") - public void createBindingOperations(Definition definition, Binding binding, PortType portType) { - try { - for (Iterator oi = portType.getOperations().iterator(); oi.hasNext();) { - Operation operation = (Operation)oi.next(); - BindingOperation bindingOperation = createBindingOperation(definition, operation, ""); - binding.addBindingOperation(bindingOperation); - } - } catch (WSDLException e) { - throw new IllegalArgumentException(e); - } - } - - @SuppressWarnings("unchecked") - public BindingOperation createBindingOperation(Definition definition, Operation operation, String action) - throws WSDLException { - BindingOperation bindingOperation = definition.createBindingOperation(); - bindingOperation.setOperation(operation); - configureBindingOperation(bindingOperation, operation); - ExtensibilityElement operationExtension = - definition.getExtensionRegistry().createExtension(BindingOperation.class, soapOperation); - if (requiresSOAP12) { - ((SOAP12Operation)operationExtension).setSoapActionURI(action); - } else { - ((SOAPOperation)operationExtension).setSoapActionURI(action); - } - bindingOperation.addExtensibilityElement(operationExtension); - if (operation.getInput() != null) { - BindingInput bindingInput = definition.createBindingInput(); - configureBindingInput(bindingInput, operation.getInput()); - ExtensibilityElement inputExtension = - definition.getExtensionRegistry().createExtension(BindingInput.class, soapBody); - if (requiresSOAP12) { - ((SOAP12Body)inputExtension).setUse("literal"); - } else { - ((SOAPBody)inputExtension).setUse("literal"); - } - bindingInput.addExtensibilityElement(inputExtension); - bindingOperation.setBindingInput(bindingInput); - } - if (operation.getOutput() != null) { - BindingOutput bindingOutput = definition.createBindingOutput(); - configureBindingOutput(bindingOutput, operation.getOutput()); - ExtensibilityElement outputExtension = - definition.getExtensionRegistry().createExtension(BindingOutput.class, soapBody); - if (requiresSOAP12) { - ((SOAP12Body)outputExtension).setUse("literal"); - } else { - ((SOAPBody)outputExtension).setUse("literal"); - } - bindingOutput.addExtensibilityElement(outputExtension); - bindingOperation.setBindingOutput(bindingOutput); - } - for (Iterator fi = operation.getFaults().values().iterator(); fi.hasNext();) { - Fault fault = (Fault)fi.next(); - BindingFault bindingFault = definition.createBindingFault(); - ExtensibilityElement faultExtension = - definition.getExtensionRegistry().createExtension(BindingFault.class, soapFault); - configureBindingFault(bindingFault, faultExtension, fault); - bindingFault.addExtensibilityElement(faultExtension); - bindingOperation.addBindingFault(bindingFault); - } - return bindingOperation; - } - - protected void configureBindingOperation(BindingOperation bindingOperation, Operation operation) - throws WSDLException { - bindingOperation.setName(operation.getName()); - } - - protected void configureBindingInput(BindingInput bindingInput, Input input) throws WSDLException { - bindingInput.setName(input.getName()); - } - - protected void configureBindingOutput(BindingOutput bindingOutput, Output output) throws WSDLException { - bindingOutput.setName(output.getName()); - } - - protected void configureBindingFault(BindingFault bindingFault, - ExtensibilityElement faultExtension, - Fault fault) - throws WSDLException { - String faultName = fault.getName(); - bindingFault.setName(faultName); - if (requiresSOAP12) { - ((SOAP12Fault)faultExtension).setName(faultName); - ((SOAP12Fault)faultExtension).setUse("literal"); - } else { - ((SOAPFault)faultExtension).setName(faultName); - ((SOAPFault)faultExtension).setUse("literal"); - } - } - - public Service createService(Definition definition, PortType portType) { - try { - Service service = definition.createService(); - configureService(definition, service, portType); - // createPort(definition, binding, service); - definition.addService(service); - return service; - } catch (WSDLException e) { - throw new IllegalArgumentException(e); - } - } - - public Service createService(Definition definition, Binding binding) { - try { - Service service = definition.createService(); - configureService(definition, service, binding.getPortType()); - // createPort(definition, binding, service); - definition.addService(service); - return service; - } catch (WSDLException e) { - throw new IllegalArgumentException(e); - } - } - - protected void configureService(Definition definition, Service service, PortType portType) throws WSDLException { - QName portTypeName = portType.getQName(); - if (portTypeName != null) { - // Choose <porttype>Service if available. If this name is in use, insert - // separating underscores until there is no clash. - for (String suffix = SERVICE_SUFFIX; ; suffix = "_" + suffix) { - QName name = new QName(definition.getTargetNamespace(), portTypeName.getLocalPart() + suffix); - if (definition.getService(name) == null) { - service.setQName(name); - break; - } - } - } - } - - public Port createPort(Definition definition, Binding binding, Service service, String uri) { - try { - Port port = definition.createPort(); - port.setBinding(binding); - configurePort(port, binding); - if (uri != null) { - ExtensibilityElement portExtension = - definition.getExtensionRegistry().createExtension(Port.class, soapAddress); - if (requiresSOAP12) { - ((SOAP12Address)portExtension).setLocationURI(uri); - } else { - ((SOAPAddress)portExtension).setLocationURI(uri); - } - port.addExtensibilityElement(portExtension); - } - service.addPort(port); - return port; - } catch (WSDLException e) { - throw new IllegalArgumentException(e); - } - } - - protected void configurePort(Port port, Binding binding) throws WSDLException { - if (binding.getPortType() != null && binding.getPortType().getQName() != null) { - port.setName(binding.getPortType().getQName().getLocalPart() + PORT_SUFFIX); - } - } - -} diff --git a/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelper.java b/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelper.java deleted file mode 100644 index 55d07f8759..0000000000 --- a/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelper.java +++ /dev/null @@ -1,602 +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.security.AccessController; -import java.security.PrivilegedAction; -import java.security.PrivilegedExceptionAction; -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.wsdl.xml.WSDLWriter; -import javax.xml.XMLConstants; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; -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.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.impl.InvalidWSDLException; -import org.apache.tuscany.sca.interfacedef.wsdl.impl.WSDLInterfaceIntrospectorImpl; -import org.apache.tuscany.sca.interfacedef.wsdl.interface2wsdl.Interface2WSDLGenerator; -import org.apache.tuscany.sca.interfacedef.wsdl.xml.WSDLModelResolver; -import org.apache.tuscany.sca.xsd.XSDefinition; -import org.apache.tuscany.sca.xsd.XSDFactory; -import org.apache.tuscany.sca.xsd.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. - * - * @version $Rev$ $Date$ - */ -public class Java2WSDLHelper { - // the following 3 switches are temporary for debugging - public static boolean newGenerator = true; // external code sets this to force new generator - public static boolean oldGenerator; // external code sets this to force old generator - public static boolean printWSDL; // external code sets this to print generated WSDL - - 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()); - } - } - } - } - - //FIXME: temp code to control whether the old or new path is used. - // Will be removed when the new path can handle all cases. - private static boolean useNewGenerator(JavaInterface iface) { - /* restore the following code when the new generator supports exception mapping - // check databindings to see if new generator can be used - boolean newGenerator = true; - for (Operation op : iface.getOperations()) { - DataType<List<DataType>> inputType = op.getInputType(); - for (DataType t : inputType.getLogical()) { - newGenerator &= checkDataBinding(t); - } - DataType outputType = op.getOutputType(); - newGenerator &= checkDataBinding(outputType); - } - return newGenerator; - */ - return iface.getQName() != null; // use new generator for @WebService - } - - /* - //FIXME: temp code to control whether the old or new path is used. - // Will be removed when the new path can handle all databindings. - private static boolean checkDataBinding(DataType dt) { - boolean result = (dt == null || - "java:simpleType".equals(dt.getDataBinding()) || - "java:complexType".equals(dt.getDataBinding()) || - "java:array".equals(dt.getDataBinding()) || - "java.io.Externalizable".equals(dt.getDataBinding()) || - "org.osoa.sca.CallableReference".equals(dt.getDataBinding()) || - "org.apache.axiom.om.OMElement".equals(dt.getDataBinding()) || - "javax.xml.bind.JAXBElement".equals(dt.getDataBinding())); - if (!result) { - System.out.println("$$ unsupported databinding " + dt.getDataBinding()); - } - return result; - } - */ - - /** - * Create a WSDLInterfaceContract from a JavaInterfaceContract - */ - public static WSDLInterfaceContract createWSDLInterfaceContract(JavaInterfaceContract contract, - ModelResolver resolver, - DataBindingExtensionPoint dataBindings, - WSDLFactory wsdlFactory, - XSDFactory xsdFactory) { - return createWSDLInterfaceContract(contract, false, resolver, dataBindings, wsdlFactory, xsdFactory); - } - - /** - * Create a WSDLInterfaceContract from a JavaInterfaceContract - */ - public static WSDLInterfaceContract createWSDLInterfaceContract(JavaInterfaceContract contract, - boolean requiresSOAP12, - ModelResolver resolver, - DataBindingExtensionPoint dataBindings, - WSDLFactory wsdlFactory, - XSDFactory xsdFactory) { - - WSDLInterfaceContract wsdlContract = wsdlFactory.createWSDLInterfaceContract(); - WSDLInterface wsdlInterface = wsdlFactory.createWSDLInterface(); - wsdlContract.setInterface(wsdlInterface); - - final WSDLDefinition wsdlDefinition = wsdlFactory.createWSDLDefinition(); - JavaInterface iface = (JavaInterface)contract.getInterface(); - - //FIXME: When Interface2WSDLGenerator supports all databindings, change this - // code to use it in all cases instead of calling createDefinition() - Definition def = null; - boolean usedNewGenerator = false; - if (newGenerator || (!oldGenerator && useNewGenerator(iface))) { - usedNewGenerator = true; - /* - System.out.println("$$ new gen: " + iface.getName()); - */ - try { - Interface2WSDLGenerator wsdlGenerator = - new Interface2WSDLGenerator(requiresSOAP12, resolver, dataBindings, xsdFactory); - def = wsdlGenerator.generate(iface, wsdlDefinition); - } catch (WSDLException e) { - throw new RuntimeException(e); - } - - } else { - /* - System.out.println("$$ old gen: " + iface.getName()); - */ - // 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); - } - def = createDefinition(pkg2nsMap, iface.getJavaClass(), requiresSOAP12); - } - - // for debugging - if (printWSDL) { - try { - System.out.println("Generated WSDL for Java interface " + iface.getName() + " class " + iface.getJavaClass().getName()); - WSDLWriter writer = javax.wsdl.factory.WSDLFactory.newInstance().newWSDLWriter(); - writer.writeWSDL(def, System.out); - } catch (WSDLException e) { - throw new RuntimeException(e); - } - } - - 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); - - if (!usedNewGenerator) { - // Allow privileged access to read properties. Requires PropertiesPermission read in - // security policy. - final XSDFactory finalFactory = xsdFactory; - final Definition fdef = def; - AccessController.doPrivileged(new PrivilegedAction<Object>() { - public Object run() { - readInlineSchemas(finalFactory, wsdlDefinition, fdef, new XmlSchemaCollection()); - return null; - } - }); - } - - try { - for (Operation op : iface.getOperations()) { - javax.wsdl.Operation wsdlOp = portType.getOperation(op.getName(), null, null); - wsdlInterface.getOperations().add(WSDLInterfaceIntrospectorImpl.getOperation( - wsdlOp, wsdlDefinition, resolver, xsdFactory)); - - /* - 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(); - if (nodeMap != null) { // nodename: #document value: null - 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(XSDFactory xsdFactory, - 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 = xsdFactory.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(xsdFactory, 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, final Class<?> javaInterface, boolean requiresSOAP12) { - - final String className = javaInterface.getName(); - // Allow privileged access to get ClassLoader. Requires RuntimePermission read in security - // policy. - final ClassLoader cl = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() { - public ClassLoader run() { - return javaInterface.getClassLoader(); - } - }); - final ByteArrayOutputStream os = new ByteArrayOutputStream(); - // Allow privileged access to read properties. Requires PropertiesPermission read in - // security policy. - final Java2WSDLBuilder builder = AccessController.doPrivileged(new PrivilegedAction<Java2WSDLBuilder>() { - public Java2WSDLBuilder run() { - return new Java2WSDLBuilder(os, className, cl); - } - }); - if (map != null) { - builder.setPkg2nsMap(map); - } - - // builder.generateWSDL(); - // Allow privileged access to read properties. Requires PropertiesPermission read in - // security policy. - try { - AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() { - public Object run() throws Exception { - builder.generateWSDL(); - return null; - } - }); - } 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/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestException.java b/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestException.java deleted file mode 100644 index 7d0b12e33b..0000000000 --- a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestException.java +++ /dev/null @@ -1,47 +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;
-
-/**
- *
- * @version $Rev$ $Date$
- */
-public class TestException extends Exception {
-
- private String userdata;
-
- public TestException(String message) {
- super(message);
- }
-
- public TestException(String message, String userdata) {
- super(message);
- this.userdata = userdata;
- }
-
- public String getUserdata() {
- return userdata;
- }
-
- public void setUserdata(String userdata) {
- this.userdata = userdata;
- }
-
-}
diff --git a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestFault.java b/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestFault.java deleted file mode 100644 index dd915f81ca..0000000000 --- a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestFault.java +++ /dev/null @@ -1,46 +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;
-
-import javax.xml.ws.WebFault;
-
-/**
- *
- * @version $Rev$ $Date$
- */
-@WebFault(faultBean="org.apache.tuscany.sca.interfacedef.wsdl.TestFaultBean")
-public class TestFault extends Exception {
-
- private TestFaultBean bean;
-
- public TestFault(TestFaultBean bean, String message) {
- super(message);
- this.bean = bean;
- }
-
- public TestFault(TestFaultBean bean, String message, Throwable cause) {
- super(message, cause);
- this.bean = bean;
- }
-
- public TestFaultBean getFaultInfo() {
- return bean;
- }
-}
diff --git a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestFaultBean.java b/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestFaultBean.java deleted file mode 100644 index b0b6e7572a..0000000000 --- a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestFaultBean.java +++ /dev/null @@ -1,54 +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; - -/** - * - * @version $Rev$ $Date$ - */ -public class TestFaultBean { - private String lastName; - private String firstName; - private float age; - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public float getAge() { - return age; - } - - public void setAge(float age) { - this.age = age; - } -} diff --git a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestJavaClass.java b/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestJavaClass.java deleted file mode 100644 index 92032a5135..0000000000 --- a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestJavaClass.java +++ /dev/null @@ -1,30 +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; - -/** - * - * @version $Rev$ $Date$ - */ -public class TestJavaClass { - public String name; - public int number; - public float balance; -} diff --git a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestJavaInterface.java b/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestJavaInterface.java deleted file mode 100644 index 64dfe1dd8a..0000000000 --- a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/TestJavaInterface.java +++ /dev/null @@ -1,57 +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; - -import javax.jws.WebMethod; -import javax.jws.WebService; - -import org.osoa.sca.annotations.OneWay; -import org.osoa.sca.annotations.Remotable; - -/** - * - * @version $Rev$ $Date$ - */ -@Remotable -@WebService -public interface TestJavaInterface { - String m1(String str); - - @OneWay - @WebMethod - void m2(int i); - - @WebMethod - String m3(); - - void m4(); - - @WebMethod - String m5(String str, int i); - - @WebMethod(exclude = true) - void dummy(); - - @WebMethod - void m6(TestJavaClass info) throws TestException; - - @WebMethod - void m7(TestJavaClass info) throws TestFault; -} diff --git a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java b/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java deleted file mode 100644 index 7d92b98533..0000000000 --- a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java +++ /dev/null @@ -1,67 +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.interface2wsdl; - -import java.io.StringWriter; - -import javax.wsdl.Definition; -import javax.wsdl.xml.WSDLWriter; - -import org.apache.tuscany.sca.contribution.DefaultModelFactoryExtensionPoint; -import org.apache.tuscany.sca.core.databinding.processor.DataBindingJavaInterfaceProcessor; -import org.apache.tuscany.sca.databinding.DefaultDataBindingExtensionPoint; -import org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSFaultExceptionMapper; -import org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSJavaInterfaceProcessor; -import org.apache.tuscany.sca.interfacedef.wsdl.DefaultWSDLFactory; -import org.apache.tuscany.sca.interfacedef.wsdl.TestJavaInterface; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; -import org.apache.tuscany.sca.xsd.DefaultXSDFactory; -import org.apache.tuscany.sca.xsd.xml.XSDModelResolver; -import org.junit.Test; - -/** - * @version $Rev$ $Date$ - */ -public class Java2WSDLGeneratorTestCase { - - @Test - public void testGenerate() throws Exception { - DefaultJavaInterfaceFactory iFactory = new DefaultJavaInterfaceFactory(); - JavaInterface iface = iFactory.createJavaInterface(TestJavaInterface.class); - DefaultDataBindingExtensionPoint dataBindings = new DefaultDataBindingExtensionPoint(); - JAXWSFaultExceptionMapper faultExceptionMapper = new JAXWSFaultExceptionMapper(dataBindings, null); - new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper, null).visitInterface(iface); - new DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface); - DefaultModelFactoryExtensionPoint modelFactories = new DefaultModelFactoryExtensionPoint(); - WSDLDefinition wsdlDefinition = new DefaultWSDLFactory(modelFactories).createWSDLDefinition(); - DefaultXSDFactory factory = new DefaultXSDFactory(); - Interface2WSDLGenerator generator = new Interface2WSDLGenerator(false, new XSDModelResolver(null, null), dataBindings, factory); - Definition definition = generator.generate(iface, wsdlDefinition); - - // print the generated WSDL file and inline schemas - WSDLWriter writer = generator.getFactory().newWSDLWriter(); - StringWriter sw = new StringWriter(); - writer.writeWSDL(definition, sw); - System.out.println(sw.toString()); - } - -} diff --git a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelperTestCase.java b/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelperTestCase.java deleted file mode 100644 index df8cec6bc1..0000000000 --- a/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelperTestCase.java +++ /dev/null @@ -1,105 +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.contribution.DefaultModelFactoryExtensionPoint; -import org.apache.tuscany.sca.core.databinding.processor.DataBindingJavaInterfaceProcessor; -import org.apache.tuscany.sca.databinding.DefaultDataBindingExtensionPoint; -import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; -import org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract; -import org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSFaultExceptionMapper; -import org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSJavaInterfaceProcessor; -import org.apache.tuscany.sca.interfacedef.wsdl.TestJavaInterface; -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.xsd.XSDFactory; -import org.apache.tuscany.sca.xsd.xml.XSDModelResolver; -import org.osoa.sca.annotations.Remotable; - -/** - * - * @version $Rev$ $Date$ - */ -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 { - DefaultModelFactoryExtensionPoint modelFactories = new DefaultModelFactoryExtensionPoint(); - WSDLFactory wsdlFactory = modelFactories.getFactory(WSDLFactory.class); - XSDFactory xsdFactory = modelFactories.getFactory(XSDFactory.class); - DefaultJavaInterfaceFactory factory = new DefaultJavaInterfaceFactory(); - JavaInterfaceContract javaIC = factory.createJavaInterfaceContract(); - JavaInterface iface = factory.createJavaInterface(HelloWorld.class); - DefaultDataBindingExtensionPoint dataBindings = new DefaultDataBindingExtensionPoint(); - JAXWSFaultExceptionMapper faultExceptionMapper = new JAXWSFaultExceptionMapper(dataBindings, null); - new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper, null).visitInterface(iface); - new DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface); - javaIC.setInterface(iface); - WSDLInterfaceContract wsdlIC = Java2WSDLHelper.createWSDLInterfaceContract(javaIC, new XSDModelResolver(null, null), dataBindings, wsdlFactory, xsdFactory); - assertNotNull(wsdlIC); - WSDLInterface wsdlInterface = (WSDLInterface)wsdlIC.getInterface(); - assertNotNull(wsdlInterface); - assertEquals(1, wsdlInterface.getOperations().size()); - assertEquals("sayHello", wsdlInterface.getOperations().get(0).getName()); - assertNotNull(wsdlInterface.getPortType()); - - JavaInterfaceContract javaIC2 = factory.createJavaInterfaceContract(); - JavaInterface iface2 = factory.createJavaInterface(TestJavaInterface.class); - new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper, null).visitInterface(iface2); - new DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface2); - javaIC2.setInterface(iface2); - WSDLInterfaceContract wsdlIC2 = Java2WSDLHelper.createWSDLInterfaceContract(javaIC2, new XSDModelResolver(null, null), dataBindings, wsdlFactory, xsdFactory); - assertNotNull(wsdlIC2); - } - -} - -@Remotable -interface HelloWorld { - String sayHello(String s); -} diff --git a/java/sca/modules/pom.xml b/java/sca/modules/pom.xml index deebebe0b2..7be9d31881 100644 --- a/java/sca/modules/pom.xml +++ b/java/sca/modules/pom.xml @@ -121,7 +121,6 @@ <module>interface-java-jaxws</module> <module>interface-java-xml</module> <module>interface-wsdl</module> - <module>interface-wsdl-java2wsdl</module> <module>interface-wsdl-xml</module> <module>implementation-bpel</module> <module>implementation-bpel-ode</module> diff --git a/java/sca/samples/binding-notification-broker/pom.xml b/java/sca/samples/binding-notification-broker/pom.xml index f70ca184e0..8043379003 100644 --- a/java/sca/samples/binding-notification-broker/pom.xml +++ b/java/sca/samples/binding-notification-broker/pom.xml @@ -72,12 +72,6 @@ <version>1.4-SNAPSHOT</version>
<scope>runtime</scope>
</dependency>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-interface-wsdl-java2wsdl</artifactId>
- <version>1.4-SNAPSHOT</version>
- <scope>runtime</scope>
- </dependency>
<!-- test dependencies -->
<dependency>
<groupId>junit</groupId>
|