TUSCANY-3778 - changes to demonstrate the issues described in the JIRA. The failing tests are commented out.


git-svn-id: https://svn.apache.org/repos/asf/tuscany/sca-java-1.x/trunk@1033436 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/itest/wsdlgen/src/main/java/helloworld/HelloWorldClientImpl.java b/itest/wsdlgen/src/main/java/helloworld/HelloWorldClientImpl.java
index 04fbe69..4ee6056 100644
--- a/itest/wsdlgen/src/main/java/helloworld/HelloWorldClientImpl.java
+++ b/itest/wsdlgen/src/main/java/helloworld/HelloWorldClientImpl.java
@@ -23,6 +23,7 @@
 import org.osoa.sca.annotations.Service;
 
 import yetanotherpackage.DBean;
+import yetanotherpackage.HelloWorldException;
 
 import anotherpackage.BBean;
 import anotherpackage.CBean;
@@ -64,5 +65,13 @@
     
     public String getGreetingsDBean(DBean bean){
         return "Hello " + hwService.getGreetingsDBean(bean);
-    }      
+    } 
+    
+    public String getGreetingsException(String input) throws HelloWorldException {
+    	return hwService.getGreetingsException(input);
+    }
+    
+    public byte[] getGreetingsByteArray(byte[] input) {
+    	return input;
+    }
 }
diff --git a/itest/wsdlgen/src/main/java/helloworld/HelloWorldImpl.java b/itest/wsdlgen/src/main/java/helloworld/HelloWorldImpl.java
index a92a819..7dc779c 100644
--- a/itest/wsdlgen/src/main/java/helloworld/HelloWorldImpl.java
+++ b/itest/wsdlgen/src/main/java/helloworld/HelloWorldImpl.java
@@ -23,6 +23,7 @@
 import org.osoa.sca.annotations.Service;
 
 import yetanotherpackage.DBean;
+import yetanotherpackage.HelloWorldException;
 
 import anotherpackage.BBean;
 import anotherpackage.CBean;
@@ -65,5 +66,14 @@
         return "Hello " + bean.getField1() + " " + bean.getField2() + " "
                 + bean.getField3().getField1() + " "
                 + bean.getField3().getField2();
-    }    
+    }   
+    
+    public String getGreetingsException(String input) throws HelloWorldException {
+    	throw new HelloWorldException("Hello " + input);
+    }
+    
+    public byte[] getGreetingsByteArray(byte[] input){
+    	System.out.println(String.valueOf(input));
+    	return input;
+    }
 }
diff --git a/itest/wsdlgen/src/main/java/helloworld/HelloWorldService.java b/itest/wsdlgen/src/main/java/helloworld/HelloWorldService.java
index 6b0425d..f62a998 100644
--- a/itest/wsdlgen/src/main/java/helloworld/HelloWorldService.java
+++ b/itest/wsdlgen/src/main/java/helloworld/HelloWorldService.java
@@ -23,6 +23,7 @@
 import org.osoa.sca.annotations.Remotable;
 
 import yetanotherpackage.DBean;
+import yetanotherpackage.HelloWorldException;
 
 import anotherpackage.BBean;
 import anotherpackage.CBean;
@@ -33,13 +34,20 @@
 @WebService
 @Remotable
 public interface HelloWorldService {
+	
+    // primitives
+	public String getGreetings(String name);
+    byte[] getGreetingsByteArray(byte[] input);
+    String getGreetingsException(String input) throws HelloWorldException;
 
-    public String getGreetings(String name);
+	// beans
     public String getGreetingsBean(ABean bean);
     public String getGreetingsBeanArray(ABean[] bean);
-    //public String getGreetingsBeanVector(Vector<ABean> bean);
     public String getGreetingsBBean(BBean bean);
     public String getGreetingsCBean(CBean bean);
     public String getGreetingsDBean(DBean bean);
+    
+    // collections
+    //public String getGreetingsBeanVector(Vector<ABean> bean);
 }
 
