You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/03/13 14:16:19 UTC

svn commit: r753233 - in /cxf/branches/2.1.x-fixes: ./ rt/core/src/main/java/org/apache/cxf/catalog/ tools/common/src/main/java/org/apache/cxf/tools/common/model/ tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/cust...

Author: dkulp
Date: Fri Mar 13 13:16:18 2009
New Revision: 753233

URL: http://svn.apache.org/viewvc?rev=753233&view=rev
Log:
Merged revisions 753205 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r753205 | dkulp | 2009-03-13 07:18:26 -0400 (Fri, 13 Mar 2009) | 2 lines
  
  [CXF-2054] Fix problems with async method code generation
........

Modified:
    cxf/branches/2.1.x-fixes/   (props changed)
    cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/catalog/CatalogWSDLLocator.java
    cxf/branches/2.1.x-fixes/tools/common/src/main/java/org/apache/cxf/tools/common/model/JavaParameter.java
    cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java
    cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java
    cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
    cxf/branches/2.1.x-fixes/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async.wsdl

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Mar 13 13:16:18 2009
@@ -1 +1 @@
-/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691338,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041,695096,695396,695484,695537,695552,695561,695619,695684,695835,695840,695868,695935,695977,696016,696094,696433,696720,697085,697868,698128,699289,700261,700507,700602,700981,701316,701783,701830,701862,702187,702205-702248,702267,702547,702561,702580,702602,702609,702616,702653,702656,702957,703191,703239,703309,703501,703513,703548,704584,704937,704997,705150,705235,705274,705340,705446,705548,705614,705692,705708,706482,706631,706675,706900,706909,707034,707089,707100,707902,708035,708044,708074,708410,708417,708550,708554,709353-709354,709425,710076,710150,71015
 4,711193,711388,711410,711490,711635,711949,711975,712194,712198,712238,712272,712299,712312,712670,712893,713082,713095-713096,713099,713584,713597,713737,713804,713899,714167-714168,714245,714255,717937-717961,718281-718448,718565,718620,718640,718665,718970,719017,719210,719215-719218,719222-719273,719305,719327-719680,720053,720119-720218,720238,720293-720316,720497,721221,721241,721501,722117,722129,722412,722988,723024,723338,723378,723716-723791,724333-724372,724433-724438,724449,724481,724485,724668,724780,724782,724785,724793,724795,724940,725071,725316,725332,725335,725348,725364,725418,725425-725426,725455,725506,725554,725562,725651,725671,725688,725754,725773,725799,725839,726342,726524,726631,726634,726637,726639,726692,726724,726769,726992,727096,727445,727521,727568,727692,727754,727781,727792,728070,728087,728696,728897,729051,729430,729449,729460,729863,730082,730139,730889,730891,731598,731604,731615,731631,731635,732036,732050,732320,732363,732411,732450,
 732710,732773,732827,732829,733512,733582,733901,734367,734462,734666,734762,734772,734812,734836,734965,735113,735252,735722-735723,735729,735734,735751,735782,735787,735987,736332,736343,736352,736358-736362,736408,736423,736448,736491,736621,736726,736736,736738-736739,736766,736825,736852,737032,737046,737061,737069,737124,737237,737246,737299,737356,737494,737498,737761,737817,737849,737855,737994,738166,738178,738201,738210,738242,738244,738265,738516,738583,738863,738937,738983,739366-739367,739451-739452,739799-739800,739867,739876-739877,739922,739937,739990,740045,740108,740154,740186,740197,740255,740706,740730,740810,740844,740886,740902,740923,740994,741058,741124,741152,741188,741521,741529,741879,742914,743087,743439,743441,743459,743469,743965,743967,744175,744195,744237,744756,745214,745243,745560,745578,745586,745592,745638,745950,746012,746019-746020,746256,746266,746306,746357,746373-746374,747217,747386,747406,747454,747649,747766,747986,748159,748192,74
 8223,748305,748313,748603-748604,748768,749420,749449,749454-749456,749505,749511,749513,749584,749767,749771,749799,749890,750059-750060,750302,750591,750689,750935,751067-751110,751233,751527,751567,751576,751607,751732,751740,751787,751828,751840,751972-751974,752122,752132,752136,752558,752613,752680,752728,752753,752849,752880-752881,752883,752961,752992
