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);