Author: scheu
Date: Mon Mar 29 19:08:34 2010
New Revision: 928871

URL: http://svn.apache.org/viewvc?rev=928871&view=rev
Log: (empty)

Modified:
    
axis/axis2/java/core/trunk/modules/jaxws-integration/test-resources/wsdl/doclitbare.wsdl
    
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/BareTests.java
    
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/DocLitBarePortTypeImpl.java
    
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl
    
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/sei/DocLitBarePortType.java
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/Constants.java
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodMarshaller.java
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMethodMarshaller.java
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMinimalMethodMarshaller.java
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMinimalMethodMarshaller.java
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/MethodMarshallerUtils.java
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/RPCLitMethodMarshaller.java

Modified: 
axis/axis2/java/core/trunk/modules/jaxws-integration/test-resources/wsdl/doclitbare.wsdl
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test-resources/wsdl/doclitbare.wsdl?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws-integration/test-resources/wsdl/doclitbare.wsdl
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws-integration/test-resources/wsdl/doclitbare.wsdl
 Mon Mar 29 19:08:34 2010
@@ -20,173 +20,196 @@
   -->
 
 <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
-       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
-       xmlns:tns="http://doclitbare.sample.test.org";
-       xmlns:xsd="http://www.w3.org/2001/XMLSchema"; name="DoclitBare"
-       targetNamespace="http://doclitbare.sample.test.org";>
-       
-       <wsdl:types>
-               <xsd:schema
-                       targetNamespace="http://doclitbare.sample.test.org";
-                       xmlns:tns="http://doclitbare.sample.test.org";
-                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
-               
-               <xsd:element name="String" type="xsd:string" />
-               <xsd:element name="Integer" type="xsd:int" />           
-
-               <xsd:element name="Composite">          
-                       <xsd:complexType>
-                               <xsd:sequence>
-                                       <xsd:element name="myElement" 
type="xsd:string" />
-                               </xsd:sequence>
-                       </xsd:complexType>
-               </xsd:element>
-
-               <!-- basic fault test, this should be mapped into message part
-                    of the generated faultBean
-                 -->
-               <xsd:element name="MyFault" type="xsd:string" />
-
-               <!-- wrapper exception and polymorphic fault test
-                    This bean should have an associated exception
-                 -->
-               <xsd:element name="MyBaseFaultBean" type="tns:BaseFault" />     
        
-
-               <xsd:complexType name="BaseFault">
-                       <xsd:sequence>
-                               <xsd:element name="message" type="xsd:string" />
-                               <xsd:element name="error_code" type="xsd:int" 
/>                                        
-                       </xsd:sequence>
-               </xsd:complexType>
-
-               <xsd:complexType name="ExtendedFault">
-                       <xsd:complexContent>
-                         <xsd:extension base="tns:BaseFault">
-                           <xsd:sequence>
-                               <xsd:element name="another_message" 
type="xsd:string" />
-                               <xsd:element name="another_error_code" 
type="xsd:int" />                                        
-                           </xsd:sequence>
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
+    xmlns:tns="http://doclitbare.sample.test.org";
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"; name="DoclitBare"
+    targetNamespace="http://doclitbare.sample.test.org";>
+    
+    <wsdl:types>
+        <xsd:schema
+            targetNamespace="http://doclitbare.sample.test.org";
+            xmlns:tns="http://doclitbare.sample.test.org";
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
+        
+        <xsd:element name="String" type="xsd:string" />
+        <xsd:element name="Integer" type="xsd:int" />       
+        
+        <xsd:element name="HeaderString" type="xsd:string" />
+        <xsd:element name="BodyInteger" type="xsd:int" />
+
+        <xsd:element name="Composite">      
+            <xsd:complexType>
+                <xsd:sequence>
+                    <xsd:element name="myElement" type="xsd:string" />
+                </xsd:sequence>
+            </xsd:complexType>
+        </xsd:element>
+
+        <!-- basic fault test, this should be mapped into message part
+             of the generated faultBean
+          -->
+        <xsd:element name="MyFault" type="xsd:string" />
+
+        <!-- wrapper exception and polymorphic fault test
+             This bean should have an associated exception
+          -->
+        <xsd:element name="MyBaseFaultBean" type="tns:BaseFault" />     
+
+        <xsd:complexType name="BaseFault">
+            <xsd:sequence>
+                <xsd:element name="message" type="xsd:string" />
+                <xsd:element name="error_code" type="xsd:int" />               
     
+            </xsd:sequence>
+        </xsd:complexType>
+
+        <xsd:complexType name="ExtendedFault">
+            <xsd:complexContent>
+              <xsd:extension base="tns:BaseFault">
+                <xsd:sequence>
+                <xsd:element name="another_message" type="xsd:string" />
+                <xsd:element name="another_error_code" type="xsd:int" />       
             
+                </xsd:sequence>
               </xsd:extension>
-                       </xsd:complexContent>
-               </xsd:complexType>
+            </xsd:complexContent>
+        </xsd:complexType>
 
-               </xsd:schema>
-       </wsdl:types>
+        </xsd:schema>
+    </wsdl:types>
 
-       <wsdl:message name="NoParam" />
+    <wsdl:message name="NoParam" />
 
