INT-4214: Migrate to InvocableHandlerMethod
JIRA: https://jira.spring.io/browse/INT-4214 * Rework `MessagingMethodInvokerHelper` to delegate to the `InvocableHandlerMethod` with its `HandlerMethodArgumentResolver` infrastructure instead of SpEL * Introduce several `HandlerMethodArgumentResolver` to address some SI use-cases like `@Payloads`, `@Payload(expression = "")` and `Collection` as argument * Initialize `DefaultMessageHandlerMethodFactory` in the `MessagingMethodInvokerHelper.start()`. With that I observed several `Lifecycle` problem when we don't have proper delegate from the top. * Fix `AbstractCorrelatingMessageHandler` and similar to delegate `Lifecycle` properly * Fix `ReactiveConsumer` to delegate `Lifecycle` to the `MessageHandler` * Fix `MutableMessage` do not `generateId()` and set `timestamp` headers if we already have them in the provided headers * With all that `Lifecycle` many tests must be fixed to call `start()` Add SpEL fallback variant to the MessagingMethodInvokerHelper Add `MessagingMethodInvokerHelper.setUseSpelInvoker(boolean)` Add `MethodInvokingMessageProcessorTests.testPerformanceSpelVersusInvocable()` Add Compiled SpEL comparison * Add `MapArgumentResolver` to cover `Properties` case * add `MessagingMethodInvokerHelper.HandlerMethod.spelOnly` state, when we definitely can perform ony SpEL for provided arguments, e.g. `@Header` with expression * Catch `IllegalStateException` with the `"argument type mismatch"` message to fallback to SpEL invocation * Add `Iterator` support for the `CollectionArgumentResolver` * Add `integrationConversionService` bean registration into the `TestUtils.createTestApplicationContext()` * Tweak `.travis.yml` to try to download latest JDK, the current `1.8.0_31` is pretty old already and has some bugs * Adjust some failing tests to use `TestUtils.createTestApplicationContext()` to rely on newly added `integrationConversionService` bean Fix failed tests: `ctx.refresh()` Polishing current year in Copyright * JavaDocs for `CollectionArgumentResolver` and `MapArgumentResolver` * Propagate `ConversionService` from the `MessagingMethodInvokerHelper` to the `MapArgumentResolver.java` Fix `MessagingMethodInvokerHelper` to propagate `BeanFactory` into `MapArgumentResolver` as well The `MapArgumentResolver` now `extends AbstractExpressionEvaluator`, too Fix JavaDoc typo
This commit is contained in:
committed by
Gary Russell
parent
2c3d88bac6
commit
b3db6a97a2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -35,6 +35,7 @@ import org.springframework.beans.factory.BeanNameAware;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
||||
import org.springframework.context.support.GenericApplicationContext;
|
||||
import org.springframework.format.support.DefaultFormattingConversionService;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.MessageChannel;
|
||||
import org.springframework.messaging.MessagingException;
|
||||
@@ -90,6 +91,7 @@ public abstract class TestUtils {
|
||||
ThreadPoolTaskScheduler scheduler = createTaskScheduler(10);
|
||||
scheduler.setErrorHandler(errorHandler);
|
||||
registerBean("taskScheduler", scheduler, context);
|
||||
registerBean("integrationConversionService", new DefaultFormattingConversionService(), context);
|
||||
return context;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user