JIRA: https://jira.spring.io/browse/INT-3352
Provid a global lock registry, initially for the correlating
message handlers.
INT-3252 Polishing
- Use a discrete key for each lock and use Redis EXPIRE
- Use an internal DefaultLockRegistry to improve latency
when threads are using the same registry instance.
INT-3352 More Polish
- Put localLock.unlock() in a finally block.
- Unlock localLock if acquiring the RedisLock fails.
INT-3352 Polishing - PR Comments
- PR Comments
- Improve equals()
INT-3352 Add Aggregator Integration Test
- move lock registry to the `util` package
- Add an aggregator integration test
INT-3352 Add Distributed Aggregator Test
- Simulates a distributed environment with a shared message
store and distinct lock registries.
INT-3352 More PR Comments
INT-3352 Add Multiple Registry Tests
- Add tests to verify expected behavior when different registries are used.
- Polish javadocs.
JIRA: https://jira.springsource.org/browse/INT-3305
Previously, if the channel can't be connected (e.g. if the server
does not support SFTP), the connection to the server remained open.
Close the session in the event of a failure.
Add test with the Apache SSHD server.
https://jira.springsource.org/browse/INT-3069
Provide a mechanism to specify headers and payload-expression that can
be applied to all methods in the gateway.
- Headers defined as 'default' are globally applied to all gateway methods.
- Also supports 'default-payload-expression'.
- Headers defined on a specific method override the global settings.
- An `@Header` in the interface is overridden by a specific <header/> for that method (current behavior)
- An `@Header` in the interface is NOT overridden by a <default-header/>
- Add 3 new SpEL variables:
-- #methodName (synonym for #method - deprecated)
-- #methodString (a string representation of the method showing return type and arg types)
-- #methodObject (the Method object)
<int:gateway id="sampleGateway"
service-interface="org.springframework.integration.gateway.GatewayInterfaceTests.Bar"
default-request-channel="requestChannelBaz">
<int:default-header name="name" expression="#methodName"/>
<int:default-header name="string" expression="#methodString"/>
<int:default-header name="object" expression="#methodObject"/>
<int:method name="baz">
<int:header name="name" value="overrideGlobal"/>
</int:method>
</int:gateway>
INT-3069 Polishing - PR Comments
- Remove extra 'method' variables, just provide `gatewayMethod`.
- Parser improvements
- Schema now enforces default-header elements to precede method elements
- Doc polishing
For ease of use by those (a) more familiar with Maven or (b) relying
on m2eclipse support within Eclipse/STS, generated poms are now checked
in. Changes to these files will be overwritted on subsequent gradle
builds.
Any changes to project dependencies should first be reflected in
build.gradle; then run `gradle generatePom` or simply `gradle build`
to see the change reflected in the pom(s).
Note that org.springframework.integration.ip.tcp.TcpInboundGatewayTests
currently fails when running `mvn clean test` from the root. This
problem does not manifest when running `gradle clean test`. The latter
is what's most important; Gary has been contacted to take a look at the
former.
Issues resolved:
INT-1609, INT-1610, INT-1611
buildSrc updated to use latest Gradle wrapper. See buildSrc git log
for complete details; in short, eclipse JDT prefs are now auto-generated
and the gradle daemon is no longer 'on by default', but must be enabled
with --daemon or -Dorg.gradle.daemon=true.
* removed all existing jdt preferences files in favor of auto-generation.
* removed .springBeans from .gitignore; this file should be
source-controlled for consistency and convenience.
* removed illegal @Override annotations. Eclipse/STS now catch these
properly!
Generate poms from Gradle metadata with
`gradle generatePom`
This will create a root pom with a <modules> section as well as a pom
for every individual module.
These poms are suitable for use with m2eclipse (e.g., File->Import->
Existing Maven project), or at the command line for basic build goals
such as `mvn test`.
These poms are not capable of producing distribution artifacts or
deployment of artifacts.
pom.xml and target will remain in .gitignore as these artifacts are
transient and for developer convenience only.
Complete:
--------
- src/* documentation resources moved to 'docs' subproject
- docbook sources upgraded to Docbook 5
- formatted all docbook sources to strip tab characters and
eliminate trailing whitespace
- all projects compile and test successfully
- all artifacts upload successfully to s3, static.sf.org, etc.
Remaining:
---------
- documentation L&F needs work. CSS, images, and highlighting aren't
hooked up properly
- spring-integration-jdbc codegen bits in Maven POM need to be
transcribed into gradle
- dependencies that were optional or provided scope in maven are
currently 'compile' scope in Gradle. Need to figure out support
in Gradle to fix this.
- run through Eclipse classpath and project generation scenarios
- delete all Maven artifacts
* normalizing version placeholders to use ${groupId}.version as a naming convention e.g.: 'org.springframework.version'
* added properties to parent pom <properties/> section
* spaces -> tabs
* removed empty newlines in poms (favor comments instead of newlines)
* gave all samples nice <name>s
* included ws-inbound-gateway in the samples parent pom <modules> section
* samples now try to run any **/*Tests.java, as per our general conventions