Invoke ARPMH Directly (SA, Splitter etc) If a bean referenced by a service activator etc, is already an ARPMH, then wire it directly into the endpoint rather than wrapping it in a MethodInvoking Handler. Disallow the same bean being used in this way in multiple endpoints. It would cause rewiring of outputChannel etc. Detect such use and suggest using prototype scope. Previously, an ARPMH used in a MethodInvokingHandler didn't work in some cases, because the "inner" ARPMH had no output-channel and the outer ARPMH (e.g. transformer) wouldn't get a reply and would complain if requiresReply is set. The general solution is to detect the ARPMH targetObject in AbstractStandardMessageHandlerFactoryBean, invoke canBeUsedDirect() to allow the subclass to vote - specifically it will be allowed if the type is not also a special type understood by the subclass and no endpoint-specific attributes are set. To this end, remove a few default attributes from the schema to enable detection of explicit setting of these attributes. If these conditions pass and the method is handleRequest (either explicitly or by omission) then wire it in and invoke the subclass to post process the handler (set attributes). Restructure this post processing in each subclass so that it can be invoked in this way, or directly by the subclass when it makes a custom handler. Polishing - PR Comments Mainly a little refactoring in the RouterFactoryBean to allow the parameter in canBeUsedDirect() to be an ARPMH instead of Object. Plus a couple more minor changes.
Spring Integration
Checking out and Building
To check out the project and build from source, do the following:
git clone git://github.com/SpringSource/spring-integration.git
cd spring-integration
./gradlew build
If you encounter out of memory errors during the build, increase available heap and permgen for Gradle:
GRADLE_OPTS='-XX:MaxPermSize=1024m -Xmx1024m'
To build and install jars into your local Maven cache:
./gradlew install
To build api Javadoc (results will be in build/api):
./gradlew api
To build reference documentation (results will be in build/reference):
./gradlew reference
To build complete distribution including -dist, -docs, and -schema zip files (results will be in build/distributions)
./gradlew dist
Using Eclipse
To generate Eclipse metadata (.classpath and .project files), do the following:
./gradlew eclipse
Once complete, you may then import the projects into Eclipse as usual:
File -> Import -> Existing projects into workspace
Browse to the 'spring-integration' root directory. All projects should import free of errors.
Using IntelliJ IDEA
To generate IDEA metadata (.iml and .ipr files), do the following:
./gradlew idea
Resources
For more information, please visit the Spring Integration website at: http://www.springsource.org/spring-integration