@Test public void onError() throws Exception { final StringBuilder sb = new StringBuilder(); DeferredResultHandler handler = mock(DeferredResultHandler.class); DeferredResult<String> result = new DeferredResult<>(null, "error result"); result.setResultHandler(handler); Exception e = new Exception(); result.onError(new Consumer<Throwable>() { @Override public void accept(Throwable t) { sb.append("error event"); } }); result.getInterceptor().handleError(null, null, e); assertEquals("error event", sb.toString()); assertFalse("Should not be able to set result a second time", result.setResult("hello")); verify(handler).handleResult(e); }
@Test public void onTimeout() throws Exception { final StringBuilder sb = new StringBuilder(); DeferredResultHandler handler = mock(DeferredResultHandler.class); DeferredResult<String> result = new DeferredResult<>(null, "timeout result"); result.setResultHandler(handler); result.onTimeout(new Runnable() { @Override public void run() { sb.append("timeout event"); } }); result.getInterceptor().handleTimeout(null, null); assertEquals("timeout event", sb.toString()); assertFalse("Should not be able to set result a second time", result.setResult("hello")); verify(handler).handleResult("timeout result"); }
@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()); }
interceptors.add(deferredResult.getInterceptor()); interceptors.addAll(this.deferredResultInterceptors.values()); interceptors.add(timeoutDeferredResultInterceptor);
interceptors.add(deferredResult.getInterceptor()); interceptors.addAll(this.deferredResultInterceptors.values()); interceptors.add(timeoutDeferredResultInterceptor);
interceptors.add(deferredResult.getInterceptor()); interceptors.addAll(this.deferredResultInterceptors.values()); interceptors.add(timeoutDeferredResultInterceptor);
interceptors.add(deferredResult.getInterceptor()); interceptors.addAll(this.deferredResultInterceptors.values()); interceptors.add(timeoutDeferredResultInterceptor);