Author: mszefler
Date: Thu Sep 28 15:04:38 2006
New Revision: 451039

URL: http://svn.apache.org/viewvc?view=rev&rev=451039
Log:
Fixed NPE possibility when AXIS2 returns null response.

Modified:
    
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ExternalService.java

Modified: 
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ExternalService.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ExternalService.java?view=diff&rev=451039&r1=451038&r2=451039
==============================================================================
--- 
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ExternalService.java
 (original)
+++ 
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ExternalService.java
 Thu Sep 28 15:04:38 2006
@@ -102,26 +102,32 @@
                         return serviceClient.sendReceive(payload);
                     }
                 });
-                OMElement reply = null;
+                OMElement reply;
                 try {
                     reply = freply.get();
 
-                    final Message response = 
odeMex.createMessage(odeMex.getOperation().getOutput().getMessage().getQName());
-                    Element responseElmt = OMUtils.toDOM(reply);
-                    responseElmt = SOAPUtils.unwrap(responseElmt, _definition,
-                            odeMex.getOperation().getOutput().getMessage(), 
_serviceName);
-                    __log.debug("Received synchronous response for MEX " + 
odeMex);
-                    __log.debug("Message: " + 
DOMUtils.domToString(responseElmt));
-                    response.setMessage(responseElmt);
-                    odeMex.reply(response);
+                    if (reply == null) {
+                        String errmsg = "Received empty (null) reply for ODE 
mex " + odeMex;
+                        __log.error(errmsg);
+                        
odeMex.replyWithFailure(MessageExchange.FailureType.COMMUNICATION_ERROR, 
errmsg, null);
+                    } else {
+                        Message response = 
odeMex.createMessage(odeMex.getOperation().getOutput().getMessage().getQName());
+                        Element responseElmt = OMUtils.toDOM(reply);
+                        responseElmt = SOAPUtils.unwrap(responseElmt, 
_definition,
+                                
odeMex.getOperation().getOutput().getMessage(), _serviceName);
+                        __log.debug("Received synchronous response for MEX " + 
odeMex);
+                        __log.debug("Message: " + 
DOMUtils.domToString(responseElmt));
+                        response.setMessage(responseElmt);
+                        odeMex.reply(response);
+                    }
                 } catch (Exception e) {
-                    __log.error("We've been interrupted while waiting for 
reply to MEX " + odeMex + "!!!");
                     String errmsg = "Error sending message to Axis2 for ODE 
mex " + odeMex;
                     __log.error(errmsg, e);
                     
odeMex.replyWithFailure(MessageExchange.FailureType.COMMUNICATION_ERROR, 
errmsg, null);
                 }
-            } else
+            } else /** one-way case **/ {
                 serviceClient.fireAndForget(payload);
+            }
         } catch (AxisFault axisFault) {
             String errmsg = "Error sending message to Axis2 for ODE mex " + 
odeMex;
             __log.error(errmsg, axisFault);


Reply via email to