diff --git a/itest/wsdlgen/src/main/java/yetanotherpackage/HelloWorldException.java b/itest/wsdlgen/src/main/java/yetanotherpackage/HelloWorldException.java
new file mode 100644
index 0000000..caf0c35
--- /dev/null
+++ b/itest/wsdlgen/src/main/java/yetanotherpackage/HelloWorldException.java
@@ -0,0 +1,44 @@
+/*

+ * 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 yetanotherpackage;

+

+public class HelloWorldException extends Exception {

+

+	public HelloWorldException() {

+	}

+

+	public HelloWorldException(String message) {

+		super(message);

+	}

+

+	public HelloWorldException(Throwable cause) {

+		super(cause);

+	}

+

+	public HelloWorldException(String message, Throwable cause) {

+		super(message, cause);

+	}

+

+/*	

+	public HelloWorldException(String message, String errorCode) {

+		super(message, errorCode);

+	}

+*/	

+

+}

diff --git a/itest/wsdlgen/src/main/resources/wsdl/HelloWorldService_TuscanyGen.wsdl b/itest/wsdlgen/src/main/resources/wsdl/HelloWorldService_TuscanyGen.wsdl
index 185aa2c..a8bf30c 100644
--- a/itest/wsdlgen/src/main/resources/wsdl/HelloWorldService_TuscanyGen.wsdl
+++ b/itest/wsdlgen/src/main/resources/wsdl/HelloWorldService_TuscanyGen.wsdl
@@ -22,42 +22,49 @@
 
 <wsdl:definitions name="HelloWorldServiceService"
 	targetNamespace="http://helloworld/" xmlns="http://helloworld/"
-	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
-	xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:SOAP11="http://schemas.xmlsoap.org/wsdl/soap/">
+	xmlns:ns4="http://yetanotherpackage/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:SOAP11="http://schemas.xmlsoap.org/wsdl/soap/">
 	<wsdl:types>
+		<xs:schema targetNamespace="http://test" version="1.0"
+			xmlns:__nnns="http://helloworld/" xmlns:tns="http://test"
+			xmlns:xs="http://www.w3.org/2001/XMLSchema">
+			<xs:import namespace="http://helloworld/" />
+			<xs:complexType name="aBean">
+				<xs:sequence>
+					<xs:element minOccurs="0" name="field1" type="xs:string" />
+					<xs:element minOccurs="0" name="field2" type="xs:string" />
+					<xs:element minOccurs="0" name="field3" type="__nnns:bBean" />
+				</xs:sequence>
+			</xs:complexType>
+			<xs:complexType final="#all" name="aBeanArray">
+				<xs:sequence>
+					<xs:element maxOccurs="unbounded" minOccurs="0" name="item"
+						nillable="true" type="tns:aBean" />
+				</xs:sequence>
+			</xs:complexType>
+		</xs:schema>
+		<xs:schema targetNamespace="http://yetanotherpackage/"
+			version="1.0" xmlns:tns="http://yetanotherpackage/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+			<xs:element name="HelloWorldException" type="tns:HelloWorldException" />
+			<xs:complexType name="HelloWorldException">
+				<xs:sequence>
+					<xs:element minOccurs="0" name="message" type="xs:string" />
+				</xs:sequence>
+			</xs:complexType>
+		</xs:schema>
 		<xs:schema attributeFormDefault="qualified"
 			elementFormDefault="unqualified" targetNamespace="http://helloworld/"
 			xmlns:ns0="http://test" xmlns:tns="http://helloworld/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 			<xs:import namespace="http://test" />
-			<xs:element name="getGreetingsBean">
+			<xs:element name="getGreetingsByteArrayResponse">
 				<xs:complexType>
 					<xs:sequence>
-						<xs:element minOccurs="0" name="arg0" nillable="true"
-							type="ns0:aBean" />
+						<xs:element minOccurs="0" name="return" nillable="true"
+							type="xs:byte" />
 					</xs:sequence>
 				</xs:complexType>
 			</xs:element>
-			<xs:element name="getGreetingsDBean">
-				<xs:complexType>
-					<xs:sequence>
-						<xs:element minOccurs="0" name="arg0" nillable="true"
-							type="tns:dBean" />
-					</xs:sequence>
-				</xs:complexType>
-			</xs:element>
-			<xs:element name="getGreetings">
-				<xs:complexType>
-					<xs:sequence>
-						<xs:element minOccurs="0" name="arg0" nillable="true"
-							type="xs:string" />
-					</xs:sequence>
-				</xs:complexType>
-			</xs:element>
-			<xs:element name="getGreetingsCBean">
-				<xs:complexType>
-					<xs:sequence/>
-				</xs:complexType>
-			</xs:element>
 			<xs:element name="getGreetingsDBeanResponse">
 				<xs:complexType>
 					<xs:sequence>
