TUSCANY-3838: call PolicyHandler.afterInvoke() when AxisFault is thrown
git-svn-id: https://svn.apache.org/repos/asf/tuscany/sca-java-1.x/trunk@1086757 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java b/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java
index 4087bd8..023e3da 100644
--- a/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java
+++ b/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java
@@ -164,6 +164,7 @@
Axis2BindingHeaderConfigurator.setHeader(requestMC, msg, axis2TokenAuthenticationPolicy.getTokenName());
}
+ MessageContext responseMC = null;
// Allow privileged access to read properties. Requires PropertiesPermission read in
// security policy.
try {
@@ -176,12 +177,13 @@
} catch (PrivilegedActionException e) {
operationClient.complete(requestMC);
throw (AxisFault)e.getException();
- }
-
- MessageContext responseMC = operationClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+ } finally {
+ // TUSCANY-3838: call afterInvoke() on both normal and exception paths
+ responseMC = operationClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- for ( PolicyHandler policyHandler : policyHandlerList ) {
- policyHandler.afterInvoke(msg, responseMC, operationClient);
+ for ( PolicyHandler policyHandler : policyHandlerList ) {
+ policyHandler.afterInvoke(msg, responseMC, operationClient);
+ }
}
OMElement response = responseMC.getEnvelope().getBody().getFirstElement();