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); }
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); }
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)); }
private IInvocableHandlerMethod CreateInvocableHandlerMethod(DefaultMessageHandlerMethodFactory factory, string methodName, params Type[] parameterTypes) { return(factory.CreateInvocableHandlerMethod(sample, GetListenerMethod(methodName, parameterTypes))); }
private DefaultMessageHandlerMethodFactory CreateInstance(GenericConversionService conversionService) { var factory = new DefaultMessageHandlerMethodFactory(conversionService); return(factory); }
private DefaultMessageHandlerMethodFactory CreateInstance(IMessageConverter converter) { var factory = new DefaultMessageHandlerMethodFactory(null, converter); return(factory); }
private DefaultMessageHandlerMethodFactory CreateInstance(List <IHandlerMethodArgumentResolver> customResolvers) { var factory = new DefaultMessageHandlerMethodFactory(null, null, customResolvers); return(factory); }