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