Example usage for org.springframework.messaging.handler.invocation HandlerMethodArgumentResolver resolveArgument

List of usage examples for org.springframework.messaging.handler.invocation HandlerMethodArgumentResolver resolveArgument

Introduction

In this page you can find the example usage for org.springframework.messaging.handler.invocation HandlerMethodArgumentResolver resolveArgument.

Prototype

@Nullable
Object resolveArgument(MethodParameter parameter, Message<?> message) throws Exception;

Source Link

Document

Resolves a method parameter into an argument value from a given message.

Usage

From source file:org.springframework.cloud.aws.messaging.listener.QueueMessageHandlerTest.java

@Test
public void receiveMessage_withCustomArgumentResolvers_shouldCallThemBeforeTheDefaultOnes() throws Exception {
    // Arrange/*  w  w  w .  ja v  a2 s . c o m*/
    StaticApplicationContext applicationContext = new StaticApplicationContext();
    applicationContext.registerSingleton("incomingMessageHandler", IncomingMessageHandler.class);

    HandlerMethodArgumentResolver handlerMethodArgumentResolver = mock(HandlerMethodArgumentResolver.class);
    when(handlerMethodArgumentResolver.supportsParameter(any(MethodParameter.class))).thenReturn(true);
    when(handlerMethodArgumentResolver.resolveArgument(any(MethodParameter.class), any(Message.class)))
            .thenReturn("Hello from a sender");
    MutablePropertyValues properties = new MutablePropertyValues(Collections
            .singletonList(new PropertyValue("customArgumentResolvers", handlerMethodArgumentResolver)));
    applicationContext.registerSingleton("queueMessageHandler", QueueMessageHandler.class, properties);
    applicationContext.refresh();

    QueueMessageHandler queueMessageHandler = applicationContext.getBean(QueueMessageHandler.class);

    // Act
    queueMessageHandler.handleMessage(MessageBuilder.withPayload("Hello from a sender")
            .setHeader(QueueMessageHandler.Headers.LOGICAL_RESOURCE_ID_MESSAGE_HEADER_KEY, "receive").build());

    // Assert
    verify(handlerMethodArgumentResolver, times(1)).resolveArgument(any(MethodParameter.class),
            any(Message.class));
}

From source file:org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolverComposite.java

/**
 * Iterate over registered {@link HandlerMethodArgumentResolver}s and invoke the one that supports it.
 * @exception IllegalStateException if no suitable {@link HandlerMethodArgumentResolver} is found.
 *//*ww  w  .  java  2  s  .  co m*/
@Override
public Object resolveArgument(MethodParameter parameter, Message<?> message) throws Exception {

    HandlerMethodArgumentResolver resolver = getArgumentResolver(parameter);
    Assert.notNull(resolver, "Unknown parameter type [" + parameter.getParameterType().getName() + "]");
    return resolver.resolveArgument(parameter, message);
}