@Override public Object invoke(MethodInvocation invocation) throws Throwable { Object result = null; boolean isListenerMethod = AnnotationUtils.findAnnotation(invocation.getMethod(), RabbitListener.class) != null || AnnotationUtils.findAnnotation(invocation.getMethod(), RabbitHandler.class) != null; try { result = invocation.proceed(); if (isListenerMethod) { this.invocationData.put(new InvocationData(invocation, result)); } } catch (Throwable t) { // NOSONAR - rethrown below if (isListenerMethod) { this.invocationData.put(new InvocationData(invocation, t)); } throw t; } return result; }
Object[] args = invocationData.getArguments(); assertThat((String) args[0], equalTo("bar")); assertThat((String) args[1], equalTo(queue2.getName())); args = invocationData.getArguments(); assertThat((String) args[0], equalTo("baz")); assertThat((String) args[1], equalTo(queue2.getName())); args = invocationData.getArguments(); assertThat((String) args[0], equalTo("ex")); assertThat((String) args[1], equalTo(queue2.getName())); assertNotNull(invocationData.getThrowable()); assertEquals("ex", invocationData.getThrowable().getMessage()); args = invocationData.getArguments(); assertThat((String) args[0], equalTo("ex")); assertThat((String) args[1], equalTo(queue2.getName())); assertNull(invocationData.getThrowable());
@Test public void testOneWay() throws Exception { this.rabbitTemplate.convertAndSend(this.queue2.getName(), "bar"); this.rabbitTemplate.convertAndSend(this.queue2.getName(), "baz"); this.rabbitTemplate.convertAndSend(this.queue2.getName(), "ex"); InvocationData invocationData = this.harness.getNextInvocationDataFor("bar", 10, TimeUnit.SECONDS); assertNotNull(invocationData); Object[] args = invocationData.getArguments(); assertThat((String) args[0], equalTo("bar")); assertThat((String) args[1], equalTo(queue2.getName())); invocationData = this.harness.getNextInvocationDataFor("bar", 10, TimeUnit.SECONDS); assertNotNull(invocationData); args = invocationData.getArguments(); assertThat((String) args[0], equalTo("baz")); assertThat((String) args[1], equalTo(queue2.getName())); invocationData = this.harness.getNextInvocationDataFor("bar", 10, TimeUnit.SECONDS); assertNotNull(invocationData); args = invocationData.getArguments(); assertThat((String) args[0], equalTo("ex")); assertThat((String) args[1], equalTo(queue2.getName())); assertNotNull(invocationData.getThrowable()); assertEquals("ex", invocationData.getThrowable().getMessage()); invocationData = this.harness.getNextInvocationDataFor("bar", 10, TimeUnit.SECONDS); assertNotNull(invocationData); args = invocationData.getArguments(); assertThat((String) args[0], equalTo("ex")); assertThat((String) args[1], equalTo(queue2.getName())); assertNull(invocationData.getThrowable()); }
@Override public Object invoke(MethodInvocation invocation) throws Throwable { Object result = null; boolean isListenerMethod = AnnotationUtils.findAnnotation(invocation.getMethod(), RabbitListener.class) != null || AnnotationUtils.findAnnotation(invocation.getMethod(), RabbitHandler.class) != null; try { result = invocation.proceed(); if (isListenerMethod) { this.invocationData.put(new InvocationData(invocation, result)); } } catch (Throwable t) { // NOSONAR - rethrown below if (isListenerMethod) { this.invocationData.put(new InvocationData(invocation, t)); } throw t; } return result; }
@Test public void testTwoWay() throws Exception { assertEquals("FOO", this.rabbitTemplate.convertSendAndReceive(this.queue1.getName(), "foo")); Listener listener = this.harness.getSpy("foo"); assertNotNull(listener); verify(listener).foo("foo"); InvocationData invocationData = this.harness.getNextInvocationDataFor("foo", 10, TimeUnit.SECONDS); assertNotNull(invocationData); assertThat((String) invocationData.getArguments()[0], equalTo("foo")); assertThat((String) invocationData.getResult(), equalTo("FOO")); }
@Test public void testTwoWay() throws Exception { assertEquals("FOO", this.rabbitTemplate.convertSendAndReceive(this.queue1.getName(), "foo")); InvocationData invocationData = this.harness.getNextInvocationDataFor("foo", 10, TimeUnit.SECONDS); assertNotNull(invocationData); assertThat((String) invocationData.getArguments()[0], equalTo("foo")); assertThat((String) invocationData.getResult(), equalTo("FOO")); }