public async Task TestMessageHandlerMethodFactoryOverride()
        {
            var serviceCollection = GetDefaultContainer();

            serviceCollection.AddServiceActivators <MyConfiguration>();
            var f = new DefaultMessageHandlerMethodFactory();

            f.SetArgumentResolvers(new List <IHandlerMethodArgumentResolver>()
            {
                new TestHandlerMethodArgumentResolver()
            });
            serviceCollection.AddSingleton <IMessageHandlerMethodFactory>(f);

            var container          = serviceCollection.BuildServiceProvider();
            var lifeCycleProcessor = await Start(container);

            var appContext = container.GetService <IApplicationContext>();
            var channel    = appContext.GetService <IMessageChannel>("foo");

            channel.Send(MessageBuilder.WithPayload("Bob Smith").Build());
            var outChan = appContext.GetService <IPollableChannel>("out");

            Assert.Equal("Person: Bob Smith", outChan.Receive().Payload);

            await lifeCycleProcessor.Stop();
        }
        private IMessageHandlerMethodFactory ConfigureLocalMessageHandlerFactory()
        {
            var factory = new DefaultMessageHandlerMethodFactory(ConversionService, ApplicationContext);

            var messageConverter = ApplicationContext?.GetService <IMessageConverter>(IntegrationContextUtils.ARGUMENT_RESOLVER_MESSAGE_CONVERTER_BEAN_NAME);

            if (messageConverter != null)
            {
                factory.MessageConverter = messageConverter;
            }
            else
            {
                messageConverter = new ConfigurableCompositeMessageConverter(ConversionService);
            }

            var payloadExpressionArgumentResolver = new PayloadExpressionArgumentResolver(ApplicationContext);
            var payloadsArgumentResolver          = new PayloadsArgumentResolver(ApplicationContext);
            var nullResolver = new NullAwarePayloadArgumentResolver(messageConverter);

            var customArgumentResolvers = new List <IHandlerMethodArgumentResolver>()
            {
                payloadExpressionArgumentResolver, nullResolver, payloadsArgumentResolver
            };

            var mapArgumentResolver = new DictionaryArgumentResolver(ApplicationContext);

            customArgumentResolvers.Add(mapArgumentResolver);

            factory.CustomArgumentResolvers = customArgumentResolvers;
            factory.Initialize();
            return(factory);
        }
Esempio n. 3
0
        public void NoValidationByDefault()
        {
            var instance = new DefaultMessageHandlerMethodFactory();
            var invocableHandlerMethod = CreateInvocableHandlerMethod(instance, "PayloadValidation", typeof(string));

            invocableHandlerMethod.Invoke(MessageBuilder <string> .WithPayload("failure").Build());
            AssertMethodInvocation(sample, "PayloadValidation");
        }
            private IMessageHandlerMethodFactory CreateDefaultMessageHandlerMethodFactory()
            {
                var defaultFactory    = new DefaultMessageHandlerMethodFactory();
                var conversionService = new DefaultConversionService();

                conversionService.AddConverter(new BytesToStringConverter(_processor.Charset));
                defaultFactory.ConversionService = conversionService;
                return(defaultFactory);
            }
Esempio n. 5
0
        public void OverrideArgumentResolvers()
        {
            var instance        = new DefaultMessageHandlerMethodFactory();
            var customResolvers = new List <IHandlerMethodArgumentResolver>();

            customResolvers.Add(new CustomHandlerMethodArgumentResolver());
            instance.SetArgumentResolvers(customResolvers); // Override defaults

            var message = MessageBuilder <string> .WithPayload("sample").Build();

            // This will work as the local resolver is set
            var invocableHandlerMethod = CreateInvocableHandlerMethod(instance, "CustomArgumentResolver", typeof(CultureInfo));

            invocableHandlerMethod.Invoke(message);
            AssertMethodInvocation(sample, "CustomArgumentResolver");

            // This won't work as no resolver is known for the payload
            var invocableHandlerMethod2 = CreateInvocableHandlerMethod(instance, "SimpleString", typeof(string));

            Assert.Throws <MethodArgumentResolutionException>(() => invocableHandlerMethod2.Invoke(message));
        }
Esempio n. 6
0
 private IInvocableHandlerMethod CreateInvocableHandlerMethod(DefaultMessageHandlerMethodFactory factory, string methodName, params Type[] parameterTypes)
 {
     return(factory.CreateInvocableHandlerMethod(sample, GetListenerMethod(methodName, parameterTypes)));
 }
Esempio n. 7
0
        private DefaultMessageHandlerMethodFactory CreateInstance(GenericConversionService conversionService)
        {
            var factory = new DefaultMessageHandlerMethodFactory(conversionService);

            return(factory);
        }
Esempio n. 8
0
        private DefaultMessageHandlerMethodFactory CreateInstance(IMessageConverter converter)
        {
            var factory = new DefaultMessageHandlerMethodFactory(null, converter);

            return(factory);
        }
Esempio n. 9
0
        private DefaultMessageHandlerMethodFactory CreateInstance(List <IHandlerMethodArgumentResolver> customResolvers)
        {
            var factory = new DefaultMessageHandlerMethodFactory(null, null, customResolvers);

            return(factory);
        }