Author: dims
Date: Thu May 24 21:11:21 2007
New Revision: 541530

URL: http://svn.apache.org/viewvc?view=rev&rev=541530
Log:
Fix for AXIS2-2707 - JAXBDispatch didn't handle value being null in the 
createMessageFromValue method

Modified:
    
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/dispatch/JAXBDispatch.java

Modified: 
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/dispatch/JAXBDispatch.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/dispatch/JAXBDispatch.java?view=diff&rev=541530&r1=541529&r2=541530
==============================================================================
--- 
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/dispatch/JAXBDispatch.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/dispatch/JAXBDispatch.java
 Thu May 24 21:11:21 2007
@@ -28,6 +28,9 @@
 import org.apache.axis2.jaxws.message.factory.BlockFactory;
 import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;
 import org.apache.axis2.jaxws.message.factory.MessageFactory;
+import org.apache.axis2.jaxws.message.factory.SOAPEnvelopeBlockFactory;
+import org.apache.axis2.jaxws.message.factory.SourceBlockFactory;
+import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;
 import org.apache.axis2.jaxws.registry.FactoryRegistry;
 import org.apache.axis2.jaxws.spi.ServiceDelegate;
 import org.apache.axis2.jaxws.utility.XMLRootElementUtil;
@@ -36,7 +39,10 @@
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.transform.Source;
 import javax.xml.ws.Service.Mode;
+import javax.xml.ws.WebServiceException;
 
 public class JAXBDispatch<T> extends BaseDispatch<T> {
     private static final Log log = LogFactory.getLog(JAXBDispatch.class);
@@ -64,9 +70,24 @@
 
     public Message createMessageFromValue(Object value) {
         Message message = null;
+        
+        if (value == null) {
+            if (log.isDebugEnabled()) {
+                log.debug("Dispatch invoked with null parameter Value");
+                log.debug("creating empty soap message");
+            }
+            try {
+                return createEmptyMessage(
+                        
Protocol.getProtocolForBinding(endpointDesc.getClientBindingID()));
+
+            } catch (XMLStreamException e) {
+                throw ExceptionFactory.makeWebServiceException(e);
+            }
+        }
+        
         try {
             JAXBBlockFactory factory =
-                    
(JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);
+                
(JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);
 
             Class clazz = value.getClass();
             JAXBBlockContext context = null;
@@ -154,4 +175,11 @@
 
         return value;
     }
+    
+    private Message createEmptyMessage(Protocol protocol)
+            throws WebServiceException, XMLStreamException {
+        MessageFactory mf = 
(MessageFactory)FactoryRegistry.getFactory(MessageFactory.class);
+        Message m = mf.create(protocol);
+        return m;
+    }    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to