-    <wsdl:message name="echoStringIn">
-               <wsdl:part name="echoStringIn" element="tns:String" />
-       </wsdl:message>
-       
-       <wsdl:message name="echoStringOut">
-               <wsdl:part name="echoStringOut" element="tns:String" />
-       </wsdl:message>
-       
-       <wsdl:message name="SingleParam">
-               <wsdl:part name="allByMyself" element="tns:String" />
-       </wsdl:message>
-
-       <wsdl:message name="SingleParamInt">
-               <wsdl:part name="allByMyself" element="tns:Integer" />
-       </wsdl:message>
-       
-       <wsdl:message name="SingleParamOther">
-               <wsdl:part name="allByMyself" element="tns:Composite" />
-       </wsdl:message> 
-
-       <wsdl:message name="SimpleFault">
-               <wsdl:part name="description" element="tns:MyFault" />  
-       </wsdl:message> 
-
-       <wsdl:message name="FaultBeanWithWrapper">
-               <wsdl:part name="description" element="tns:MyBaseFaultBean" />  
-       </wsdl:message> 
-
-       <wsdl:portType name="DocLitBarePortType">
-               
-               <wsdl:operation name="oneWayEmpty">
-                       <wsdl:input message="tns:NoParam" />
-               </wsdl:operation>
-               
-               <wsdl:operation name="oneWay">
-                       <wsdl:input message="tns:SingleParam" />
-               </wsdl:operation>
-               
-               <wsdl:operation name="echoString">
-                       <wsdl:input message="tns:echoStringIn" />
-                       <wsdl:output message="tns:echoStringOut" />
-               </wsdl:operation>               
-               
-               <wsdl:operation name="twoWaySimple">
-                       <wsdl:input message="tns:SingleParamInt" />
-                       <wsdl:output message="tns:SingleParam" />
-               </wsdl:operation>
-               
-               <wsdl:operation name="twoWayHolder">
-                       <wsdl:input message="tns:SingleParamOther" />
-                       <wsdl:output message="tns:SingleParamOther" />
-                       <wsdl:fault message="tns:SimpleFault" 
name="twoWayFault"/>
-                       <wsdl:fault message="tns:FaultBeanWithWrapper" 
name="wrapperFault"/>
-               </wsdl:operation>
-                       
-       </wsdl:portType>
-       
-       <wsdl:binding name="DocLitBare" type="tns:DocLitBarePortType">
-               <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"; />
-
-               <wsdl:operation name="oneWayEmpty">
-                       <wsdl:input>
-                               <soap:body use="literal"  />
-                       </wsdl:input>
-               </wsdl:operation>
-               
-               <wsdl:operation name="oneWay">
-                       <wsdl:input>
-                               <soap:body use="literal"  />
-                       </wsdl:input>
-               </wsdl:operation>
-               
-               <wsdl:operation name="echoString">
-                   <wsdl:input>
-                               <soap:body use="literal"  />
-                       </wsdl:input>
-                       <wsdl:output>
-                               <soap:body use="literal"  />
-                       </wsdl:output>
-               </wsdl:operation>       
-               
-               <wsdl:operation name="twoWaySimple">
-                       <wsdl:input>
-                               <soap:body use="literal"  />
-                       </wsdl:input>
-                       <wsdl:output>
-                               <soap:body use="literal"  />
-                       </wsdl:output>
-               </wsdl:operation>       
-               
-               <wsdl:operation name="twoWayHolder">
-                       <wsdl:input>
-                               <soap:body use="literal"  />
-                       </wsdl:input>
-                       <wsdl:output>
-                               <soap:body use="literal"  />
-                       </wsdl:output>
-                       <wsdl:fault name="twoWayFault">
-                               <soap:fault use="literal" name="twoWayFault" />
-                       </wsdl:fault>                   
-                       <wsdl:fault name="wrapperFault">
-                               <soap:fault use="literal" name="wrapperFault" />
-                       </wsdl:fault>                           
-               </wsdl:operation>
-               
-       
-       </wsdl:binding>
-       
-       <wsdl:service name="BareDocLitService">
-               <wsdl:port binding="tns:DocLitBare" name="BareDocLitPort">
-                       <soap:address 
location="http://localhost:6060/axis2/services/BareDocLitService"; />
-               </wsdl:port>
-       </wsdl:service>
-       
-</wsdl:definitions>
+        <wsdl:message name="echoStringIn">
+        <wsdl:part name="echoStringIn" element="tns:String" />
+    </wsdl:message>
+    
+    <wsdl:message name="echoStringOut">
+        <wsdl:part name="echoStringOut" element="tns:String" />
+    </wsdl:message>
+    
+    <wsdl:message name="SingleParam">
+        <wsdl:part name="allByMyself" element="tns:String" />
+    </wsdl:message>
+
+   <wsdl:message name="HeadersMsg">
+        <wsdl:part name="bodyParam" element="tns:BodyInteger" />
+        <wsdl:part name="headerParam" element="tns:HeaderString" />
+    </wsdl:message>
+
+    <wsdl:message name="SingleParamInt">
+        <wsdl:part name="allByMyself" element="tns:Integer" />
+    </wsdl:message>
+    
+    <wsdl:message name="SingleParamOther">
+        <wsdl:part name="allByMyself" element="tns:Composite" />
+    </wsdl:message> 
+
+    <wsdl:message name="SimpleFault">
+        <wsdl:part name="description" element="tns:MyFault" />  
+    </wsdl:message> 
+
+    <wsdl:message name="FaultBeanWithWrapper">
+        <wsdl:part name="description" element="tns:MyBaseFaultBean" />  
+    </wsdl:message> 
+
+    <wsdl:portType name="DocLitBarePortType">
+        
+        <wsdl:operation name="oneWayEmpty">
+            <wsdl:input message="tns:NoParam" />
+        </wsdl:operation>
+        
+        <wsdl:operation name="oneWay">
+            <wsdl:input message="tns:SingleParam" />
+        </wsdl:operation>
+        
+        <wsdl:operation name="echoString">
+            <wsdl:input message="tns:echoStringIn" />
+            <wsdl:output message="tns:echoStringOut" />
+        </wsdl:operation>       
+        
+        <wsdl:operation name="twoWaySimple">
+            <wsdl:input message="tns:SingleParamInt" />
+            <wsdl:output message="tns:SingleParam" />
+        </wsdl:operation>
+        
+        <wsdl:operation name="twoWayHolder">
+            <wsdl:input message="tns:SingleParamOther" />
+            <wsdl:output message="tns:SingleParamOther" />
+            <wsdl:fault message="tns:SimpleFault" name="twoWayFault"/>
+            <wsdl:fault message="tns:FaultBeanWithWrapper" 
name="wrapperFault"/>
+        </wsdl:operation>
+
+        <wsdl:operation name="headerTest">
+            <wsdl:input message="tns:HeadersMsg" />
+            <wsdl:output message="tns:SingleParam" />
+        </wsdl:operation>
+            
+    </wsdl:portType>
+    
+    <wsdl:binding name="DocLitBare" type="tns:DocLitBarePortType">
+        <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"; />
+
+        <wsdl:operation name="oneWayEmpty">
+            <wsdl:input>
+                <soap:body use="literal"  />
+            </wsdl:input>
+        </wsdl:operation>
+        
+        <wsdl:operation name="oneWay">
+            <wsdl:input>
+                <soap:body use="literal"  />
+            </wsdl:input>
+        </wsdl:operation>
+        
+        <wsdl:operation name="echoString">
+            <wsdl:input>
+                <soap:body use="literal"  />
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"  />
+            </wsdl:output>
+        </wsdl:operation>   
+        
+        <wsdl:operation name="twoWaySimple">
+            <wsdl:input>
+                <soap:body use="literal"  />
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"  />
+            </wsdl:output>
+        </wsdl:operation>   
+        
+        <wsdl:operation name="twoWayHolder">
+            <wsdl:input>
+                <soap:body use="literal"  />
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"  />
+            </wsdl:output>
+            <wsdl:fault name="twoWayFault">
+                <soap:fault use="literal" name="twoWayFault" />
+            </wsdl:fault>           
+            <wsdl:fault name="wrapperFault">
+                <soap:fault use="literal" name="wrapperFault" />
+            </wsdl:fault>               
+        </wsdl:operation>
+        
+        <wsdl:operation name="headerTest">
+            <wsdl:input>
+                <soap:body parts="bodyParam" use="literal" 
message="tns:HeadersMsg"/>
+                <soap:header part="headerParam" use="literal" 
message="tns:HeadersMsg" />
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"  />
+            </wsdl:output>
+        </wsdl:operation>
+        
+    
+    </wsdl:binding>
+    
+    <wsdl:service name="BareDocLitService">
+        <wsdl:port binding="tns:DocLitBare" name="BareDocLitPort">
+            <soap:address 
location="http://localhost:6060/axis2/services/BareDocLitService"; />
+        </wsdl:port>
+    </wsdl:service>
+    
+</wsdl:definitions>
\ No newline at end of file

