You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by aj...@apache.org on 2006/07/18 12:38:24 UTC

svn commit: r423041 - in /webservices/axis2/trunk/java/modules: codegen/src/org/apache/axis2/wsdl/databinding/ codegen/src/org/apache/axis2/wsdl/i18n/ core/src/org/apache/axis2/description/ xmlbeans/src/org/apache/axis2/xmlbeans/ xmlbeans/test-resource...

Author: ajith
Date: Tue Jul 18 03:38:24 2006
New Revision: 423041

URL: http://svn.apache.org/viewvc?rev=423041&view=rev
Log:
1. Changed the behavior of the typemapper to throw an exception when there is a QName reference that has no type.
2. Added a new exception that will be thrown in the mentioned situation.
3. Added a test case to the WSDL2JavaTest.java and the relevant WSDL file
4. Modified the WSDL11ToAxisServiceBuilder.java to populate the namespace imports to the existing schema if needed

Added:
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/databinding/UnmatchedTypeException.java
    webservices/axis2/trunk/java/modules/xmlbeans/test-resources/unreferenced.wsdl
Modified:
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/databinding/TypeMappingAdapter.java
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
    webservices/axis2/trunk/java/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java
    webservices/axis2/trunk/java/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2JavaTest.java

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/databinding/TypeMappingAdapter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/databinding/TypeMappingAdapter.java?rev=423041&r1=423040&r2=423041&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/databinding/TypeMappingAdapter.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/databinding/TypeMappingAdapter.java Tue Jul 18 03:38:24 2006
@@ -17,6 +17,7 @@
 package org.apache.axis2.wsdl.databinding;
 
 import org.apache.axis2.namespace.Constants;
+import org.apache.axis2.wsdl.i18n.CodegenMessages;
 import org.apache.axiom.om.OMElement;
 
 import javax.xml.namespace.QName;
@@ -32,7 +33,6 @@
      */
     protected String defaultClassName = OMElement.class.getName();
 
-    //todo get this from a constant
     protected static final String XSD_SCHEMA_URL = Constants.URI_2001_SCHEMA_XSD;
 
     //hashmap that contains the type mapping names
@@ -66,12 +66,21 @@
             Object o = qName2NameMap.get(qname);
             if (o != null) {
                 return (String) o;
-            } else {
+            } else if (Constants.XSD_ANYTYPE.equals(qname) ||
+                     Constants.XSD_ANY.equals(qname)) {
                 return defaultClassName;
+            }else{
+                throw new UnmatchedTypeException(
+                        CodegenMessages.getMessage("databinding.typemapper.typeunmatched",
+                                qname.getLocalPart(),
+                                qname.getNamespaceURI())
+                );
             }
+        }else{
+           return null;
         }
 
