protected AsyncContext setupAsyncContext() { if (servletRequest.isAsyncStarted()) { throw new IllegalStateException(Messages.MESSAGES.alreadySuspended()); } asynchronousResponse = new Servle3AsychronousResponse(); AsyncContext asyncContext = servletRequest.startAsync(); asyncContext.addListener(asynchronousResponse); wasSuspended = true; //set time out to -1 and resteasy will take care of timeout asyncContext.setTimeout(-1); return asyncContext; }
@Override public boolean cancel(Date retryAfter) { synchronized (responseLock) { if (cancelled) return true; if (done) return false; done = true; cancelled = true; AsyncContext asyncContext = getAsyncContext(); return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).header(HttpHeaders.RETRY_AFTER, retryAfter).build(), t -> asyncContext.complete()); } }
@Override public boolean cancel() { LogMessages.LOGGER.debug(Messages.MESSAGES.cancel()); synchronized (responseLock) { if (cancelled) { LogMessages.LOGGER.debug(Messages.MESSAGES.alreadyCanceled()); return true; } if (done) { LogMessages.LOGGER.debug(Messages.MESSAGES.alreadyDone()); return false; } done = true; cancelled = true; AsyncContext asyncContext = getAsyncContext(); try { LogMessages.LOGGER.debug(Messages.MESSAGES.cancellingWith503()); return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).build()); } finally { asyncContext.complete(); } } }
@Override public boolean cancel() { LogMessages.LOGGER.debug(Messages.MESSAGES.cancel()); synchronized (responseLock) { if (cancelled) { LogMessages.LOGGER.debug(Messages.MESSAGES.alreadyCanceled()); return true; } if (done) { LogMessages.LOGGER.debug(Messages.MESSAGES.alreadyDone()); return false; } done = true; cancelled = true; AsyncContext asyncContext = getAsyncContext(); LogMessages.LOGGER.debug(Messages.MESSAGES.cancellingWith503()); return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).build(), t -> asyncContext.complete()); } }
@Override public boolean cancel() { LogMessages.LOGGER.debug(Messages.MESSAGES.cancel()); synchronized (responseLock) { if (cancelled) { LogMessages.LOGGER.debug(Messages.MESSAGES.alreadyCanceled()); return true; } if (done) { LogMessages.LOGGER.debug(Messages.MESSAGES.alreadyDone()); return false; } done = true; cancelled = true; AsyncContext asyncContext = getAsyncContext(); LogMessages.LOGGER.debug(Messages.MESSAGES.cancellingWith503()); return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).build(), t -> asyncContext.complete()); } }
@Override public boolean resume(Throwable exc) { synchronized (responseLock) { if (done) return false; if (cancelled) return false; AsyncContext asyncContext = getAsyncContext(); done = true; return internalResume(exc, t -> { if(t instanceof UnhandledException) { internalResume(Response.status(500).build(), t2 -> asyncContext.complete()); } else { asyncContext.complete(); } }); } }
@Override public boolean cancel(Date retryAfter) { synchronized (responseLock) { if (cancelled) return true; if (done) return false; done = true; cancelled = true; AsyncContext asyncContext = getAsyncContext(); try { return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).header(HttpHeaders.RETRY_AFTER, retryAfter).build()); } finally { asyncContext.complete(); } } }
@Override public boolean resume(Throwable exc) { synchronized (responseLock) { if (done) return false; if (cancelled) return false; AsyncContext asyncContext = getAsyncContext(); try { return internalResume(exc); } catch (UnhandledException unhandled) { return internalResume(Response.status(500).build()); } finally { done = true; asyncContext.complete(); } } }
@Override public boolean cancel(int retryAfter) { synchronized (responseLock) { if (cancelled) return true; if (done) return false; done = true; cancelled = true; AsyncContext asyncContext = getAsyncContext(); try { return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).header(HttpHeaders.RETRY_AFTER, retryAfter).build()); } finally { asyncContext.complete(); } } }
@Override public boolean resume(Object entity) { synchronized (responseLock) { if (done) return false; if (cancelled) return false; AsyncContext asyncContext = getAsyncContext(); try { return internalResume(entity); } finally { done = true; asyncContext.complete(); } } }
@Override public boolean cancel(int retryAfter) { synchronized (responseLock) { if (cancelled) return true; if (done) return false; done = true; cancelled = true; AsyncContext asyncContext = getAsyncContext(); return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).header(HttpHeaders.RETRY_AFTER, retryAfter).build(), t -> asyncContext.complete()); } }
protected AsyncContext setupAsyncContext() { if (servletRequest.isAsyncStarted()) { throw new IllegalStateException(Messages.MESSAGES.alreadySuspended()); } asynchronousResponse = new Servle3AsychronousResponse(); AsyncContext asyncContext = servletRequest.startAsync(); asyncContext.addListener(asynchronousResponse); wasSuspended = true; //set time out to -1 and resteasy will take care of timeout asyncContext.setTimeout(-1); return asyncContext; }
@Override public boolean cancel(int retryAfter) { synchronized (responseLock) { if (cancelled) return true; if (done) return false; done = true; cancelled = true; AsyncContext asyncContext = getAsyncContext(); return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).header(HttpHeaders.RETRY_AFTER, retryAfter).build(), t -> asyncContext.complete()); } }
protected AsyncContext setupAsyncContext() { if (servletRequest.isAsyncStarted()) { throw new IllegalStateException(Messages.MESSAGES.alreadySuspended()); } asynchronousResponse = new Servle3AsychronousResponse(); AsyncContext asyncContext = servletRequest.startAsync(); asyncContext.addListener(asynchronousResponse); wasSuspended = true; //set time out to -1 and resteasy will take care of timeout asyncContext.setTimeout(-1); return asyncContext; }
@Override public boolean cancel(Date retryAfter) { synchronized (responseLock) { if (cancelled) return true; if (done) return false; done = true; cancelled = true; AsyncContext asyncContext = getAsyncContext(); return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).header(HttpHeaders.RETRY_AFTER, retryAfter).build(), t -> asyncContext.complete()); } }
@Override public boolean resume(Throwable exc) { synchronized (responseLock) { if (done) return false; if (cancelled) return false; AsyncContext asyncContext = getAsyncContext(); done = true; return internalResume(exc, t -> asyncContext.complete()); } }
@Override public void onTimeout(AsyncEvent asyncEvent) throws IOException { LogMessages.LOGGER.debug(Messages.MESSAGES.onTimeout()); synchronized (responseLock) { if (done || cancelled) return; response.reset(); handleTimeout(); } }
@Override public boolean resume(Object entity) { synchronized (responseLock) { if (done) return false; if (cancelled) return false; AsyncContext asyncContext = getAsyncContext(); done = true; return internalResume(entity, t -> asyncContext.complete()); } }
protected void handleTimeout() { if (timeoutHandler != null) { timeoutHandler.handleTimeout(this); } if (done) return; resume(new ServiceUnavailableException()); }
@Override public void run() { LogMessages.LOGGER.debug(Messages.MESSAGES.scheduledTimeout()); handleTimeout(); } };