Modified: 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/BareTests.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/BareTests.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/BareTests.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/BareTests.java
 Mon Mar 29 19:08:34 2010
@@ -26,6 +26,7 @@ import junit.framework.Test;
 import junit.framework.TestSuite;
 import org.apache.axis2.jaxws.TestLogger;
 import org.apache.axis2.jaxws.framework.AbstractTestCase;
+import org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils;
 import org.apache.axis2.jaxws.sample.doclitbare.sei.BareDocLitService;
 import org.apache.axis2.jaxws.sample.doclitbare.sei.DocLitBarePortType;
 
@@ -175,4 +176,64 @@ public class BareTests extends AbstractT
             fail();
         }
     }
+    
+    public void testHeader() throws Exception {
+        TestLogger.logger.debug("------------------------------");
+        TestLogger.logger.debug("Test : " + getName());
+
+
+        BareDocLitService service = new BareDocLitService();
+        DocLitBarePortType proxy = service.getBareDocLitPort();
+        BindingProvider p = (BindingProvider) proxy;
+        p.getRequestContext().put(
+                                  BindingProvider.SOAPACTION_USE_PROPERTY, 
Boolean.TRUE);
+        p.getRequestContext().put(
+                                  BindingProvider.SOAPACTION_URI_PROPERTY, 
"headerTest");
+        p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
ENDPOINT_URL);
+
+        String request = "Hello World";
+        String response = proxy.headerTest(1, request);
+        assertTrue(response != null);
+        assertTrue(response.indexOf(request) > 0);
+        
+        // Try the test again
+        request = "Hello World";
+        response = proxy.headerTest(1,request);
+        assertTrue(response != null);
+        assertTrue(response.indexOf(request) > 0);
+
+        TestLogger.logger.debug("------------------------------");
+
+    }
+    
+    public void testHeaderWithNull() throws Exception {
+        TestLogger.logger.debug("------------------------------");
+        TestLogger.logger.debug("Test : " + getName());
+
+
+        BareDocLitService service = new BareDocLitService();
+        DocLitBarePortType proxy = service.getBareDocLitPort();
+        BindingProvider p = (BindingProvider) proxy;
+        p.getRequestContext().put(
+                                  BindingProvider.SOAPACTION_USE_PROPERTY, 
Boolean.TRUE);
+        p.getRequestContext().put(
+                                  BindingProvider.SOAPACTION_URI_PROPERTY, 
"headerTest");
+        p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
ENDPOINT_URL);
+        
+        // Don't write a header element when the @WebParam header parameter is 
null.
+        
p.getRequestContext().put(org.apache.axis2.jaxws.Constants.WRITE_HEADER_ELEMENT_IF_NULL,
 Boolean.FALSE);
+
+        String request = null;  // No header
+        String response = proxy.headerTest(1, request);
+        assertTrue(response != null);
+        assertTrue(response.indexOf("No Header") > 0);
+
+        // Try the test again
+        request = null;
+        response = proxy.headerTest(1,request);
+        assertTrue(response != null);
+        assertTrue(response.indexOf("No Header") > 0);
+
+        TestLogger.logger.debug("------------------------------");
+    }
 }

Modified: 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/DocLitBarePortTypeImpl.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/DocLitBarePortTypeImpl.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/DocLitBarePortTypeImpl.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/DocLitBarePortTypeImpl.java
 Mon Mar 29 19:08:34 2010
@@ -75,5 +75,16 @@ public class DocLitBarePortTypeImpl impl
                throws FaultBeanWithWrapper, SimpleFault{
                
        }
+       
+        public String headerTest(
+             int allByMyself,
+             String headerParam) {
+         if (headerParam == null) {
+             return "Acknowledgement: No Header";
+         } else {
+             return "Acknowledgement: Header is " + headerParam;
+         }
+         
+     }
            
 }

Modified: 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl
 Mon Mar 29 19:08:34 2010
@@ -20,173 +20,196 @@
   -->
 
 <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
-       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
-       xmlns:tns="http://doclitbare.sample.test.org";
-       xmlns:xsd="http://www.w3.org/2001/XMLSchema"; name="DoclitBare"
-       targetNamespace="http://doclitbare.sample.test.org";>
-       
-       <wsdl:types>
-               <xsd:schema
-                       targetNamespace="http://doclitbare.sample.test.org";
-                       xmlns:tns="http://doclitbare.sample.test.org";
-                       xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
-               
-               <xsd:element name="String" type="xsd:string" />
-               <xsd:element name="Integer" type="xsd:int" />           
-
-               <xsd:element name="Composite">          
-                       <xsd:complexType>
-                               <xsd:sequence>
-                                       <xsd:element name="myElement" 
type="xsd:string" />
-                               </xsd:sequence>
-                       </xsd:complexType>
-               </xsd:element>
-
-               <!-- basic fault test, this should be mapped into message part
-                    of the generated faultBean
-                 -->
-               <xsd:element name="MyFault" type="xsd:string" />
-
-               <!-- wrapper exception and polymorphic fault test
-                    This bean should have an associated exception
-                 -->
-               <xsd:element name="MyBaseFaultBean" type="tns:BaseFault" />     
        
