コード例 #1
0
  @Test
  public void interceptorWithModifiedMessage() {
    ExecutorChannel channel = new ExecutorChannel(new SyncTaskExecutor());
    channel.setBeanFactory(mock(BeanFactory.class));
    channel.afterPropertiesSet();

    MessageHandler handler = mock(MessageHandler.class);
    Message<?> expected = mock(Message.class);
    BeforeHandleInterceptor interceptor = new BeforeHandleInterceptor();
    interceptor.setMessageToReturn(expected);
    channel.addInterceptor(interceptor);
    channel.subscribe(handler);
    channel.send(new GenericMessage<Object>("foo"));
    verify(handler).handleMessage(expected);
    assertEquals(1, interceptor.getCounter().get());
    assertTrue(interceptor.wasAfterHandledInvoked());
  }
コード例 #2
0
  @Test
  public void interceptorWithException() {
    ExecutorChannel channel = new ExecutorChannel(new SyncTaskExecutor());
    channel.setBeanFactory(mock(BeanFactory.class));
    channel.afterPropertiesSet();

    Message<Object> message = new GenericMessage<Object>("foo");

    MessageHandler handler = mock(MessageHandler.class);
    IllegalStateException expected = new IllegalStateException("Fake exception");
    willThrow(expected).given(handler).handleMessage(message);
    BeforeHandleInterceptor interceptor = new BeforeHandleInterceptor();
    channel.addInterceptor(interceptor);
    channel.subscribe(handler);
    try {
      channel.send(message);
    } catch (MessageDeliveryException actual) {
      assertSame(expected, actual.getCause());
    }
    verify(handler).handleMessage(message);
    assertEquals(1, interceptor.getCounter().get());
    assertTrue(interceptor.wasAfterHandledInvoked());
  }