@@ -66,22 +73,6 @@
 					</xs:sequence>
 				</xs:complexType>
 			</xs:element>
-			<xs:element name="getGreetingsCBeanResponse">
-				<xs:complexType>
-					<xs:sequence>
-						<xs:element minOccurs="0" name="return" nillable="true"
-							type="xs:string" />
-					</xs:sequence>
-				</xs:complexType>
-			</xs:element>
-			<xs:element name="getGreetingsBBean">
-				<xs:complexType>
-					<xs:sequence>
-						<xs:element minOccurs="0" name="arg0" nillable="true"
-							type="tns:bBean" />
-					</xs:sequence>
-				</xs:complexType>
-			</xs:element>
 			<xs:element name="getGreetingsResponse">
 				<xs:complexType>
 					<xs:sequence>
@@ -106,14 +97,6 @@
 					</xs:sequence>
 				</xs:complexType>
 			</xs:element>
-			<xs:element name="getGreetingsBBeanResponse">
-				<xs:complexType>
-					<xs:sequence>
-						<xs:element minOccurs="0" name="return" nillable="true"
-							type="xs:string" />
-					</xs:sequence>
-				</xs:complexType>
-			</xs:element>
 			<xs:element name="getGreetingsBeanArray">
 				<xs:complexType>
 					<xs:sequence>
@@ -122,6 +105,87 @@
 					</xs:sequence>
 				</xs:complexType>
 			</xs:element>
+			<xs:element name="getGreetingsBean">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element minOccurs="0" name="arg0" nillable="true"
+							type="ns0:aBean" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="getGreetings">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element minOccurs="0" name="arg0" nillable="true"
+							type="xs:string" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="getGreetingsDBean">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element minOccurs="0" name="arg0" nillable="true"
+							type="tns:dBean" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="getGreetingsCBean">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element minOccurs="0" name="arg0" nillable="true"
+							type="" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="getGreetingsCBeanResponse">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element minOccurs="0" name="return" nillable="true"
+							type="xs:string" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="getGreetingsExceptionResponse">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element minOccurs="0" name="return" nillable="true"
+							type="xs:string" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="getGreetingsBBean">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element minOccurs="0" name="arg0" nillable="true"
+							type="tns:bBean" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="getGreetingsByteArray">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element minOccurs="0" name="arg0" nillable="true"
+							type="xs:byte" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="getGreetingsException">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element minOccurs="0" name="arg0" nillable="true"
+							type="xs:string" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="getGreetingsBBeanResponse">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element minOccurs="0" name="return" nillable="true"
+							type="xs:string" />
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+
 			<xs:complexType name="bBean">
 				<xs:sequence>
 					<xs:element minOccurs="0" name="field1" type="xs:string" />
@@ -136,62 +200,26 @@
 				</xs:sequence>
 			</xs:complexType>
 		</xs:schema>
-		<xs:schema targetNamespace="http://test" version="1.0"
-			xmlns:__nnns="http://helloworld/" xmlns:tns="http://test"
-			xmlns:xs="http://www.w3.org/2001/XMLSchema">
-			<xs:import namespace="http://helloworld/" />
-			<xs:complexType name="aBean">
-				<xs:sequence>
-					<xs:element minOccurs="0" name="field1" type="xs:string" />
-					<xs:element minOccurs="0" name="field2" type="xs:string" />
-					<xs:element minOccurs="0" name="field3" type="__nnns:bBean" />
-				</xs:sequence>
-			</xs:complexType>
-			<xs:complexType final="#all" name="aBeanArray">
-				<xs:sequence>
-					<xs:element maxOccurs="unbounded" minOccurs="0" name="item"
-						nillable="true" type="tns:aBean" />
-				</xs:sequence>
-			</xs:complexType>
-		</xs:schema>
 	</wsdl:types>
-	<wsdl:message name="getGreetingsBean">
-		<wsdl:part name="getGreetingsBean" element="getGreetingsBean">
+	<wsdl:message name="getGreetingsByteArrayResponse">
+		<wsdl:part name="getGreetingsByteArrayResponse" element="getGreetingsByteArrayResponse">
 		</wsdl:part>
 	</wsdl:message>