-
-               <xsd:complexType name="BaseFault">
-                       <xsd:sequence>
-                               <xsd:element name="message" type="xsd:string" />
-                               <xsd:element name="error_code" type="xsd:int" 
/>                                        
-                       </xsd:sequence>
-               </xsd:complexType>
-
-               <xsd:complexType name="ExtendedFault">
-                       <xsd:complexContent>
-                         <xsd:extension base="tns:BaseFault">
-                           <xsd:sequence>
-                               <xsd:element name="another_message" 
type="xsd:string" />
-                               <xsd:element name="another_error_code" 
type="xsd:int" />                                        
-                           </xsd:sequence>
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
+    xmlns:tns="http://doclitbare.sample.test.org";
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"; name="DoclitBare"
+    targetNamespace="http://doclitbare.sample.test.org";>
+    
+    <wsdl:types>
+        <xsd:schema
+            targetNamespace="http://doclitbare.sample.test.org";
+            xmlns:tns="http://doclitbare.sample.test.org";
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
+        
+        <xsd:element name="String" type="xsd:string" />
+        <xsd:element name="Integer" type="xsd:int" />       
+        
+        <xsd:element name="HeaderString" type="xsd:string" />
+        <xsd:element name="BodyInteger" type="xsd:int" />
+
+        <xsd:element name="Composite">      
+            <xsd:complexType>
+                <xsd:sequence>
+                    <xsd:element name="myElement" type="xsd:string" />
+                </xsd:sequence>
+            </xsd:complexType>
+        </xsd:element>
+
+        <!-- basic fault test, this should be mapped into message part
+             of the generated faultBean
+          -->
+        <xsd:element name="MyFault" type="xsd:string" />
+
+        <!-- wrapper exception and polymorphic fault test
+             This bean should have an associated exception
+          -->
+        <xsd:element name="MyBaseFaultBean" type="tns:BaseFault" />     
+
+        <xsd:complexType name="BaseFault">
+            <xsd:sequence>
+                <xsd:element name="message" type="xsd:string" />
+                <xsd:element name="error_code" type="xsd:int" />               
     
+            </xsd:sequence>
+        </xsd:complexType>
+
+        <xsd:complexType name="ExtendedFault">
+            <xsd:complexContent>
+              <xsd:extension base="tns:BaseFault">
+                <xsd:sequence>
+                <xsd:element name="another_message" type="xsd:string" />
+                <xsd:element name="another_error_code" type="xsd:int" />       
             
+                </xsd:sequence>
               </xsd:extension>
-                       </xsd:complexContent>
-               </xsd:complexType>
+            </xsd:complexContent>
+        </xsd:complexType>
 
-               </xsd:schema>
-       </wsdl:types>
+        </xsd:schema>
+    </wsdl:types>
 
-       <wsdl:message name="NoParam" />
+    <wsdl:message name="NoParam" />
 
