You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2007/05/25 06:11:21 UTC

svn commit: r541530 - /webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/dispatch/JAXBDispatch.java

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: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org