-	<wsdl:message name="getGreetingsDBean">
-		<wsdl:part name="getGreetingsDBean" element="getGreetingsDBean">
-
-		</wsdl:part>
-	</wsdl:message>
-	<wsdl:message name="getGreetings">
-		<wsdl:part name="getGreetings" element="getGreetings">
-		</wsdl:part>
-	</wsdl:message>
-	<wsdl:message name="getGreetingsCBean">
-		<wsdl:part name="getGreetingsCBean" element="getGreetingsCBean">
-		</wsdl:part>
-
-	</wsdl:message>
 	<wsdl:message name="getGreetingsDBeanResponse">
 		<wsdl:part name="getGreetingsDBeanResponse" element="getGreetingsDBeanResponse">
-		</wsdl:part>
-	</wsdl:message>
-	<wsdl:message name="getGreetingsCBeanResponse">
-		<wsdl:part name="getGreetingsCBeanResponse" element="getGreetingsCBeanResponse">
-		</wsdl:part>
-	</wsdl:message>
 
-	<wsdl:message name="getGreetingsBBean">
-		<wsdl:part name="getGreetingsBBean" element="getGreetingsBBean">
+		</wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="HelloWorldException">
+		<wsdl:part name="HelloWorldException" element="ns4:HelloWorldException">
 		</wsdl:part>
 	</wsdl:message>
 	<wsdl:message name="getGreetingsResponse">
 		<wsdl:part name="getGreetingsResponse" element="getGreetingsResponse">
 		</wsdl:part>
+
 	</wsdl:message>
 	<wsdl:message name="getGreetingsBeanResponse">
-
 		<wsdl:part name="getGreetingsBeanResponse" element="getGreetingsBeanResponse">
 		</wsdl:part>
 	</wsdl:message>
@@ -199,19 +227,59 @@
 		<wsdl:part name="getGreetingsBeanArrayResponse" element="getGreetingsBeanArrayResponse">
 		</wsdl:part>
 	</wsdl:message>
-	<wsdl:message name="getGreetingsBBeanResponse">
-		<wsdl:part name="getGreetingsBBeanResponse" element="getGreetingsBBeanResponse">
 
-		</wsdl:part>
-	</wsdl:message>
 	<wsdl:message name="getGreetingsBeanArray">
 		<wsdl:part name="getGreetingsBeanArray" element="getGreetingsBeanArray">
 		</wsdl:part>
 	</wsdl:message>
+	<wsdl:message name="getGreetingsBean">
+		<wsdl:part name="getGreetingsBean" element="getGreetingsBean">
+		</wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="getGreetings">
+
+		<wsdl:part name="getGreetings" element="getGreetings">
+		</wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="getGreetingsDBean">
+		<wsdl:part name="getGreetingsDBean" element="getGreetingsDBean">
+		</wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="getGreetingsCBean">
+		<wsdl:part name="getGreetingsCBean" element="getGreetingsCBean">
+
+		</wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="getGreetingsCBeanResponse">
+		<wsdl:part name="getGreetingsCBeanResponse" element="getGreetingsCBeanResponse">
+		</wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="getGreetingsExceptionResponse">
+		<wsdl:part name="getGreetingsExceptionResponse" element="getGreetingsExceptionResponse">
+		</wsdl:part>
+
+	</wsdl:message>
+	<wsdl:message name="getGreetingsBBean">
+		<wsdl:part name="getGreetingsBBean" element="getGreetingsBBean">
+		</wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="getGreetingsByteArray">
+		<wsdl:part name="getGreetingsByteArray" element="getGreetingsByteArray">
+		</wsdl:part>
+	</wsdl:message>
+
+	<wsdl:message name="getGreetingsException">
+		<wsdl:part name="getGreetingsException" element="getGreetingsException">
+		</wsdl:part>
+	</wsdl:message>
+	<wsdl:message name="getGreetingsBBeanResponse">
+		<wsdl:part name="getGreetingsBBeanResponse" element="getGreetingsBBeanResponse">
+		</wsdl:part>
+	</wsdl:message>
 	<wsdl:portType name="HelloWorldService">
+
 		<wsdl:operation name="getGreetings">
 			<wsdl:input message="getGreetings">
-
 			</wsdl:input>
 			<wsdl:output message="getGreetingsResponse">
 			</wsdl:output>
@@ -219,11 +287,30 @@
 		<wsdl:operation name="getGreetingsDBean">
 			<wsdl:input message="getGreetingsDBean">
 			</wsdl:input>
