Search in sources :

Example 11 with InvocableHandlerMethod

use of org.springframework.messaging.handler.invocation.InvocableHandlerMethod in project spring-framework by spring-projects.

the class DefaultMessageHandlerMethodFactoryTests method customValidation.

@Test
public void customValidation() throws Exception {
    DefaultMessageHandlerMethodFactory instance = createInstance();
    instance.setValidator(new Validator() {

        @Override
        public boolean supports(Class<?> clazz) {
            return String.class.isAssignableFrom(clazz);
        }

        @Override
        public void validate(Object target, Errors errors) {
            String value = (String) target;
            if ("failure".equals(value)) {
                errors.reject("not a valid value");
            }
        }
    });
    instance.afterPropertiesSet();
    InvocableHandlerMethod invocableHandlerMethod = createInvocableHandlerMethod(instance, "payloadValidation", String.class);
    assertThatExceptionOfType(MethodArgumentNotValidException.class).isThrownBy(() -> invocableHandlerMethod.invoke(MessageBuilder.withPayload("failure").build()));
}
Also used : Errors(org.springframework.validation.Errors) InvocableHandlerMethod(org.springframework.messaging.handler.invocation.InvocableHandlerMethod) Validator(org.springframework.validation.Validator) Test(org.junit.jupiter.api.Test)

Example 12 with InvocableHandlerMethod

use of org.springframework.messaging.handler.invocation.InvocableHandlerMethod in project spring-framework by spring-projects.

the class DefaultMessageHandlerMethodFactoryTests method customArgumentResolver.

@Test
public void customArgumentResolver() throws Exception {
    DefaultMessageHandlerMethodFactory instance = createInstance();
    List<HandlerMethodArgumentResolver> customResolvers = new ArrayList<>();
    customResolvers.add(new CustomHandlerMethodArgumentResolver());
    instance.setCustomArgumentResolvers(customResolvers);
    instance.afterPropertiesSet();
    InvocableHandlerMethod invocableHandlerMethod = createInvocableHandlerMethod(instance, "customArgumentResolver", Locale.class);
    invocableHandlerMethod.invoke(MessageBuilder.withPayload(123).build());
    assertMethodInvocation(sample, "customArgumentResolver");
}
Also used : InvocableHandlerMethod(org.springframework.messaging.handler.invocation.InvocableHandlerMethod) ArrayList(java.util.ArrayList) HandlerMethodArgumentResolver(org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver) Test(org.junit.jupiter.api.Test)

Example 13 with InvocableHandlerMethod

use of org.springframework.messaging.handler.invocation.InvocableHandlerMethod in project spring-framework by spring-projects.

the class DefaultMessageHandlerMethodFactoryTests method noValidationByDefault.

@Test
public void noValidationByDefault() throws Exception {
    DefaultMessageHandlerMethodFactory instance = createInstance();
    instance.afterPropertiesSet();
    InvocableHandlerMethod invocableHandlerMethod = createInvocableHandlerMethod(instance, "payloadValidation", String.class);
    invocableHandlerMethod.invoke(MessageBuilder.withPayload("failure").build());
    assertMethodInvocation(sample, "payloadValidation");
}
Also used : InvocableHandlerMethod(org.springframework.messaging.handler.invocation.InvocableHandlerMethod) Test(org.junit.jupiter.api.Test)

Example 14 with InvocableHandlerMethod

use of org.springframework.messaging.handler.invocation.InvocableHandlerMethod in project spring-framework by spring-projects.

the class MethodJmsListenerEndpoint method createMessageListener.

@Override
protected MessagingMessageListenerAdapter createMessageListener(MessageListenerContainer container) {
    Assert.state(this.messageHandlerMethodFactory != null, "Could not create message listener - MessageHandlerMethodFactory not set");
    MessagingMessageListenerAdapter messageListener = createMessageListenerInstance();
    Object bean = getBean();
    Method method = getMethod();
    Assert.state(bean != null && method != null, "No bean+method set on endpoint");
    InvocableHandlerMethod invocableHandlerMethod = this.messageHandlerMethodFactory.createInvocableHandlerMethod(bean, method);
    messageListener.setHandlerMethod(invocableHandlerMethod);
    String responseDestination = getDefaultResponseDestination();
    if (StringUtils.hasText(responseDestination)) {
        if (container.isReplyPubSubDomain()) {
            messageListener.setDefaultResponseTopicName(responseDestination);
        } else {
            messageListener.setDefaultResponseQueueName(responseDestination);
        }
    }
    QosSettings responseQosSettings = container.getReplyQosSettings();
    if (responseQosSettings != null) {
        messageListener.setResponseQosSettings(responseQosSettings);
    }
    MessageConverter messageConverter = container.getMessageConverter();
    if (messageConverter != null) {
        messageListener.setMessageConverter(messageConverter);
    }
    DestinationResolver destinationResolver = container.getDestinationResolver();
    if (destinationResolver != null) {
        messageListener.setDestinationResolver(destinationResolver);
    }
    return messageListener;
}
Also used : MessagingMessageListenerAdapter(org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter) DestinationResolver(org.springframework.jms.support.destination.DestinationResolver) InvocableHandlerMethod(org.springframework.messaging.handler.invocation.InvocableHandlerMethod) QosSettings(org.springframework.jms.support.QosSettings) InvocableHandlerMethod(org.springframework.messaging.handler.invocation.InvocableHandlerMethod) Method(java.lang.reflect.Method) MessageConverter(org.springframework.jms.support.converter.MessageConverter)

Aggregations

InvocableHandlerMethod (org.springframework.messaging.handler.invocation.InvocableHandlerMethod)14 Test (org.junit.jupiter.api.Test)7 Method (java.lang.reflect.Method)4 ArrayList (java.util.ArrayList)4 MessageConversionException (org.springframework.messaging.converter.MessageConversionException)3 Map (java.util.Map)2 AtomicReference (java.util.concurrent.atomic.AtomicReference)2 GenericConversionService (org.springframework.core.convert.support.GenericConversionService)2 HandlerMethodArgumentResolver (org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver)2 HashMap (java.util.HashMap)1 List (java.util.List)1 Advised (org.springframework.aop.framework.Advised)1 NoSuchBeanDefinitionException (org.springframework.beans.factory.NoSuchBeanDefinitionException)1 StreamListenerMessageHandler (org.springframework.cloud.stream.binding.StreamListenerMessageHandler)1 CompositeMessageConverterFactory (org.springframework.cloud.stream.converter.CompositeMessageConverterFactory)1 GenericApplicationContext (org.springframework.context.support.GenericApplicationContext)1 ConversionFailedException (org.springframework.core.convert.ConversionFailedException)1 ConverterNotFoundException (org.springframework.core.convert.ConverterNotFoundException)1 EvaluationContext (org.springframework.expression.EvaluationContext)1 EvaluationException (org.springframework.expression.EvaluationException)1