public void triggerAfterCompletion(NativeWebRequest request, DeferredResult<?> deferredResult) { for (int i = this.preProcessingIndex; i >= 0; i--) { try { this.interceptors.get(i).afterCompletion(request, deferredResult); } catch (Throwable ex) { logger.trace("Ignoring failure in afterCompletion method", ex); } } }
public void triggerAfterCompletion(NativeWebRequest request, DeferredResult<?> deferredResult) { for (int i = this.preProcessingIndex; i >= 0; i--) { try { this.interceptors.get(i).afterCompletion(request, deferredResult); } catch (Throwable ex) { logger.trace("Ignoring failure in afterCompletion method", ex); } } }
@Test public void onCompletion() throws Exception { final StringBuilder sb = new StringBuilder(); DeferredResult<String> result = new DeferredResult<>(); result.onCompletion(new Runnable() { @Override public void run() { sb.append("completion event"); } }); result.getInterceptor().afterCompletion(null, null); assertTrue(result.isSetOrExpired()); assertEquals("completion event", sb.toString()); }
@Test public void startDeferredResultProcessingTimeoutAndComplete() throws Exception { DeferredResult<Integer> deferredResult = new DeferredResult<>(); DeferredResultProcessingInterceptor interceptor = mock(DeferredResultProcessingInterceptor.class); given(interceptor.handleTimeout(this.asyncWebRequest, deferredResult)).willReturn(true); this.asyncManager.registerDeferredResultInterceptor("interceptor", interceptor); this.asyncManager.startDeferredResultProcessing(deferredResult); this.asyncWebRequest.onTimeout(ASYNC_EVENT); this.asyncWebRequest.onComplete(ASYNC_EVENT); assertTrue(this.asyncManager.hasConcurrentResult()); assertEquals(AsyncRequestTimeoutException.class, this.asyncManager.getConcurrentResult().getClass()); verify(interceptor).beforeConcurrentHandling(this.asyncWebRequest, deferredResult); verify(interceptor).preProcess(this.asyncWebRequest, deferredResult); verify(interceptor).afterCompletion(this.asyncWebRequest, deferredResult); }
@Test public void startDeferredResultProcessingErrorAndComplete() throws Exception { DeferredResult<Integer> deferredResult = new DeferredResult<>(); DeferredResultProcessingInterceptor interceptor = mock(DeferredResultProcessingInterceptor.class); Exception e = new Exception(); given(interceptor.handleError(this.asyncWebRequest, deferredResult, e)).willReturn(true); this.asyncManager.registerDeferredResultInterceptor("interceptor", interceptor); this.asyncManager.startDeferredResultProcessing(deferredResult); AsyncEvent event = new AsyncEvent(new MockAsyncContext(this.servletRequest, this.servletResponse), e); this.asyncWebRequest.onError(event); this.asyncWebRequest.onComplete(event); assertTrue(this.asyncManager.hasConcurrentResult()); assertEquals(e, this.asyncManager.getConcurrentResult()); verify(interceptor).beforeConcurrentHandling(this.asyncWebRequest, deferredResult); verify(interceptor).preProcess(this.asyncWebRequest, deferredResult); verify(interceptor).afterCompletion(this.asyncWebRequest, deferredResult); }
public void triggerAfterCompletion(NativeWebRequest request, DeferredResult<?> deferredResult) { for (int i = this.preProcessingIndex; i >= 0; i--) { try { this.interceptors.get(i).afterCompletion(request, deferredResult); } catch (Throwable t) { logger.error("afterCompletion error", t); } } }
public void triggerAfterCompletion(NativeWebRequest request, DeferredResult<?> deferredResult) { for (int i = this.preProcessingIndex; i >= 0; i--) { try { this.interceptors.get(i).afterCompletion(request, deferredResult); } catch (Throwable ex) { logger.trace("Ignoring failure in afterCompletion method", ex); } } }