AXISCPP-1076 - support soap:header.  This fix ensures that the message part that is not a soap:header is chosen.
diff --git a/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java b/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java
index 99db6f4..855de8b 100644
--- a/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java
+++ b/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java
@@ -1191,24 +1191,19 @@
             //setting the faults

             addFaultInfo(op.getFaults(), minfo);

             

-            //add each parameter to parameter list

+            // process input and response messages 

             if ("document".equals(bindingEntry.getBindingStyle().getName()))

             {

                 if (userRequestedWSDLWrappingStyle && !minfo.isEligibleForWrapped())

                     System.out.println("INFORMATIONAL: Operation '" + op.getName() + "' is not eligible for wrapper-style, generating non-wrapper style.");

-                addDocumentStyleInputMessageToMethodInfo(op, minfo);

+               

+                addDocumentStyleInputMessageToMethodInfo(bindingEntry, op, minfo);

+                addDocumentStyleOutputMessageToMethodInfo(bindingEntry, op, minfo);

             }

             else

-                addRPCStyleInputMessageToMethodInfo(op, minfo);

-

-            //get the return type

-            if (op.getOutput() != null)

             {

-                Iterator returnlist = op.getOutput().getMessage().getParts().values().iterator();

-                if (returnlist.hasNext() && "document".equals(bindingEntry.getBindingStyle().getName()))

-                    addDocumentStyleOutputMessageToMethodInfo(minfo, (Part) returnlist.next());

-                else

-                    addRPCStyleOutputMessageToMethodInfo(op, minfo);

+                addRPCStyleInputMessageToMethodInfo(bindingEntry, op, minfo);

+                addRPCStyleOutputMessageToMethodInfo(bindingEntry, op, minfo);

             }

             

             //add operation to operation List

@@ -1251,8 +1246,11 @@
      * @param minfo MethodInfo object into which output message and it's elements are to be added

      * @throws WrapperFault

      */

-    private void addRPCStyleOutputMessageToMethodInfo(Operation op, MethodInfo minfo) throws WrapperFault

+    private void addRPCStyleOutputMessageToMethodInfo(BindingEntry bindingEntry, Operation op, MethodInfo minfo) throws WrapperFault

     {

+        if (op.getOutput() == null)

+            return;

+        

         ParameterInfo pinfo;

         Iterator returnlist;

 

@@ -1278,7 +1276,8 @@
             { 

                 //RPC style messages can have multiple parts

                 Part p = (Part) returnlist.next();

-                if (op.getParameterOrdering().contains(p.getName()))

+                if (op.getParameterOrdering().contains(p.getName()) 

+                        || (bindingEntry.isOutHeaderPart(op.getName(), p.getName())))

                     continue;

                 pinfo = createParameterInfo(p);

                 if (null != pinfo)

@@ -1292,6 +1291,8 @@
             { 

                 //RPC style messages can have multiple parts

                 Part p = ((Part) returnlist.next());

+                if (bindingEntry.isOutHeaderPart(op.getName(), p.getName()))

+                    continue;

                 pinfo = createParameterInfo(p);

                 if (null != pinfo)

                     minfo.addOutputParameter(pinfo);

@@ -1304,8 +1305,29 @@
      * @param part

      * @throws WrapperFault

      */

-    private void addDocumentStyleOutputMessageToMethodInfo(MethodInfo minfo, Part part) throws WrapperFault

+    private void addDocumentStyleOutputMessageToMethodInfo(BindingEntry bindingEntry, Operation op, MethodInfo minfo) throws WrapperFault

     {

+        if (op.getOutput() == null)

+            return;

+

+        Part part = null;

+

+        // For now, skip over soap header parts

+        Iterator returnlist = op.getOutput().getMessage().getParts().values().iterator();

+        while (returnlist.hasNext())

+        {

+            part = (Part) returnlist.next();

+            if (bindingEntry.isOutHeaderPart(op.getName(), part.getName()))

+                part = null;

+            else 

+                break;

+        }        

+        

+        // If no output parameter, simply return.

+        if (part == null)

+            return;

+

+        

         QName qname;

         QName minfoqname;

         TypeEntry elementTypeEntry;

@@ -1419,7 +1441,7 @@
      * @param minfo

      * @throws WrapperFault

      */

-    private void addRPCStyleInputMessageToMethodInfo(Operation op, MethodInfo minfo)

+    private void addRPCStyleInputMessageToMethodInfo(BindingEntry bindingEntry, Operation op, MethodInfo minfo)

         throws WrapperFault

     {

         ParameterInfo pinfo;

@@ -1434,7 +1456,8 @@
                                    .getMessage()

                                    .getParts()

                                    .get((String) op.getParameterOrdering().get(ix)));

-                if (p == null)

+                if (p == null

+                        || bindingEntry.isInHeaderPart(op.getName(), p.getName()))

                     continue;

 

                 pinfo = createParameterInfo(p);

@@ -1449,6 +1472,9 @@
             { 

                 //RPC style messages can have multiple parts

                 Part p = (Part) paramlist.next();

+                if (bindingEntry.isInHeaderPart(op.getName(), p.getName()))

+                    continue;

+

                 pinfo = createParameterInfo(p);

                 if (null != pinfo)

                     minfo.addInputParameter(pinfo);

@@ -1461,16 +1487,26 @@
      * @param minfo

      * @throws WrapperFault

      */

-    private void addDocumentStyleInputMessageToMethodInfo(Operation op, MethodInfo minfo)

+    private void addDocumentStyleInputMessageToMethodInfo(BindingEntry bindingEntry, Operation op, MethodInfo minfo)

         throws WrapperFault

     {   

-        // If no input parameters, simply return.

+        Part part = null;

+        

+        // For now, skip over soap header parts.

         Iterator paramlist = op.getInput().getMessage().getParts().values().iterator();

-        if(!paramlist.hasNext())

-            return;

+        while (paramlist.hasNext())

+        {

+            part = (Part) paramlist.next();

+            if (bindingEntry.isInHeaderPart(op.getName(), part.getName()))

+                part = null;

+            else

+                break;

+        }        

         

-        Part part = (Part) paramlist.next();

-        

+        // If no input parameter, simply return.

+        if (part == null)

+            return;       

+            

         QName minfoqname;

         QName qname;