+
 			<wsdl:output message="getGreetingsDBeanResponse">
 			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="getGreetingsByteArray">
+			<wsdl:input message="getGreetingsByteArray">
+			</wsdl:input>
+			<wsdl:output message="getGreetingsByteArrayResponse">
+			</wsdl:output>
+		</wsdl:operation>
 
+		<wsdl:operation name="getGreetingsException">
+			<wsdl:input message="getGreetingsException">
+			</wsdl:input>
+			<wsdl:output message="getGreetingsExceptionResponse">
+			</wsdl:output>
+<!-- TUSCANY-3778 - corrected manually 			
+			<wsdl:fault name="HelloWorldException" message="ns4:HelloWorldException">
+-->
+			<wsdl:fault name="HelloWorldException" message="HelloWorldException">
+			</wsdl:fault>
 		</wsdl:operation>
 		<wsdl:operation name="getGreetingsBean">
+
 			<wsdl:input message="getGreetingsBean">
 			</wsdl:input>
 			<wsdl:output message="getGreetingsBeanResponse">
@@ -231,9 +318,9 @@
 		</wsdl:operation>
 		<wsdl:operation name="getGreetingsBeanArray">
 			<wsdl:input message="getGreetingsBeanArray">
-
 			</wsdl:input>
 			<wsdl:output message="getGreetingsBeanArrayResponse">
+
 			</wsdl:output>
 		</wsdl:operation>
 		<wsdl:operation name="getGreetingsBBean">
@@ -241,9 +328,9 @@
 			</wsdl:input>
 			<wsdl:output message="getGreetingsBBeanResponse">
 			</wsdl:output>
-
 		</wsdl:operation>
 		<wsdl:operation name="getGreetingsCBean">
+
 			<wsdl:input message="getGreetingsCBean">
 			</wsdl:input>
 			<wsdl:output message="getGreetingsCBeanResponse">
@@ -251,10 +338,10 @@
 		</wsdl:operation>
 	</wsdl:portType>
 	<wsdl:binding name="HelloWorldServiceBinding" type="HelloWorldService">
-
 		<SOAP:binding style="document"
 			transport="http://schemas.xmlsoap.org/soap/http" />
 		<wsdl:operation name="getGreetings">
+
 			<SOAP:operation />
 			<wsdl:input>
 				<SOAP:body use="literal" />
@@ -262,9 +349,9 @@
 			<wsdl:output>
 				<SOAP:body use="literal" />
 			</wsdl:output>
-
 		</wsdl:operation>
 		<wsdl:operation name="getGreetingsDBean">
+
 			<SOAP:operation />
 			<wsdl:input>
 				<SOAP:body use="literal" />
@@ -272,7 +359,30 @@
 			<wsdl:output>
 				<SOAP:body use="literal" />
 			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="getGreetingsByteArray">
 
+			<SOAP:operation />
+			<wsdl:input>
+				<SOAP:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<SOAP:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="getGreetingsException">
+
+			<SOAP:operation />
+			<wsdl:input>
+				<SOAP:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<SOAP:body use="literal" />
+			</wsdl:output>
+			<wsdl:fault name="HelloWorldException">
+				<SOAP:fault name="HelloWorldException" use="literal" />
+
+			</wsdl:fault>
 		</wsdl:operation>
 		<wsdl:operation name="getGreetingsBean">
 			<SOAP:operation />
@@ -281,8 +391,8 @@
 			</wsdl:input>
 			<wsdl:output>
 				<SOAP:body use="literal" />
-			</wsdl:output>
 
+			</wsdl:output>
 		</wsdl:operation>
 		<wsdl:operation name="getGreetingsBeanArray">
 			<SOAP:operation />
@@ -291,8 +401,8 @@
 			</wsdl:input>
 			<wsdl:output>
 				<SOAP:body use="literal" />
-			</wsdl:output>
 
+			</wsdl:output>
 		</wsdl:operation>
 		<wsdl:operation name="getGreetingsBBean">
 			<SOAP:operation />
@@ -301,8 +411,8 @@
 			</wsdl:input>
 			<wsdl:output>
 				<SOAP:body use="literal" />
-			</wsdl:output>
 
+			</wsdl:output>
 		</wsdl:operation>
 		<wsdl:operation name="getGreetingsCBean">
 			<SOAP:operation />