-        return null;
+
     }
 
     /**

Added: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/databinding/UnmatchedTypeException.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/databinding/UnmatchedTypeException.java?rev=423041&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/databinding/UnmatchedTypeException.java (added)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/databinding/UnmatchedTypeException.java Tue Jul 18 03:38:24 2006
@@ -0,0 +1,37 @@
+package org.apache.axis2.wsdl.databinding;
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * A simple exception that will be thrown if a type is not matched!
+ */
+public class UnmatchedTypeException extends RuntimeException{
+
+    public UnmatchedTypeException() {
+    }
+
+    public UnmatchedTypeException(String message) {
+        super(message);
+    }
+
+    public UnmatchedTypeException(Throwable cause) {
+        super(cause);
+    }
+
+    public UnmatchedTypeException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties?rev=423041&r1=423040&r2=423041&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties Tue Jul 18 03:38:24 2006
@@ -88,6 +88,10 @@
 emitter.switchingMessages=Warning -No services found - switched to the interface mode!
 emitter.warningMultiplePorttypes=Warning - Found multiple porttypes - picking the first
 
+# Type mappers
+databinding.typemapper.typeunmatched=No type was mapped to the name {0} with namespace {1}
+databinding.typemapper.typeunmatched.null=No type can be matched to a null QName!
+
 ##################### java2WSDL
 java2wsdl.arg1=Usage java2wsdl -cn <fully qualified class name> : class file name
 java2wsdl.arg2=-o <output Location> : output file location

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java?rev=423041&r1=423040&r2=423041&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java Tue Jul 18 03:38:24 2006
@@ -1,7 +1,6 @@
 package org.apache.axis2.description;
 
 import com.ibm.wsdl.extensions.soap.SOAPConstants;
-import com.ibm.wsdl.util.xml.DOM2Writer;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.addressing.wsdl.WSDL11ActionHelper;
@@ -16,7 +15,6 @@
 import org.apache.ws.policy.PolicyReference;
 import org.apache.ws.policy.util.DOMPolicyReader;
 import org.apache.ws.policy.util.PolicyFactory;
-import org.apache.ws.commons.schema.XmlSchema;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
@@ -99,6 +97,12 @@
      */
     private List wrappableOperations = new ArrayList();
     public static final String WRAPPED_OUTPUTNAME_SUFFIX = "Response";
+    public static final String XML_NAMESPACE_URI = "http://www.w3.org/2000/xmlns/";
+    public static final String NAMESPACE_DECLARATION_PREFIX = "xmlns:";
+
+    private static int prefixCounter = 0;
+    public static final String NAMESPACE_URI = "namespace";
+    public static final String TRAGET_NAMESPACE = "targetNamespace";
 
     /**
      * constructor taking in the service name and the port name
@@ -151,6 +155,7 @@
 
     /**
      * populates a given service
+     * This is the only publicly accessible method in this class
      *
      * @return
      * @throws AxisFault
@@ -202,7 +207,7 @@
             }
 
             //add the newly created schemas
-             if (schemaElements != null && schemaElements.length > 0) {
+            if (schemaElements != null && schemaElements.length > 0) {
                 for (int i = 0; i < schemaElements.length; i++) {
                     Element schemaElement = schemaElements[i];
                     if (schemaElement != null) {
@@ -242,7 +247,7 @@
             Object o =  typesExtensibilityElements.get(i);
             if (o instanceof Schema){
                 Schema s = (Schema)o;
-                String targetNamespace = s.getElement().getAttribute("targetNamespace");
+                String targetNamespace = s.getElement().getAttribute(TRAGET_NAMESPACE);
                 schemaMap.put(targetNamespace,s.getElement());
             }
         }
@@ -1059,7 +1064,7 @@
                             Element namespaceImport = document.createElementNS(
                                     XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
                                     + XML_SCHEMA_IMPORT_LOCAL_NAME);
-                            namespaceImport.setAttribute("namespace", uri);
+                            namespaceImport.setAttribute(NAMESPACE_URI, uri);
                             //add this to the map
                             namespaceImportsMap.put(uri, namespaceImport);
                             //we also need to associate this uri with a prefix
@@ -1183,14 +1188,19 @@
                     .keySet().toArray(new String[namespacePrefixMap.size()]);
             for (int i = 0; i < nameSpaceDeclarationArray.length; i++) {
                 String s = nameSpaceDeclarationArray[i];
-                //todo - look for the namespace decalarations first before
-                // declaring them
-                schemaElement.setAttributeNS("http://www.w3.org/2000/xmlns/",
-                        "xmlns:" + namespacePrefixMap.get(s).toString(), s);
+                checkAndAddNamespaceDeclarations(s,namespacePrefixMap,schemaElement);
+            }
 
+             //add imports  - check whether it is the targetnamespace before
+            // adding
+            Element[] namespaceImports = (Element[]) namespaceImportsMap.values()
+                    .toArray(new Element[namespaceImportsMap.size()]);
+            for (int i = 0; i < namespaceImports.length; i++) {
+                if (!namespaceURI.equals(namespaceImports[i].getAttribute(NAMESPACE_URI))){
+                    schemaElement.appendChild(namespaceImports[i]);
+                }
             }
 
-            //attach the namespace decalarations if they are not the targetnamespace
             Element[] elementDeclarations = (Element[]) elementElementsList
                     .toArray(new Element[elementElementsList.size()]);
             for (int i = 0; i < elementDeclarations.length; i++) {
@@ -1198,7 +1208,7 @@
                         importNode(elementDeclarations[i],true));
             }
 
-
+            //don't return anything!!
             return null;
         } else {
             // there is no element in the
@@ -1211,17 +1221,18 @@
                     .keySet().toArray(new String[namespacePrefixMap.size()]);
             for (int i = 0; i < nameSpaceDeclarationArray.length; i++) {
                 String s = nameSpaceDeclarationArray[i];
-                schemaElement.setAttributeNS("http://www.w3.org/2000/xmlns/",
-                        "xmlns:" + namespacePrefixMap.get(s).toString(), s);
+                schemaElement.setAttributeNS(XML_NAMESPACE_URI,
+                        NAMESPACE_DECLARATION_PREFIX + namespacePrefixMap.get(s).toString(), s);
 
             }
 
             //add the targetNamespace
-            schemaElement.setAttributeNS("http://www.w3.org/2000/xmlns/",
+            schemaElement.setAttributeNS(XML_NAMESPACE_URI,
                     XMLNS_AXIS2WRAPPED, namespaceURI);
             schemaElement.setAttribute(XSD_TARGETNAMESPACE, namespaceURI);
             schemaElement.setAttribute(XSD_ELEMENT_FORM_DEFAULT, XSD_UNQUALIFIED);
 
+            //add imports
             Element[] namespaceImports = (Element[]) namespaceImportsMap.values()
                     .toArray(new Element[namespaceImportsMap.size()]);
             for (int i = 0; i < namespaceImports.length; i++) {
@@ -1229,6 +1240,7 @@
 
             }
 
+            //add element declarations
             Element[] elementDeclarations = (Element[]) elementElementsList
                     .toArray(new Element[elementElementsList.size()]);
             for (int i = 0; i < elementDeclarations.length; i++) {
@@ -1243,6 +1255,46 @@
     }
 
     /**
+     *
+     * @param namespaceDeclaration
+     * @param prefixMap
+     */
+    private void checkAndAddNamespaceDeclarations(String namespace,
+                                                  Map prefixMap,
+                                                  Element schemaElement) {
+        //get the attribute for the current namespace
+        String prefix = (String)prefixMap.get(namespace);
+        //A prefix must be found at this point!
+        String existingURL = schemaElement.getAttributeNS(
+                XML_NAMESPACE_URI,
+                NAMESPACE_DECLARATION_PREFIX + prefix);
+        if (existingURL==null){
+            //there is no existing URL by that prefix - declare a new namespace
+            schemaElement.setAttributeNS(XML_NAMESPACE_URI,
+                    NAMESPACE_DECLARATION_PREFIX + prefix,
+                    namespace);
+        }else if (existingURL.equals(namespace)){
+            //this namespace declaration is already there with the same prefix
+            //ignore it
+        }else{
+            //there is a different namespace declared in the given prefix
+            //change the prefix in the prefix map to a new one and declare it
+
+            //create a prefix
+            String generatedPrefix = "ns" +prefixCounter++;
+            while(prefixMap.containsKey(generatedPrefix)){
+                generatedPrefix = "ns" +prefixCounter++;
+            }
+            schemaElement.setAttributeNS(XML_NAMESPACE_URI,
+                    NAMESPACE_DECLARATION_PREFIX + generatedPrefix,
+                    namespace);
+            //add to the map
+            prefixMap.put(generatedPrefix,namespace);
+        }
+
+    }
+
+    /**
      * The intention of this procedure is to process the imports. When
      * processing the imports the imported documents will be populating the
      * items in the main document recursivley
@@ -1264,8 +1316,8 @@
                         Definition importedDef = wsdlImport.getDefinition();
                         if (importedDef != null) {
                             processImports(importedDef);
-                            //copy ns
 
+                            //copy ns
                             Map namespaces = importedDef.getNamespaces();
                             Iterator keys = namespaces.keySet().iterator();
                             while (keys.hasNext()) {
@@ -1304,6 +1356,7 @@
                             //add bindings
                             Map bindingMap = importedDef.getBindings();
                             wsdl4JDefinition.getBindings().putAll(bindingMap);
+
                             //add services
                             Map serviceMap = importedDef.getServices();
                             wsdl4JDefinition.getServices().putAll(serviceMap);
@@ -1326,6 +1379,7 @@
     private Definition readInTheWSDLFile(InputStream in) throws WSDLException {
 
         WSDLReader reader = WSDLFactory.newInstance().newWSDLReader();
+        
         //switch off the verbose mode for all usecases
         reader.setFeature("javax.wsdl.verbose", false);
 
@@ -1686,7 +1740,7 @@
             }
         }
 
-        //if no SOAPBinding is not present just return an empty list
+        //if SOAPBinding is not present just return an empty list
         if (!isSOAPBinding) {
             return new ArrayList();
         }

Modified: webservices/axis2/trunk/java/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java?rev=423041&r1=423040&r2=423041&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java (original)
+++ webservices/axis2/trunk/java/modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java Tue Jul 18 03:38:24 2006
@@ -99,7 +99,6 @@
                 return new DefaultTypeMapper();
             }
 
-
             SchemaTypeSystem sts;
             List completeSchemaList = new ArrayList();
             List topLevelSchemaList = new ArrayList();

Added: webservices/axis2/trunk/java/modules/xmlbeans/test-resources/unreferenced.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/xmlbeans/test-resources/unreferenced.wsdl?rev=423041&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/xmlbeans/test-resources/unreferenced.wsdl (added)
+++ webservices/axis2/trunk/java/modules/xmlbeans/test-resources/unreferenced.wsdl Tue Jul 18 03:38:24 2006
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions
+	xmlns="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:tns="http://soapinterop.org/wsdl"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	xmlns:ns2="http://soapinterop.org/types"
+	xmlns:ns3="http://soapinterop.org/types/part"
+	xmlns:ns4="http://soapinterop.org/types/requestresponse"
+	targetNamespace="http://soapinterop.org/wsdl">
+
+	<types>
+		<schema
+			xmlns="http://www.w3.org/2001/XMLSchema"
+			xmlns:tns="http://soapinterop.org/types"
+			targetNamespace="http://soapinterop.org/types">
+
+			<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+
+			<complexType name="SOAPStruct">
+				<sequence>
+					<element name="varString" type="xsd:string"/>
+					<element name="varInt" type="xsd:int"/>
+					<element name="varFloat" type="xsd:float"/>
+				</sequence>
+			</complexType>
+
+			<complexType name="SOAPStructFault">
+				<sequence>
+					<element name="soapStruct" type="tns:SOAPStruct"/>
+				</sequence>
+			</complexType>
+
+			<complexType name="BaseStruct">
+				<sequence>
+					<element name="structMessage" type="tns:SOAPStruct"/>
+					<element name="shortMessage" type="xsd:short"/>
+				</sequence>
+			</complexType>
+
+			<complexType name="ExtendedStruct">
+				<complexContent>
+					<extension base="tns:BaseStruct">
+						<sequence>
+							<element name="stringMessage" type="xsd:string"/>
+							<element name="intMessage" type="xsd:int"/>
+							<element name="anotherIntMessage" type="xsd:int"/>
+						</sequence>
+					</extension>
+				</complexContent>
+			</complexType>
+
+			<complexType name="MoreExtendedStruct">
+				<complexContent>
+					<extension base="tns:ExtendedStruct">
+						<sequence>
+							<element name="booleanMessage" type="xsd:boolean"/>
+						</sequence>
+					</extension>
+				</complexContent>
+			</complexType>
+
+		</schema>
+
+		<schema
+			xmlns="http://www.w3.org/2001/XMLSchema"
+			xmlns:tns="http://soapinterop.org/types/part"
+			targetNamespace="http://soapinterop.org/types/part">
+
+			<element name="SOAPStructFaultPart" type="ns2:SOAPStructFault"/>
+			<element name="BaseStructPart" type="ns2:BaseStruct"/>
+			<element name="ExtendedStructPart" type="ns2:ExtendedStruct"/>
+			<element name="MoreExtendedStructPart" type="ns2:MoreExtendedStruct"/>
+
+		</schema>
+
+		<schema
+			xmlns="http://www.w3.org/2001/XMLSchema"
+			xmlns:tns="http://soapinterop.org/types/requestresponse"
+			targetNamespace="http://soapinterop.org/types/requestresponse">
+
+			<element name="echoSOAPStructFaultRequest" type="ns2:SOAPStruct"/>
+			<element name="echoSOAPStructFaultResponse">
+				<complexType/>
+			</element>
+
+			<element name="echoBaseStructFaultRequest" type="ns2:BaseStruct"/>
+			<element name="echoBaseStructFaultResponse">
+				<complexType/>
+			</element>
+
+			<element name="echoExtendedStructFaultRequest" type="ns2:ExtendedStruct"/>
+			<element name="echoExtendedStructFaultResponse">
+				<complexType/>
+			</element>
+
+			<element name="echoMultipleFaults1Request">
+				<complexType>
+					<sequence>
+						<element name="whichFault" type="xsd:int"/>
+						<element name="param1" type="ns2:SOAPStruct"/>
+						<element name="param2" type="ns2:BaseStruct"/>
+					</sequence>
+				</complexType>
+			</element>
+			<element name="echoMultipleFaults1Response">
+				<complexType/>
+			</element>
+
+			<element name="echoMultipleFaults2Request">
+				<complexType>
+					<sequence>
+						<element name="whichFault" type="xsd:int"/>
+						<element name="param1" type="ns2:BaseStruct"/>
+						<element name="param2" type="ns2:ExtendedStruct"/>
+						<element name="param3" type="ns2:MoreExtendedStruct"/>
+					</sequence>
+				</complexType>
+			</element>
+			<element name="echoMultipleFaults2Response">
+				<complexType/>
+			</element>
+
+		</schema>
+	</types>
+
+    <!-- Some part references are  misspelled-->
+    <message name="echoSOAPStructFaultRequest">
+		<part name="param" element="ns4:echoSOAPStructFaultRequest1"/>
+	</message>
+	<message name="echoSOAPStructFaultResponse">
+		<part name="param" element="ns4:echoSOAPStructFaultResponse2"/>
+	</message>
+
+	<message name="echoBaseStructFaultRequest">
+		<part name="param" element="ns4:echoBaseStructFaultRequest1"/>
+	</message>
+	<message name="echoBaseStructFaultResponse">
+		<part name="param" element="ns4:echoBaseStructFaultResponse"/>
+	</message>
+
+	<message name="echoExtendedStructFaultRequest">
+		<part name="param" element="ns4:echoExtendedStructFaultRequest"/>
+	</message>
+	<message name="echoExtendedStructFaultResponse">
+		<part name="param" element="ns4:echoExtendedStructFaultResponse"/>
+	</message>
+
+	<message name="echoMultipleFaults1Request">
+		<part name="param" element="ns4:echoMultipleFaults1Request"/>
+	</message>
+	<message name="echoMultipleFaults1Response">
+		<part name="param" element="ns4:echoMultipleFaults1Response"/>
+	</message>
+
+	<message name="echoMultipleFaults2Request">
+		<part name="param" element="ns4:echoMultipleFaults2Request"/>
+	</message>
+	<message name="echoMultipleFaults2Response">
+		<part name="param" element="ns4:echoMultipleFaults2Response"/>
+	</message>
+
+	<!-- Fault messages -->
+	<message name="SOAPStructFault">
+		<part name="part3" element="ns3:SOAPStructFaultPart"/>
+	</message>
+	<message name="BaseStructFault">
+		<part name="part1" element="ns3:BaseStructPart"/>
+	</message>
+	<message name="ExtendedStructFault">
+		<part name="part2" element="ns3:ExtendedStructPart"/>
+	</message>
+	<message name="MoreExtendedStructFault">
+		<part name="part5" element="ns3:MoreExtendedStructPart"/>
+	</message>
+
+	<portType name="ComplexDocLitPortType">
+		<!--
+			Throws a fault with an embedded SOAPStruct
+		-->
+		<operation name="echoSOAPStructFault" parameterOrder="">
+			<input message="tns:echoSOAPStructFaultRequest"/>
+			<output message="tns:echoSOAPStructFaultResponse"/>
+			<fault name="ComplexFault" message="tns:SOAPStructFault"/>
+		</operation>
+
+		<!--
+			Throws a fault with a base complex struct
+		-->
+		<operation name="echoBaseStructFault" parameterOrder="">
+			<input message="tns:echoBaseStructFaultRequest"/>
+			<output message="tns:echoBaseStructFaultResponse"/>
+			<fault name="ComplexFault" message="tns:BaseStructFault"/>
+		</operation>
+
+		<!--
+			Throws a fault with an en extended complex type
+		-->
+		<operation name="echoExtendedStructFault" parameterOrder="">
+			<input message="tns:echoExtendedStructFaultRequest"/>
+			<output message="tns:echoExtendedStructFaultResponse"/>
+			<fault name="ComplexFault" message="tns:ExtendedStructFault"/>
+		</operation>
+
+		<!--
+			Throws a fault with embedded complex type, fault with an
+			extended complex type and fault with an array of a base
+			complex type
+		-->
+		<operation name="echoMultipleFaults1" parameterOrder="param">
+			<input message="tns:echoMultipleFaults1Request"/>
+			<output message="tns:echoMultipleFaults1Response"/>
+			<fault name="ComplexFault1" message="tns:SOAPStructFault"/>
+			<fault name="ComplexFault2" message="tns:BaseStructFault"/>
+		</operation>
+
+		<!--
+			Throws a fault with an array of base complex type and
+			a fault with doubly extended complex type
+		-->
+		<operation name="echoMultipleFaults2" parameterOrder="param">
+			<input message="tns:echoMultipleFaults2Request"/>
+			<output message="tns:echoMultipleFaults2Response"/>
+			<fault name="ComplexFault1" message="tns:BaseStructFault"/>
+			<fault name="ComplexFault2" message="tns:ExtendedStructFault"/>
+			<fault name="ComplexFault3" message="tns:MoreExtendedStructFault"/>
+		</operation>
+	</portType>
+
+	<binding name="ComplexDocLitBinding" type="tns:ComplexDocLitPortType">
+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+		<operation name="echoSOAPStructFault">
+			<input>
+				<soap:body use="literal"/>
+			</input>
+			<output>
+				<soap:body use="literal"/>
+			</output>
+			<fault name="ComplexFault">
+				<soap:fault
+					name="ComplexFault"
+					use="literal"/>
+			</fault>
+			<soap:operation soapAction=""/>
+		</operation>
+
+		<operation name="echoBaseStructFault">
+			<input>
+				<soap:body use="literal"/>
+			</input>
+			<output>
+				<soap:body use="literal"/>
+			</output>
+			<fault name="ComplexFault">
+				<soap:fault
+					name="ComplexFault"
+					use="literal"/>
+			</fault>
+			<soap:operation soapAction=""/>
+		</operation>
+
+		<operation name="echoExtendedStructFault">
+			<input>
+				<soap:body use="literal"/>
+			</input>
+			<output>
+				<soap:body use="literal"/>
+			</output>
+			<fault name="ComplexFault">
+				<soap:fault
+					name="ComplexFault"
+					use="literal"/>
+			</fault>
+			<soap:operation soapAction=""/>
+		</operation>
+
+		<operation name="echoMultipleFaults1">
+			<input>
+				<soap:body use="literal"/>
+			</input>
+			<output>
+				<soap:body use="literal"/>
+			</output>
+			<fault name="ComplexFault1">
+				<soap:fault 
+					name="ComplexFault1"
+					use="literal"/>
+			</fault>
+			<fault name="ComplexFault2">
+				<soap:fault
+					name="ComplexFault2"
+					use="literal"/>
+			</fault>
+			<soap:operation soapAction=""/>
+		</operation>
+
+		<operation name="echoMultipleFaults2">
+			<input>
+				<soap:body use="literal"/>
+			</input>
+			<output>
+				<soap:body use="literal"/>
+			</output>
+			<fault name="ComplexFault1">
+				<soap:fault
+					name="ComplexFault1"
+					use="literal"/>
+			</fault>
+			<fault name="ComplexFault2">
+				<soap:fault 
+					name="ComplexFault2"
+					use="literal"/>
+			</fault>
+			<fault name="ComplexFault3">
+				<soap:fault 
+					name="ComplexFault3"
+					use="literal"/>
+			</fault>
+			<soap:operation soapAction=""/>
+		</operation>
+	</binding>
+
+	<service name="ComplexDocLitService">
+		<port name="ComplexDocLitPort" binding="tns:ComplexDocLitBinding">
+			<soap:address
+				location="http://localhost:8080/axis/services/ComplexDocLitPort"/>
+		</port>
+	</service>
+</definitions>
+

Modified: webservices/axis2/trunk/java/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2JavaTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2JavaTest.java?rev=423041&r1=423040&r2=423041&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2JavaTest.java (original)
+++ webservices/axis2/trunk/java/modules/xmlbeans/test/org/apache/axis2/xmlbeans/WSDL2JavaTest.java Tue Jul 18 03:38:24 2006
@@ -184,6 +184,19 @@
         }
     }
 
+     /**
+     * Test for the mime doc
+     */
+    public void testCodeGenerationUnreferenced(){
+        String wsdlName = "unreferenced.wsdl";
+        try {
+            generateAndCompile(wsdlName, OUTPUT_LOCATION_BASE+OUTPUT_LOCATION_PREFIX+folderCount++);
+            fail("Code generation should fail with  "+ wsdlName);
+        } catch (CodeGenerationException e) {
+
+        }
+    }
+
 //     /**
 //     * Test for the dime doc
 //     */
@@ -224,7 +237,7 @@
     /**
      * Test for the modified ping-unboond wsdl.
      * The binding is removed in this wsdl.Codegen should fail for this
-     * WSDL by saying
+     * WSDL by saying  no binding!
      *
      */
     public void testCodeGenerationPingUnbound(){



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org