-    <wsdl:message name="echoStringIn">
-               <wsdl:part name="echoStringIn" element="tns:String" />
-       </wsdl:message>
-       
-       <wsdl:message name="echoStringOut">
-               <wsdl:part name="echoStringOut" element="tns:String" />
-       </wsdl:message>
-       
-       <wsdl:message name="SingleParam">
-               <wsdl:part name="allByMyself" element="tns:String" />
-       </wsdl:message>
-
-       <wsdl:message name="SingleParamInt">
-               <wsdl:part name="allByMyself" element="tns:Integer" />
-       </wsdl:message>
-       
-       <wsdl:message name="SingleParamOther">
-               <wsdl:part name="allByMyself" element="tns:Composite" />
-       </wsdl:message> 
-
-       <wsdl:message name="SimpleFault">
-               <wsdl:part name="description" element="tns:MyFault" />  
-       </wsdl:message> 
-
-       <wsdl:message name="FaultBeanWithWrapper">
-               <wsdl:part name="description" element="tns:MyBaseFaultBean" />  
-       </wsdl:message> 
-
-       <wsdl:portType name="DocLitBarePortType">
-               
-               <wsdl:operation name="oneWayEmpty">
-                       <wsdl:input message="tns:NoParam" />
-               </wsdl:operation>
-               
-               <wsdl:operation name="oneWay">
-                       <wsdl:input message="tns:SingleParam" />
-               </wsdl:operation>
-               
-               <wsdl:operation name="echoString">
-                       <wsdl:input message="tns:echoStringIn" />
-                       <wsdl:output message="tns:echoStringOut" />
-               </wsdl:operation>               
-               
-               <wsdl:operation name="twoWaySimple">
-                       <wsdl:input message="tns:SingleParamInt" />
-                       <wsdl:output message="tns:SingleParam" />
-               </wsdl:operation>
-               
-               <wsdl:operation name="twoWayHolder">
-                       <wsdl:input message="tns:SingleParamOther" />
-                       <wsdl:output message="tns:SingleParamOther" />
-                       <wsdl:fault message="tns:SimpleFault" 
name="twoWayFault"/>
-                       <wsdl:fault message="tns:FaultBeanWithWrapper" 
name="wrapperFault"/>
-               </wsdl:operation>
-                       
-       </wsdl:portType>
-       
-       <wsdl:binding name="DocLitBare" type="tns:DocLitBarePortType">
-               <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"; />
-
-               <wsdl:operation name="oneWayEmpty">
-                       <wsdl:input>
-                               <soap:body use="literal"  />
-                       </wsdl:input>
-               </wsdl:operation>
-               
-               <wsdl:operation name="oneWay">
-                       <wsdl:input>
-                               <soap:body use="literal"  />
-                       </wsdl:input>
-               </wsdl:operation>
-               
-               <wsdl:operation name="echoString">
-                   <wsdl:input>
-                               <soap:body use="literal"  />
-                       </wsdl:input>
-                       <wsdl:output>
-                               <soap:body use="literal"  />
-                       </wsdl:output>
-               </wsdl:operation>       
-               
-               <wsdl:operation name="twoWaySimple">
-                       <wsdl:input>
-                               <soap:body use="literal"  />
-                       </wsdl:input>
-                       <wsdl:output>
-                               <soap:body use="literal"  />
-                       </wsdl:output>
-               </wsdl:operation>       
-               
-               <wsdl:operation name="twoWayHolder">
-                       <wsdl:input>
-                               <soap:body use="literal"  />
-                       </wsdl:input>
-                       <wsdl:output>
-                               <soap:body use="literal"  />
-                       </wsdl:output>
-                       <wsdl:fault name="twoWayFault">
-                               <soap:fault use="literal" name="twoWayFault" />
-                       </wsdl:fault>                   
-                       <wsdl:fault name="wrapperFault">
-                               <soap:fault use="literal" name="wrapperFault" />
-                       </wsdl:fault>                           
-               </wsdl:operation>
-               
-       
-       </wsdl:binding>
-       
-       <wsdl:service name="BareDocLitService">
-               <wsdl:port binding="tns:DocLitBare" name="BareDocLitPort">
-                       <soap:address 
location="http://localhost:6060/axis2/services/BareDocLitService"; />
-               </wsdl:port>
-       </wsdl:service>
-       
+        <wsdl:message name="echoStringIn">
+        <wsdl:part name="echoStringIn" element="tns:String" />
+    </wsdl:message>
+    
+    <wsdl:message name="echoStringOut">
+        <wsdl:part name="echoStringOut" element="tns:String" />
+    </wsdl:message>
+    
+    <wsdl:message name="SingleParam">
+        <wsdl:part name="allByMyself" element="tns:String" />
+    </wsdl:message>
+
+   <wsdl:message name="HeadersMsg">
+        <wsdl:part name="bodyParam" element="tns:BodyInteger" />
+        <wsdl:part name="headerParam" element="tns:HeaderString" />
+    </wsdl:message>
+
+    <wsdl:message name="SingleParamInt">
+        <wsdl:part name="allByMyself" element="tns:Integer" />
+    </wsdl:message>
+    
+    <wsdl:message name="SingleParamOther">
+        <wsdl:part name="allByMyself" element="tns:Composite" />
+    </wsdl:message> 
+
+    <wsdl:message name="SimpleFault">
+        <wsdl:part name="description" element="tns:MyFault" />  
+    </wsdl:message> 
+
+    <wsdl:message name="FaultBeanWithWrapper">
+        <wsdl:part name="description" element="tns:MyBaseFaultBean" />  
+    </wsdl:message> 
+
+    <wsdl:portType name="DocLitBarePortType">
+        
+        <wsdl:operation name="oneWayEmpty">
+            <wsdl:input message="tns:NoParam" />
+        </wsdl:operation>
+        
+        <wsdl:operation name="oneWay">
+            <wsdl:input message="tns:SingleParam" />
+        </wsdl:operation>
+        
+        <wsdl:operation name="echoString">
+            <wsdl:input message="tns:echoStringIn" />
+            <wsdl:output message="tns:echoStringOut" />
+        </wsdl:operation>       
+        
+        <wsdl:operation name="twoWaySimple">
+            <wsdl:input message="tns:SingleParamInt" />
+            <wsdl:output message="tns:SingleParam" />
+        </wsdl:operation>
+        
+        <wsdl:operation name="twoWayHolder">
+            <wsdl:input message="tns:SingleParamOther" />
+            <wsdl:output message="tns:SingleParamOther" />
+            <wsdl:fault message="tns:SimpleFault" name="twoWayFault"/>
+            <wsdl:fault message="tns:FaultBeanWithWrapper" 
name="wrapperFault"/>
+        </wsdl:operation>
+
+        <wsdl:operation name="headerTest">
+            <wsdl:input message="tns:HeadersMsg" />
+            <wsdl:output message="tns:SingleParam" />
+        </wsdl:operation>
+            
+    </wsdl:portType>
+    
+    <wsdl:binding name="DocLitBare" type="tns:DocLitBarePortType">
+        <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"; />
+
+        <wsdl:operation name="oneWayEmpty">
+            <wsdl:input>
+                <soap:body use="literal"  />
+            </wsdl:input>
+        </wsdl:operation>
+        
+        <wsdl:operation name="oneWay">
+            <wsdl:input>
+                <soap:body use="literal"  />
+            </wsdl:input>
+        </wsdl:operation>
+        
+        <wsdl:operation name="echoString">
+            <wsdl:input>
+                <soap:body use="literal"  />
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"  />
+            </wsdl:output>
+        </wsdl:operation>   
+        
+        <wsdl:operation name="twoWaySimple">
+            <wsdl:input>
+                <soap:body use="literal"  />
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"  />
+            </wsdl:output>
+        </wsdl:operation>   
+        
+        <wsdl:operation name="twoWayHolder">
+            <wsdl:input>
+                <soap:body use="literal"  />
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"  />
+            </wsdl:output>
+            <wsdl:fault name="twoWayFault">
+                <soap:fault use="literal" name="twoWayFault" />
+            </wsdl:fault>           
+            <wsdl:fault name="wrapperFault">
+                <soap:fault use="literal" name="wrapperFault" />
+            </wsdl:fault>               
+        </wsdl:operation>
+        
+        <wsdl:operation name="headerTest">
+            <wsdl:input>
+                <soap:body parts="bodyParam" use="literal" 
message="tns:HeadersMsg"/>
+                <soap:header part="headerParam" use="literal" 
message="tns:HeadersMsg" />
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"  />
+            </wsdl:output>
+        </wsdl:operation>
+        
+    
+    </wsdl:binding>
+    
+    <wsdl:service name="BareDocLitService">
+        <wsdl:port binding="tns:DocLitBare" name="BareDocLitPort">
+            <soap:address 
location="http://localhost:6060/axis2/services/BareDocLitService"; />
+        </wsdl:port>
+    </wsdl:service>
+    
 </wsdl:definitions>

Modified: 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/sei/DocLitBarePortType.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/sei/DocLitBarePortType.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/sei/DocLitBarePortType.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/sample/doclitbare/sei/DocLitBarePortType.java
 Mon Mar 29 19:08:34 2010