@@ -311,8 +421,8 @@
 			</wsdl:input>
 			<wsdl:output>
 				<SOAP:body use="literal" />
-			</wsdl:output>
 
+			</wsdl:output>
 		</wsdl:operation>
 	</wsdl:binding>
 
diff --git a/itest/wsdlgen/src/test/java/helloworld/HttpTransportTestCase.java b/itest/wsdlgen/src/test/java/helloworld/HttpTransportTestCase.java
index 22f154f..8d1694d 100644
--- a/itest/wsdlgen/src/test/java/helloworld/HttpTransportTestCase.java
+++ b/itest/wsdlgen/src/test/java/helloworld/HttpTransportTestCase.java
@@ -20,9 +20,9 @@
 
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.fail;
 
 import java.io.IOException;
-import java.net.HttpURLConnection;
 import java.net.URL;
 
 import javax.xml.namespace.QName;
@@ -85,15 +85,16 @@
     }
         
     @Test
-    public void testComponent1JAXWS() throws IOException {        
+    public void testComponent1JAXWSwsgen() throws IOException {        
         
         // talk to the service using JAXWS with WSDL generated from this service used wsgen
         // the idea here is to demonstrate that the service is providing a JAXWS compliant 
         // interface
         QName serviceName = new QName("http://helloworld/", "HelloWorldImplService");
+        QName portName = new QName("http://helloworld/", "HelloWorldImplPort");
         URL wsdlLocation = this.getClass().getClassLoader().getResource("wsdl/HelloWorldImplService.wsdl");
         Service webService = Service.create( wsdlLocation, serviceName );
-        HelloWorldService wsProxy = (HelloWorldService) webService.getPort(HelloWorldService.class);
+        HelloWorldService wsProxy = (HelloWorldService) webService.getPort(portName, HelloWorldService.class);
 
         assertEquals("Hello Fred", wsProxy.getGreetings("Fred"));
         
@@ -107,10 +108,24 @@
         abean.setField3(bbean);
         
         assertEquals("Hello 3 4 1 2", wsProxy.getGreetingsDBean(abean));
+/* TUSCANY-3778        
+        String byteArrayString = "Hello World";
+        assertEquals(byteArrayString, String.valueOf(wsProxy.getGreetingsByteArray(byteArrayString.getBytes())));
         
-       // repeat the JAXWS call with WSDL generated by tuscany
-        
-    }      
+        try {
+	        wsProxy.getGreetingsException("Fred");
+	        fail("exception not returned");
+        } catch(Exception ex) {
+        	
+        }  
+*/              
+    }  
+    
+    @Test
+    public void testComponent1JAXWStuscanygen() throws IOException {   
+    	// repeat the JAXWS call with WSDL generated by tuscany
+    	
+    }
 
 	@After
 	public void stopServer() throws Exception {
diff --git a/itest/wsdlgen/src/test/resources/wsdl/HelloWorldImplService.wsdl b/itest/wsdlgen/src/test/resources/wsdl/HelloWorldImplService.wsdl
index 5fa0d56..157c4a5 100644
--- a/itest/wsdlgen/src/test/resources/wsdl/HelloWorldImplService.wsdl
+++ b/itest/wsdlgen/src/test/resources/wsdl/HelloWorldImplService.wsdl
@@ -45,7 +45,22 @@
   <message name="getGreetingsDBeanResponse">
     <part name="parameters" element="tns:getGreetingsDBeanResponse"/>
   </message>
-  <portType name="HelloWorldService">
+  <message name="getGreetingsException">
+    <part name="parameters" element="tns:getGreetingsException"/>
+  </message>
+  <message name="getGreetingsExceptionResponse">
+    <part name="parameters" element="tns:getGreetingsExceptionResponse"/>
+  </message>
+  <message name="HelloWorldException">
+    <part name="fault" element="tns:HelloWorldException"/>
+  </message>
+  <message name="getGreetingsByteArray">
+    <part name="parameters" element="tns:getGreetingsByteArray"/>
+  </message>
+  <message name="getGreetingsByteArrayResponse">
+    <part name="parameters" element="tns:getGreetingsByteArrayResponse"/>
+  </message>
+  <portType name="HelloWorldImpl">
     <operation name="getGreetings">
       <input message="tns:getGreetings"/>
       <output message="tns:getGreetingsResponse"/>
@@ -70,8 +85,17 @@
       <input message="tns:getGreetingsDBean"/>
       <output message="tns:getGreetingsDBeanResponse"/>
     </operation>
+    <operation name="getGreetingsException">
+      <input message="tns:getGreetingsException"/>
+      <output message="tns:getGreetingsExceptionResponse"/>
+      <fault message="tns:HelloWorldException" name="HelloWorldException"/>
+    </operation>
+    <operation name="getGreetingsByteArray">
+      <input message="tns:getGreetingsByteArray"/>
+      <output message="tns:getGreetingsByteArrayResponse"/>
+    </operation>
   </portType>
-  <binding name="HelloWorldImplPortBinding" type="tns:HelloWorldService">
+  <binding name="HelloWorldImplPortBinding" type="tns:HelloWorldImpl">
     <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
     <operation name="getGreetings">
       <soap:operation soapAction=""/>
@@ -127,6 +151,27 @@
         <soap:body use="literal"/>
       </output>
     </operation>
+    <operation name="getGreetingsException">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+      <fault name="HelloWorldException">
+        <soap:fault name="HelloWorldException" use="literal"/>
+      </fault>
+    </operation>
+    <operation name="getGreetingsByteArray">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
   </binding>
   <service name="HelloWorldImplService">
     <port name="HelloWorldImplPort" binding="tns:HelloWorldImplPortBinding">
diff --git a/itest/wsdlgen/src/test/resources/wsdl/HelloWorldImplService_schema2.xsd b/itest/wsdlgen/src/test/resources/wsdl/HelloWorldImplService_schema2.xsd
index 446492c..ad2c2de 100644
--- a/itest/wsdlgen/src/test/resources/wsdl/HelloWorldImplService_schema2.xsd
+++ b/itest/wsdlgen/src/test/resources/wsdl/HelloWorldImplService_schema2.xsd
@@ -3,6 +3,8 @@
 
   <xs:import namespace="http://test" schemaLocation="HelloWorldImplService_schema1.xsd"/>
 
+  <xs:element name="HelloWorldException" type="tns:HelloWorldException"/>
+
   <xs:element name="getGreetings" type="tns:getGreetings"/>
 
   <xs:element name="getGreetingsBBean" type="tns:getGreetingsBBean"/>
@@ -17,6 +19,10 @@
 
   <xs:element name="getGreetingsBeanResponse" type="tns:getGreetingsBeanResponse"/>
 
+  <xs:element name="getGreetingsByteArray" type="tns:getGreetingsByteArray"/>
+
+  <xs:element name="getGreetingsByteArrayResponse" type="tns:getGreetingsByteArrayResponse"/>
+
   <xs:element name="getGreetingsCBean" type="tns:getGreetingsCBean"/>
 
   <xs:element name="getGreetingsCBeanResponse" type="tns:getGreetingsCBeanResponse"/>
@@ -25,8 +31,30 @@
 
   <xs:element name="getGreetingsDBeanResponse" type="tns:getGreetingsDBeanResponse"/>
 
+  <xs:element name="getGreetingsException" type="tns:getGreetingsException"/>
+
+  <xs:element name="getGreetingsExceptionResponse" type="tns:getGreetingsExceptionResponse"/>
+
   <xs:element name="getGreetingsResponse" type="tns:getGreetingsResponse"/>
 
+  <xs:complexType name="getGreetingsException">
+    <xs:sequence>
+      <xs:element name="arg0" type="xs:string" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="getGreetingsExceptionResponse">
+    <xs:sequence>
+      <xs:element name="return" type="xs:string" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="HelloWorldException">
+    <xs:sequence>
+      <xs:element name="message" type="xs:string" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+
   <xs:complexType name="getGreetingsBeanArray">
     <xs:sequence>
       <xs:element name="arg0" type="ns1:aBean" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
@@ -46,6 +74,18 @@
     </xs:sequence>
   </xs:complexType>
 
+  <xs:complexType name="getGreetingsByteArray">
+    <xs:sequence>
+      <xs:element name="arg0" type="xs:base64Binary" nillable="true" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="getGreetingsByteArrayResponse">
+    <xs:sequence>
+      <xs:element name="return" type="xs:base64Binary" nillable="true" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+
   <xs:complexType name="getGreetingsBBean">
     <xs:sequence>
       <xs:element name="arg0" type="tns:bBean" minOccurs="0"/>