Repository: cxf Updated Branches: refs/heads/master e0036b70c -> b6d3e1531
[CXF-5840]:ResponseTimeCounter counts the one-way fault message twice Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/b6d3e153 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/b6d3e153 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/b6d3e153 Branch: refs/heads/master Commit: b6d3e153187af3c89b6e3efa2c50979636c2ca45 Parents: e0036b7 Author: Jim Ma <[email protected]> Authored: Wed Jul 2 17:53:03 2014 +0800 Committer: Jim Ma <[email protected]> Committed: Wed Jul 2 17:53:03 2014 +0800 ---------------------------------------------------------------------- .../ResponseTimeMessageInvokerInterceptor.java | 26 ++++++++++++++------ ...sponseTimeMessageInvokerInterceptorTest.java | 6 +++-- 2 files changed, 23 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/b6d3e153/rt/management/src/main/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInvokerInterceptor.java ---------------------------------------------------------------------- diff --git a/rt/management/src/main/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInvokerInterceptor.java b/rt/management/src/main/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInvokerInterceptor.java index 9a270bd..f04d498 100644 --- a/rt/management/src/main/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInvokerInterceptor.java +++ b/rt/management/src/main/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInvokerInterceptor.java @@ -31,20 +31,18 @@ import org.apache.cxf.phase.Phase; * handler by the binging interceptor * */ public class ResponseTimeMessageInvokerInterceptor extends AbstractMessageResponseTimeInterceptor { - + public ResponseTimeMessageInvokerInterceptor() { super(Phase.INVOKE); // this interceptor should be add before the serviceInvokerInterceptor addBefore(ServiceInvokerInterceptor.class.getName()); } - + public void handleMessage(Message message) throws Fault { - Exchange ex = message.getExchange(); - if (ex.isOneWay() && !isClient(message)) { - setOneWayMessage(ex); - } + message.getInterceptorChain().add(new ResponseTimeMessageInvokerEndingInteceptor()); + } - + @Override public void handleFault(Message message) { Exchange ex = message.getExchange(); @@ -53,4 +51,18 @@ public class ResponseTimeMessageInvokerInterceptor extends AbstractMessageRespon endHandlingMessage(ex); } } + + class ResponseTimeMessageInvokerEndingInteceptor extends AbstractMessageResponseTimeInterceptor { + public ResponseTimeMessageInvokerEndingInteceptor() { + super(Phase.INVOKE); + addAfter(ServiceInvokerInterceptor.class.getName()); + } + + public void handleMessage(Message message) throws Fault { + Exchange ex = message.getExchange(); + if (ex.isOneWay() && !isClient(message)) { + setOneWayMessage(ex); + } + } + } } http://git-wip-us.apache.org/repos/asf/cxf/blob/b6d3e153/rt/management/src/test/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInvokerInterceptorTest.java ---------------------------------------------------------------------- diff --git a/rt/management/src/test/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInvokerInterceptorTest.java b/rt/management/src/test/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInvokerInterceptorTest.java index 69a91d8..66809ee 100644 --- a/rt/management/src/test/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInvokerInterceptorTest.java +++ b/rt/management/src/test/java/org/apache/cxf/management/interceptor/ResponseTimeMessageInvokerInterceptorTest.java @@ -20,14 +20,16 @@ package org.apache.cxf.management.interceptor; import org.apache.cxf.management.counters.MessageHandlingTimeRecorder; - import org.apache.cxf.message.Message; import org.easymock.EasyMock; import org.junit.Test; public class ResponseTimeMessageInvokerInterceptorTest extends AbstractMessageResponseTestBase { - private ResponseTimeMessageInvokerInterceptor rtmii = new ResponseTimeMessageInvokerInterceptor(); + private ResponseTimeMessageInvokerInterceptor invokerInterceptor = + new ResponseTimeMessageInvokerInterceptor(); + private ResponseTimeMessageInvokerInterceptor.ResponseTimeMessageInvokerEndingInteceptor rtmii = + invokerInterceptor.new ResponseTimeMessageInvokerEndingInteceptor(); @Test public void testServerOneWayMessageIn() {