@@ -20,6 +20,8 @@
 
 package org.apache.axis2.jaxws.sample.doclitbare.sei;
 
+import org.apache.axis2.jaxws.sample.doclitbare.sei.FaultBeanWithWrapper;
+import org.apache.axis2.jaxws.sample.doclitbare.sei.SimpleFault;
 import org.test.sample.doclitbare.Composite;
 
 import javax.jws.Oneway;
@@ -93,4 +95,18 @@ public interface DocLitBarePortType {
         throws FaultBeanWithWrapper, SimpleFault
     ;
 
+    /**
+     * headerTest
+     * @param bodyParam
+     * @param headerParam
+     * @return allByMyself
+     */
+    @WebMethod
+    @WebResult(name = "String", targetNamespace = 
"http://doclitbare.sample.test.org";, partName = "allByMyself")
+    public String headerTest(
+        @WebParam(name = "BodyInteger", targetNamespace = 
"http://doclitbare.sample.test.org";, partName = "bodyParam")
+        int allByMyself,
+        @WebParam(name = "HeaderString", targetNamespace = 
"http://doclitbare.sample.test.org";, partName = "headerParam", header=true)
+        String headerParam)
+    ;
 }

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/Constants.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/Constants.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/Constants.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/Constants.java
 Mon Mar 29 19:08:34 2010
@@ -108,4 +108,22 @@ public interface Constants {
      * JAX-WS layer when a SOAP Fault is received on response. 
      */
     public static final String THROW_EXCEPTION_IF_SOAP_FAULT = 
"jaxws.response.throwExceptionIfSOAPFault";
+    
+    /** 
+     * Context Property:
+     * Name: jaxws.header.parameter.isNull.write.element.with.xsi.nil
+     * Value: Boolean.TRUE or Boolean.FALSE
+     * Default: null, which is interpretted as Boolean.TRUE
+     * 
+     * If the @WebParam indicates that the parameter is mapped to a header 
+     * and the argument for the parameter is null, this property is queried by 
the
+     * JAX-WS runtime to determine if 
+     *  a) TRUE: A SOAP header element is serialized with an xsi:nil="true" 
attribute
+     *  b) FALSE: No SOAP header element is serialized.
+     *  
+     *  The default is TRUE because the JAX-WS developers feel that this is a 
safer
+     *  approach.
+     * 
+     */
+    public static final String WRITE_HEADER_ELEMENT_IF_NULL = 
"jaxws.header.parameter.isNull.write.element.with.xsi.nil";
 }

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
 Mon Mar 29 19:08:34 2010
@@ -394,7 +394,7 @@ public class JAXWSProxyHandler extends B
                 