+/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691338,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041,695096,695396,695484,695537,695552,695561,695619,695684,695835,695840,695868,695935,695977,696016,696094,696433,696720,697085,697868,698128,699289,700261,700507,700602,700981,701316,701783,701830,701862,702187,702205-702248,702267,702547,702561,702580,702602,702609,702616,702653,702656,702957,703191,703239,703309,703501,703513,703548,704584,704937,704997,705150,705235,705274,705340,705446,705548,705614,705692,705708,706482,706631,706675,706900,706909,707034,707089,707100,707902,708035,708044,708074,708410,708417,708550,708554,709353-709354,709425,710076,710150,71015
 4,711193,711388,711410,711490,711635,711949,711975,712194,712198,712238,712272,712299,712312,712670,712893,713082,713095-713096,713099,713584,713597,713737,713804,713899,714167-714168,714245,714255,717937-717961,718281-718448,718565,718620,718640,718665,718970,719017,719210,719215-719218,719222-719273,719305,719327-719680,720053,720119-720218,720238,720293-720316,720497,721221,721241,721501,722117,722129,722412,722988,723024,723338,723378,723716-723791,724333-724372,724433-724438,724449,724481,724485,724668,724780,724782,724785,724793,724795,724940,725071,725316,725332,725335,725348,725364,725418,725425-725426,725455,725506,725554,725562,725651,725671,725688,725754,725773,725799,725839,726342,726524,726631,726634,726637,726639,726692,726724,726769,726992,727096,727445,727521,727568,727692,727754,727781,727792,728070,728087,728696,728897,729051,729430,729449,729460,729863,730082,730139,730889,730891,731598,731604,731615,731631,731635,732036,732050,732320,732363,732411,732450,
 732710,732773,732827,732829,733512,733582,733901,734367,734462,734666,734762,734772,734812,734836,734965,735113,735252,735722-735723,735729,735734,735751,735782,735787,735987,736332,736343,736352,736358-736362,736408,736423,736448,736491,736621,736726,736736,736738-736739,736766,736825,736852,737032,737046,737061,737069,737124,737237,737246,737299,737356,737494,737498,737761,737817,737849,737855,737994,738166,738178,738201,738210,738242,738244,738265,738516,738583,738863,738937,738983,739366-739367,739451-739452,739799-739800,739867,739876-739877,739922,739937,739990,740045,740108,740154,740186,740197,740255,740706,740730,740810,740844,740886,740902,740923,740994,741058,741124,741152,741188,741521,741529,741879,742914,743087,743439,743441,743459,743469,743965,743967,744175,744195,744237,744756,745214,745243,745560,745578,745586,745592,745638,745950,746012,746019-746020,746256,746266,746306,746357,746373-746374,747217,747386,747406,747454,747649,747766,747986,748159,748192,74
 8223,748305,748313,748603-748604,748768,749420,749449,749454-749456,749505,749511,749513,749584,749767,749771,749799,749890,750059-750060,750302,750591,750689,750935,751067-751110,751233,751527,751567,751576,751607,751732,751740,751787,751828,751840,751972-751974,752122,752132,752136,752558,752613,752680,752728,752753,752849,752880-752881,752883,752961,752992,753205

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/catalog/CatalogWSDLLocator.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/catalog/CatalogWSDLLocator.java?rev=753233&r1=753232&r2=753233&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/catalog/CatalogWSDLLocator.java (original)
+++ cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/catalog/CatalogWSDLLocator.java Fri Mar 13 13:16:18 2009
@@ -56,8 +56,8 @@
     }
 
     public InputSource getBaseInputSource() {
-        InputSource result = resolver.resolve(baseUri, null);
-        if (result == null && catalogResolver != null) {
+        InputSource result = null;
+        if (catalogResolver != null) {
             try {
                 String s = catalogResolver.resolveSystem(baseUri);
                 if (s != null) {
@@ -69,6 +69,9 @@
                 //ignore
             }
         }
+        if (result == null) {
+            result = resolver.resolve(baseUri, null);
+        }
         if (wsdlUrl == null
             && result != null) {
             wsdlUrl = result.getSystemId();

Modified: cxf/branches/2.1.x-fixes/tools/common/src/main/java/org/apache/cxf/tools/common/model/JavaParameter.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/tools/common/src/main/java/org/apache/cxf/tools/common/model/JavaParameter.java?rev=753233&r1=753232&r2=753233&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/tools/common/src/main/java/org/apache/cxf/tools/common/model/JavaParameter.java (original)
+++ cxf/branches/2.1.x-fixes/tools/common/src/main/java/org/apache/cxf/tools/common/model/JavaParameter.java Fri Mar 13 13:16:18 2009
@@ -71,7 +71,9 @@
     public JAnnotation getAnnotation(String tag) {
         return annotations.get(tag);
     }
-    
+    public Collection<String> getAnnotationTags() {
+        return this.annotations.keySet();
+    }
 
     public Collection<JAnnotation> getAnnotations() {
         return this.annotations.values();

Modified: cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java?rev=753233&r1=753232&r2=753233&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java (original)
+++ cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java Fri Mar 13 13:16:18 2009
@@ -130,6 +130,9 @@
     }
 
     public Element getTargetNode(String uri) {
+        if (uri.equals(wsdlURL) && wsdlNode != null) {
+            return wsdlNode;
+        }
         Document doc = null;
         InputStream ins = null;
 

Modified: cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java?rev=753233&r1=753232&r2=753233&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java (original)
+++ cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java Fri Mar 13 13:16:18 2009
@@ -20,7 +20,6 @@
 package org.apache.cxf.tools.wsdlto.frontend.jaxws.processor.internal;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
 import java.util.logging.Level;
 
@@ -178,7 +177,9 @@
     }
 
     private boolean isAsyncMethod(JavaMethod method) {
-        if (method.getName().endsWith(ToolConstants.ASYNC_METHOD_SUFFIX)) {
+        if (method.getName().endsWith(ToolConstants.ASYNC_METHOD_SUFFIX)
+            && method.getReturn() != null
+            && method.getReturn().getClassName() != null) {
             if (method.getReturn().getClassName().startsWith("Response<")) {
                 return true;
             } else if (method.getParameterCount() > 0
@@ -217,15 +218,40 @@
         callbackMethod.addAnnotation("RequestWrapper", method.getAnnotationMap().get("RequestWrapper"));
         callbackMethod.addAnnotation("SOAPBinding", method.getAnnotationMap().get("SOAPBinding"));
 
-        for (Iterator iter = method.getParameters().iterator(); iter.hasNext();) {
-            callbackMethod.addParameter((JavaParameter)iter.next());
+        boolean convertOutToAsync = !method.isWrapperStyle() 
+            && "void".equals(method.getReturn().getClassName());
+        String asyncCname = null;
+        for (JavaParameter param : method.getParameters()) {
+            if (convertOutToAsync) {
+                if (param.isHolder()) {
+                    if (param.isINOUT()) {
+                        JavaParameter p2 = new JavaParameter();
+                        
+                        p2.setName(param.getName());
+                        p2.setClassName(param.getHolderName());
+                        p2.setStyle(JavaType.Style.IN);
+                        callbackMethod.addParameter(p2);
+                        for (String s : param.getAnnotationTags()) {
+                            JAnnotation ann = param.getAnnotation(s);
+                            p2.addAnnotation(s, ann);
+                        }
+                    } else if (!param.isHeader() && asyncCname == null) {
+                        asyncCname = param.getClassName();
+                    }
+                } else {
+                    callbackMethod.addParameter(param);
+                }
+            } else {
+                callbackMethod.addParameter(param);
+            }
         }
-
         JavaParameter asyncHandler = new JavaParameter();
         
         asyncHandler.setName("asyncHandler");
         asyncHandler.setCallback(true);
-        asyncHandler.setClassName(getAsyncClassName(method, "AsyncHandler"));
+        asyncHandler.setClassName(getAsyncClassName(method, 
+                                                    "AsyncHandler",
+                                                    asyncCname));
         asyncHandler.setStyle(JavaType.Style.IN);
         
         callbackMethod.addParameter(asyncHandler);
@@ -248,8 +274,37 @@
         pollingMethod.setSoapAction(method.getSoapAction());
         pollingMethod.setOperationName(method.getOperationName());
 
+
+        boolean convertOutToAsync = !method.isWrapperStyle() 
+            && "void".equals(method.getReturn().getClassName());
+        String asyncCname = null;
+        for (JavaParameter param : method.getParameters()) {
+            if (convertOutToAsync) {
+                if (param.isHolder()) {
+                    if (param.isINOUT()) {
+                        JavaParameter p2 = new JavaParameter();
+                        
+                        p2.setName(param.getName());
+                        p2.setClassName(param.getHolderName());
+                        p2.setStyle(JavaType.Style.IN);
+                        pollingMethod.addParameter(p2);
+                        for (String s : param.getAnnotationTags()) {
+                            JAnnotation ann = param.getAnnotation(s);
+                            p2.addAnnotation(s, ann);
+                        }
+                    } else if (!param.isHeader() && asyncCname == null) {
+                        asyncCname = param.getClassName();
+                    }
+                } else {
+                    pollingMethod.addParameter(param);
+                }
+            } else {
+                pollingMethod.addParameter(param);
+            }
+        }
+
         JavaReturn response = new JavaReturn();
-        response.setClassName(getAsyncClassName(method, "Response"));
+        response.setClassName(getAsyncClassName(method, "Response", asyncCname));
         pollingMethod.setReturn(response);
 
         // REVISIT: test the operation name in the annotation
@@ -258,25 +313,22 @@
         pollingMethod.addAnnotation("ResponseWrapper", method.getAnnotationMap().get("ResponseWrapper"));
         pollingMethod.addAnnotation("SOAPBinding", method.getAnnotationMap().get("SOAPBinding"));
 
-        for (Iterator iter = method.getParameters().iterator(); iter.hasNext();) {
-            pollingMethod.addParameter((JavaParameter)iter.next());
-        }
-
         method.getInterface().addMethod(pollingMethod);
     }
 
-    private String getAsyncClassName(JavaMethod method, String clzName) {
-        String response;
-        if (wrapperResponse != null) {
-            response = wrapperResponse.getClassName();
-        } else {
-            response = method.getReturn().getClassName();
-        }
-        Class<?> mappedClass = JAXBUtils.holderClass(response);
-        if (mappedClass != null) {
-            response = mappedClass.getName();
+    private String getAsyncClassName(JavaMethod method, String clzName, String name) {
+        String response = name;
+        if (response == null) {
+            if (wrapperResponse != null) {
+                response = wrapperResponse.getClassName();
+            } else {
+                response = method.getReturn().getClassName();
+            }
+            Class<?> mappedClass = JAXBUtils.holderClass(response);
+            if (mappedClass != null) {
+                response = mappedClass.getName();
+            }
         }
-
         StringBuffer sb = new StringBuffer();
         sb.append(clzName);
         sb.append("<");

Modified: cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java?rev=753233&r1=753232&r2=753233&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java (original)
+++ cxf/branches/2.1.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java Fri Mar 13 13:16:18 2009
@@ -454,7 +454,8 @@
                             found = true;
                         }
                     }
-                    if (jm.getReturn().getName().equals(soapHeader.getPart())) {
+                    if (jm.getReturn().getName() != null 
+                        && jm.getReturn().getName().equals(soapHeader.getPart())) {
                         found = true;
                     }
                     if (Boolean.valueOf((String)context.get(ToolConstants.CFG_EXTRA_SOAPHEADER))

Modified: cxf/branches/2.1.x-fixes/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async.wsdl
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async.wsdl?rev=753233&r1=753232&r2=753233&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async.wsdl (original)
+++ cxf/branches/2.1.x-fixes/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async.wsdl Fri Mar 13 13:16:18 2009
@@ -17,92 +17,164 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<wsdl:definitions 
-    xmlns="http://schemas.xmlsoap.org/wsdl/" 
-    xmlns:http-conf="http://schemas.iona.com/transports/http/configuration" 
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
-    xmlns:tns="http://cxf.apache.org/w2j/hello_world_async_soap_http" 
-    xmlns:x1="http://cxf.apache.org/w2j/hello_world_async_soap_http/types" 
-    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
+<wsdl:definitions
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:http-conf="http://schemas.iona.com/transports/http/configuration"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:tns="http://cxf.apache.org/w2j/hello_world_async_soap_http"
+    xmlns:x1="http://cxf.apache.org/w2j/hello_world_async_soap_http/types"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
-    targetNamespace="http://cxf.apache.org/w2j/hello_world_async_soap_http" 
+    targetNamespace="http://cxf.apache.org/w2j/hello_world_async_soap_http"
     name="HelloWorld">
     <jaxws:bindings>
-	<jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
+        <jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
     </jaxws:bindings>
     <wsdl:types>
-	<schema 
-	    targetNamespace="http://cxf.apache.org/w2j/hello_world_async_soap_http/types" 
-	    xmlns="http://www.w3.org/2001/XMLSchema" 
-	    xmlns:x1="http://cxf.apache.org/w2j/hello_world_async_soap_http/types" 
-	    elementFormDefault="qualified">
-	    <element name="greetMeSometime">
-		<complexType>
-		    <sequence>
-			<element name="requestType" type="xsd:string"/>
-		    </sequence>
-		</complexType>
-	    </element>
-	    <element name="greetMeSometimeResponse">
-		<complexType>
-		    <sequence>
-			<element name="responseType" type="xsd:string"/>
-		    </sequence>
-		</complexType>
-	    </element>		
-      	<element name="testInt" type="xsd:int"/>
-        <element name="testIntResponse" type="xsd:int"/>
-	</schema>
+        <schema
+            targetNamespace="http://cxf.apache.org/w2j/hello_world_async_soap_http/types"
+            xmlns="http://www.w3.org/2001/XMLSchema"
+            xmlns:x1="http://cxf.apache.org/w2j/hello_world_async_soap_http/types"
+            elementFormDefault="qualified">
+            <element name="greetMeSometime">
+                <complexType>
+                    <sequence>
+                        <element name="requestType" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="greetMeSometimeResponse">
+                <complexType>
+                    <sequence>
+                        <element name="responseType" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="greetMeWithHeader">
+                <complexType>
+                    <sequence>
+                        <element name="requestType" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="greetMeWithHeaderResponse">
+                <complexType>
+                    <sequence>
+                        <element name="responseType" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="greetMeAsync">
+                <complexType>
+                    <sequence>
+                        <element name="requestType" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="greetMeAsyncResponse">
+                <complexType>
+                    <sequence>
+                        <element name="responseType" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="header" type="xsd:int"/>
+            <element name="testInt" type="xsd:int"/>
+            <element name="testIntResponse" type="xsd:int"/>
+        </schema>
     </wsdl:types>
     <wsdl:message name="greetMeSometimeRequest">
-	<wsdl:part name="in" element="x1:greetMeSometime"/>
+        <wsdl:part name="in" element="x1:greetMeSometime"/>
     </wsdl:message>
     <wsdl:message name="greetMeSometimeResponse">
-	<wsdl:part name="out" element="x1:greetMeSometimeResponse"/>
+        <wsdl:part name="out" element="x1:greetMeSometimeResponse"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeWithHeaderRequest">
+        <wsdl:part name="in" element="x1:greetMeWithHeader"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeWithHeaderResponse">
+        <wsdl:part name="out" element="x1:greetMeWithHeaderResponse"/>
+        <wsdl:part name="header" element="x1:header"/>
+    </wsdl:message>
+    <wsdl:message name="HEADER">
+        <wsdl:part name="header" element="x1:header"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeAsync">
+        <wsdl:part name="in" element="x1:greetMeAsync"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeAsyncResponse">
+        <wsdl:part name="out" element="x1:greetMeAsyncResponse"/>
     </wsdl:message>
     <wsdl:message name="testIntRequest">
-    	<wsdl:part name="parameters" element="x1:testInt"></wsdl:part>
+        <wsdl:part name="parameters" element="x1:testInt"></wsdl:part>
     </wsdl:message>
     <wsdl:message name="testIntResponse">
-    	<wsdl:part name="parameters" element="x1:testIntResponse"></wsdl:part>
+        <wsdl:part name="parameters" element="x1:testIntResponse"></wsdl:part>
     </wsdl:message>
     <wsdl:portType name="GreeterAsync">
-	<wsdl:operation name="greetMeSometime">
-	    <wsdl:input name="greetMeSometimeRequest" message="tns:greetMeSometimeRequest"/>
-	    <wsdl:output name="greetMeSometimeResponse" message="tns:greetMeSometimeResponse"/>
-	</wsdl:operation>
-	<wsdl:operation name="testInt">
-		<wsdl:input message="tns:testIntRequest"></wsdl:input>
-		<wsdl:output message="tns:testIntResponse"></wsdl:output>
-	</wsdl:operation>
+        <wsdl:operation name="greetMeSometime">
+            <wsdl:input name="greetMeSometimeRequest" message="tns:greetMeSometimeRequest"/>
+            <wsdl:output name="greetMeSometimeResponse" message="tns:greetMeSometimeResponse"/>
+        </wsdl:operation>
+        <wsdl:operation name="testInt">
+            <wsdl:input message="tns:testIntRequest"></wsdl:input>
+            <wsdl:output message="tns:testIntResponse"></wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="greetMeWithHeader">
+            <wsdl:input message="tns:greetMeWithHeaderRequest"></wsdl:input>
+            <wsdl:output message="tns:greetMeWithHeaderResponse"></wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="greetMeAsync">
+            <wsdl:input message="tns:greetMeAsync"></wsdl:input>
+            <wsdl:output message="tns:greetMeAsyncResponse"></wsdl:output>
+        </wsdl:operation>
     </wsdl:portType>
     <wsdl:binding name="GreeterAsync_SOAPBinding" type="tns:GreeterAsync">
-	<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
-	<wsdl:operation name="greetMeSometime">
-	    <soap:operation style="document"/>
-	    <wsdl:input>
-		<soap:body use="literal"/>
-	    </wsdl:input>
-	    <wsdl:output>
-		<soap:body use="literal"/>
-	    </wsdl:output>
-	</wsdl:operation>
-	<wsdl:operation name="testInt">
-	    <soap:operation style="document"/>
-	    <wsdl:input>
-		<soap:body use="literal"/>
-	    </wsdl:input>
-	    <wsdl:output>
-		<soap:body use="literal"/>
-	    </wsdl:output>
-	</wsdl:operation>
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="greetMeSometime">
+            <soap:operation style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="testInt">
+            <soap:operation style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="greetMeWithHeader">
+            <soap:operation style="document"/>
+            <wsdl:input>
+                <soap:body use="literal" parts="in"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal" parts="out"/>
+                <soap:header message="tns:greetMeWithHeaderResponse" part="header" use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="greetMeAsync">
+            <soap:operation style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
     </wsdl:binding>
     <wsdl:service name="SOAPService">
-	<wsdl:port name="SoapPort" binding="tns:GreeterAsync_SOAPBinding">
-	    <soap:address location="http://localhost:9000/SoapContext/SoapPort"/>
-	    <http-conf:client/>
-	    <http-conf:server/>
-	</wsdl:port>
+        <wsdl:port name="SoapPort" binding="tns:GreeterAsync_SOAPBinding">
+            <soap:address location="http://localhost:9000/SoapContext/SoapPort"/>
+            <http-conf:client/>
+            <http-conf:server/>
+        </wsdl:port>
     </wsdl:service>
 </wsdl:definitions>