Repository: cxf Updated Branches: refs/heads/master 012b14cd4 -> c518dc9cf
[CXF-6340] More compliant implementation of AsyncResponse.cancel Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/c518dc9c Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/c518dc9c Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/c518dc9c Branch: refs/heads/master Commit: c518dc9cf93bf3414350a9e328b77eff2f6fe0af Parents: 012b14c Author: Sergey Beryozkin <[email protected]> Authored: Thu Apr 9 12:02:21 2015 +0100 Committer: Sergey Beryozkin <[email protected]> Committed: Thu Apr 9 12:02:21 2015 +0100 ---------------------------------------------------------------------- .../java/org/apache/cxf/jaxrs/impl/AsyncResponseImpl.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/c518dc9c/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/AsyncResponseImpl.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/AsyncResponseImpl.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/AsyncResponseImpl.java index 69ba838..2f3ce44 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/AsyncResponseImpl.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/AsyncResponseImpl.java @@ -85,6 +85,9 @@ public class AsyncResponseImpl implements AsyncResponse, ContinuationCallback { if (isCancelledOrNotSuspended()) { return false; } + return doResumeFinal(response); + } + private synchronized boolean doResumeFinal(Object response) { inMessage.getExchange().put(AsyncResponse.class, this); cont.setObject(response); resumedByApplication = true; @@ -112,6 +115,9 @@ public class AsyncResponseImpl implements AsyncResponse, ContinuationCallback { } private synchronized boolean doCancel(String retryAfterHeader) { + if (cancelled) { + return true; + } if (!isSuspended()) { return false; } @@ -119,8 +125,8 @@ public class AsyncResponseImpl implements AsyncResponse, ContinuationCallback { if (retryAfterHeader != null) { rb.header(HttpHeaders.RETRY_AFTER, retryAfterHeader); } - doResume(rb.build()); cancelled = true; + doResumeFinal(rb.build()); return cancelled; }