endpointDesc.getEndpointInterfaceDescription().getOperation(method);
 
         Message message = MethodMarshallerFactory.getMarshaller(operationDesc, 
true, null)
-                .marshalRequest(args, operationDesc);
+                .marshalRequest(args, operationDesc, this.getRequestContext());
 
         if (log.isDebugEnabled()) {
             log.debug("Request Message created successfully.");

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodMarshaller.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodMarshaller.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodMarshaller.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodMarshaller.java
 Mon Mar 29 19:08:34 2010
@@ -19,6 +19,8 @@
 
 package org.apache.axis2.jaxws.marshaller;
 
+import java.util.Map;
+
 import org.apache.axis2.jaxws.description.OperationDescription;
 import org.apache.axis2.jaxws.message.Message;
 import org.apache.axis2.jaxws.message.Protocol;
@@ -59,9 +61,13 @@ public interface MethodMarshaller {
      * This method converts SIGNATURE_ARGS into a Message. It is used on the 
client
      *
      * @param signatureArgs
+     * @param opDesc
+     * @param requestContext
      * @return Message
      */
-    public Message marshalRequest(Object[] signatureArgs, OperationDescription 
opDesc)
+    public Message marshalRequest(Object[] signatureArgs, 
+                OperationDescription opDesc,
+                Map<String, Object> requestContext) 
             throws WebServiceException;
 
     /**

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMethodMarshaller.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMethodMarshaller.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMethodMarshaller.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMethodMarshaller.java
 Mon Mar 29 19:08:34 2010
@@ -43,6 +43,7 @@ import javax.xml.ws.WebServiceException;
 import java.lang.reflect.Array;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.TreeSet;
 
 public class DocLitBareMethodMarshaller implements MethodMarshaller {
@@ -300,7 +301,7 @@ public class DocLitBareMethodMarshaller 
                                                                          
false);
 
             // Put values onto the message
-            MethodMarshallerUtils.toMessage(pvList, m, packages);
+            MethodMarshallerUtils.toMessage(pvList, m, packages, null);
             
             // Enable SWA for nested SwaRef attachments
             if (operationDesc.hasResponseSwaRefAttachments()) {
@@ -313,7 +314,9 @@ public class DocLitBareMethodMarshaller 
         }
     }
 
-    public Message marshalRequest(Object[] signatureArguments, 
OperationDescription operationDesc)
+    public Message marshalRequest(Object[] signatureArguments, 
+                OperationDescription operationDesc,
+                Map<String, Object> requestContext)
             throws WebServiceException {
 
         EndpointInterfaceDescription ed = 
operationDesc.getEndpointInterfaceDescription();
@@ -355,7 +358,7 @@ public class DocLitBareMethodMarshaller 
                                                                          
false, false);
 
             // Put values onto the message
-            MethodMarshallerUtils.toMessage(pvList, m, packages);
+            MethodMarshallerUtils.toMessage(pvList, m, packages, 
requestContext);
             
             // Enable SWA for nested SwaRef attachments
             if (operationDesc.hasRequestSwaRefAttachments()) {

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMinimalMethodMarshaller.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMinimalMethodMarshaller.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMinimalMethodMarshaller.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMinimalMethodMarshaller.java
 Mon Mar 29 19:08:34 2010
@@ -40,6 +40,7 @@ import org.apache.commons.logging.LogFac
 import javax.xml.namespace.QName;
 import javax.xml.ws.WebServiceException;
 import java.util.List;
+import java.util.Map;
 import java.util.TreeSet;
 
 
@@ -315,7 +316,7 @@ public class DocLitBareMinimalMethodMars
             }
 
             // Put values onto the message
-            MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            MethodMarshallerUtils.toMessage(pdeList, m, packages, null);
             
             // Enable SWA for nested SwaRef attachments
             if (operationDesc.hasResponseSwaRefAttachments()) {
@@ -328,8 +329,10 @@ public class DocLitBareMinimalMethodMars
         }
     }
 
-    public Message marshalRequest(Object[] signatureArguments, 
OperationDescription operationDesc)
-            throws WebServiceException {
+    public Message marshalRequest(Object[] signatureArguments, 
+            OperationDescription operationDesc,
+            Map<String, Object> requestContext)
+        throws WebServiceException {
 
         EndpointInterfaceDescription ed = 
operationDesc.getEndpointInterfaceDescription();
         EndpointDescription endpointDesc = ed.getEndpointDescription();
@@ -380,7 +383,7 @@ public class DocLitBareMinimalMethodMars
             }
 
             // Put values onto the message...marshalling by type
-            MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            MethodMarshallerUtils.toMessage(pdeList, m, packages, 
requestContext);
             
             // Enable SWA for nested SwaRef attachments
             if (operationDesc.hasRequestSwaRefAttachments()) {

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java
 Mon Mar 29 19:08:34 2010
@@ -409,8 +409,10 @@ public class DocLitWrappedMethodMarshall
         }
     }
 
-    public Message marshalRequest(Object[] signatureArguments, 
OperationDescription operationDesc)
-            throws WebServiceException {
+    public Message marshalRequest(Object[] signatureArguments, 
+            OperationDescription operationDesc,
+            Map<String, Object> requestContext)
+        throws WebServiceException {
 
         EndpointInterfaceDescription ed = 
operationDesc.getEndpointInterfaceDescription();
         EndpointDescription endpointDesc = ed.getEndpointDescription();

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMinimalMethodMarshaller.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMinimalMethodMarshaller.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMinimalMethodMarshaller.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMinimalMethodMarshaller.java
 Mon Mar 29 19:08:34 2010
@@ -57,6 +57,7 @@ import java.lang.reflect.ParameterizedTy
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.TreeSet;
 
 /**
@@ -80,8 +81,10 @@ public class DocLitWrappedMinimalMethodM
         super();
     }
 
-    public Message marshalRequest(Object[] signatureArguments, 
OperationDescription operationDesc)
-            throws WebServiceException {
+    public Message marshalRequest(Object[] signatureArguments, 
+            OperationDescription operationDesc,
+            Map<String, Object> requestContext)
+        throws WebServiceException {
 
         if (log.isDebugEnabled()) {
             log.debug("enter marshalRequest operationDesc = " + 
operationDesc.getName());
@@ -155,7 +158,7 @@ public class DocLitWrappedMinimalMethodM
             }
             
             // Put values onto the message
-            MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            MethodMarshallerUtils.toMessage(pdeList, m, packages, 
requestContext);
             
             // Enable SWA for nested SwaRef attachments
             if (operationDesc.hasRequestSwaRefAttachments()) {
@@ -400,7 +403,7 @@ public class DocLitWrappedMinimalMethodM
 
             // TODO Should we check for null output body values?  Should we 
check for null output header values ?
             // Put values onto the message
-            MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            MethodMarshallerUtils.toMessage(pdeList, m, packages, null);
             
             // Enable SWA for nested SwaRef attachments
             if (operationDesc.hasResponseSwaRefAttachments()) {

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java
 Mon Mar 29 19:08:34 2010
@@ -569,7 +569,7 @@ public class DocLitWrappedPlusMethodMars
                         pde.setByJavaTypeClass(actualType);
                     }
                 }
-                MethodMarshallerUtils.toMessage(headerPDEList, m, packages);
+                MethodMarshallerUtils.toMessage(headerPDEList, m, packages, 
null);
             }
             
             // Enable SWA for nested SwaRef attachments
@@ -583,8 +583,10 @@ public class DocLitWrappedPlusMethodMars
         }
     }
 
-    public Message marshalRequest(Object[] signatureArguments, 
OperationDescription operationDesc)
-            throws WebServiceException {
+    public Message marshalRequest(Object[] signatureArguments, 
+            OperationDescription operationDesc,
+            Map<String, Object> requestContext)
+        throws WebServiceException {
         if (log.isDebugEnabled()) {
             log.debug("Calling 
DocLitWrapperPlusMethodMarshaller.marshalRequest");
             log.debug(
@@ -702,7 +704,7 @@ public class DocLitWrappedPlusMethodMars
                     }
                 }
 
-                MethodMarshallerUtils.toMessage(headerPDEList, m, packages);
+                MethodMarshallerUtils.toMessage(headerPDEList, m, packages, 
requestContext);
             }
             
             // Enable SWA for nested SwaRef attachments

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/MethodMarshallerUtils.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/MethodMarshallerUtils.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/MethodMarshallerUtils.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/MethodMarshallerUtils.java
 Mon Mar 29 19:08:34 2010
@@ -24,6 +24,7 @@ import org.apache.axis2.description.Axis
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.Parameter;
 import org.apache.axis2.java.security.AccessController;
+import org.apache.axis2.jaxws.Constants;
 import org.apache.axis2.jaxws.ExceptionFactory;
 import org.apache.axis2.jaxws.core.MessageContext;
 import org.apache.axis2.jaxws.description.AttachmentDescription;
@@ -34,6 +35,7 @@ import org.apache.axis2.jaxws.descriptio
 import org.apache.axis2.jaxws.description.ParameterDescription;
 import org.apache.axis2.jaxws.description.ServiceDescription;
 import org.apache.axis2.jaxws.i18n.Messages;
+import org.apache.axis2.jaxws.marshaller.impl.alt.Element;
 import org.apache.axis2.jaxws.message.Block;
 import org.apache.axis2.jaxws.message.Message;
 import org.apache.axis2.jaxws.message.Protocol;
@@ -82,6 +84,7 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.List;
+import java.util.Map;
 import java.util.TreeSet;
 
 /** Static Utilty Classes used by the MethodMarshaller implementations in the 
alt package. */
@@ -92,6 +95,7 @@ public class MethodMarshallerUtils {
     private static JAXBBlockFactory factory =
             
(JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);
 
+    
     /** Intentionally Private.  This is a static utility class */
     private MethodMarshallerUtils() {
     }
@@ -334,8 +338,18 @@ public class MethodMarshallerUtils {
                         index++;
                     }
                     
-                    Element element = new 
Element(block.getBusinessObject(consume),
-                                                  block.getQName());
+                    Element element;
+                    if (block != null) {
+                        element = new Element(block.getBusinessObject(true), 
+                                              block.getQName());
+                    } else {
+                        // The block could be null if the header is missing 
(which is allowed)
+                        QName qName = new 
QName(pd.getTargetNamespace(),pd.getParameterName());
+                        if (log.isDebugEnabled()) {
+                            log.debug("There is no value in the incoming 
message for " + qName);
+                        }
+                        element = new Element(null, qName, 
pd.getParameterActualType());
+                    }
                     PDElement pde =
                         new PDElement(pd, element, unmarshalByJavaType == null 
? null
                                 : unmarshalByJavaType[i]);
@@ -503,17 +517,20 @@ public class MethodMarshallerUtils {
         }
     }
 
+    
     /**
      * Marshal the element enabled objects (pvList) to the Message
      *
      * @param pdeList  element enabled objects
      * @param message  Message
      * @param packages Packages needed to do a JAXB Marshal
+     * @param contextProperties RequestContext or ResponseContext or null
      * @throws MessageException
      */
     static void toMessage(List<PDElement> pdeList,
                           Message message,
-                          TreeSet<String> packages) throws WebServiceException 
{
+                          TreeSet<String> packages, 
+                          Map<String, Object> contextProperties) throws 
WebServiceException {
 
         int totalBodyBlocks = 0;
         for (int i = 0; i < pdeList.size(); i++) {
@@ -545,7 +562,7 @@ public class MethodMarshallerUtils {
                 }
                 // Create a JAXBBlock out of the value.
                 // (Note that the PDElement.getValue always returns an object
-                // that has an element rendering...ie. it is either a 
JAXBElement o
+                // that has an element rendering...ie. it is either a 
JAXBElement or
                 // has @XmlRootElement defined
                 Block block =
                     factory.createFrom(pde.getElement().getElementValue(),
@@ -554,8 +571,18 @@ public class MethodMarshallerUtils {
                 
                 if (pde.getParam().isHeader()) {
                     // Header block
-                    QName qname = block.getQName();
-                    message.setHeaderBlock(qname.getNamespaceURI(), 
qname.getLocalPart(), block);
+                    if (pde.getElement().getTypeValue() != null) {
+                        // The value is non-null, add a header.
+                        QName qname = block.getQName();
+                        message.setHeaderBlock(qname.getNamespaceURI(), 
qname.getLocalPart(), block);
+                    } else {
+                        // The value is null, it is still best to add a nil 
header.
+                        // But query to see if an override is desired.
+                        if (isWriteWithNilHeader(contextProperties)) {
+                            QName qname = block.getQName();
+                            message.setHeaderBlock(qname.getNamespaceURI(), 
qname.getLocalPart(), block);
+                        }
+                    }
                 } else {
                     // Body block
                     if (totalBodyBlocks < 1) {
@@ -584,6 +611,32 @@ public class MethodMarshallerUtils {
     }
 
     /**
+     * @return Determine if a null header parameter should be written with a 
header
+     * element containing nill (true) or whether the header element should
+     * not be written at all (false)
+     */
+    private static boolean isWriteWithNilHeader(Map<String, Object> map) {
+        if (map == null) {
+            if (log.isDebugEnabled()) {
+                log.debug("Context Properties are not available.  Return true 
");
+            }
+            return true;
+        }
+        Object value = map.get(Constants.WRITE_HEADER_ELEMENT_IF_NULL);
+        if (value == null) {
+            if (log.isDebugEnabled()) {
+                log.debug("Write header element with xsi:nil because the 
following property is not set " + 
+                        Constants.WRITE_HEADER_ELEMENT_IF_NULL);
+            }
+            return true;
+        } else {
+            if (log.isDebugEnabled()) {
+                log.debug("Key=" + Constants.WRITE_HEADER_ELEMENT_IF_NULL + " 
Value=" + value);
+            }
+            return ((Boolean) value).booleanValue();          
+        }
+    }
+    /**
      * Marshals the return object to the message (used on server to marshal 
return object)
      *
      * @param returnElement              element

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/RPCLitMethodMarshaller.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/RPCLitMethodMarshaller.java?rev=928871&r1=928870&r2=928871&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/RPCLitMethodMarshaller.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/RPCLitMethodMarshaller.java
 Mon Mar 29 19:08:34 2010
@@ -41,6 +41,7 @@ import javax.jws.soap.SOAPBinding.Style;
 import javax.xml.namespace.QName;
 import javax.xml.ws.WebServiceException;
 import java.util.List;
+import java.util.Map;
 import java.util.TreeSet;
 
 public class RPCLitMethodMarshaller implements MethodMarshaller {
@@ -51,8 +52,10 @@ public class RPCLitMethodMarshaller impl
         super();
     }
 
-    public Message marshalRequest(Object[] signatureArguments, 
OperationDescription operationDesc)
-            throws WebServiceException {
+    public Message marshalRequest(Object[] signatureArguments, 
+            OperationDescription operationDesc,
+            Map<String, Object> requestContext)
+        throws WebServiceException {
 
         EndpointInterfaceDescription ed = 
operationDesc.getEndpointInterfaceDescription();
         EndpointDescription endpointDesc = ed.getEndpointDescription();
@@ -139,7 +142,7 @@ public class RPCLitMethodMarshaller impl
             }
 
             // Put values onto the message
-            MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            MethodMarshallerUtils.toMessage(pdeList, m, packages, 
requestContext);
             
             // Enable SWA for nested SwaRef attachments
             if (operationDesc.hasRequestSwaRefAttachments()) {
@@ -373,7 +376,7 @@ public class RPCLitMethodMarshaller impl
             }
             // TODO Should we check for null output body values?  Should we 
check for null output header values ?
             // Put values onto the message
-            MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            MethodMarshallerUtils.toMessage(pdeList, m, packages, null);
             
             // Enable SWA for nested SwaRef attachments
             if (operationDesc.hasResponseSwaRefAttachments()) {


Reply via email to