JIRA: https://jira.spring.io/browse/INT-4046
Since not all FTP servers provide proper `STAT` command implementation,
plus the `NLIST` doesn't work properly for directories cases, introduce the `FtpRemoteFileTemplate.ExistsMode`
to let:
* to perform `STAT` by default (previous) behavior;
* to switch to `NLIST` for `FtpRemoteFileTemplate` internal use;
* perform the full `NLIST` and `FTPClient.changeWorkingDirectory()` algorithm if needed.
* Improve (S)Ftp components to use proper `RemoteFileTemplate` for internal instantiation
* Introduce `FtpMessageHandler` to wrap `FtpRemoteFileTemplate` with the proper `NLIST` `ExistsMode`
* Cover `NLIST` switching from the `FtpOutboundChannelAdapterParser` and `FtpOutboundGatewayParser`
* Document the `FtpRemoteFileTemplate.ExistsMode`
* Fix typo in the recently introduced `RemoteFileOperations.getSession()` method name
* Add JavaDoc to `Session.exists()`
* Add `NLIST` support for the `FtpSession.exists()` to meet the API requirements
**Cherry-pick to 4.2.x and 4.1.x**
Addressing PR comments
Doc Polishing
Conflicts:
spring-integration-file/src/main/java/org/springframework/integration/file/remote/AbstractRemoteFileStreamingMessageSource.java
spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileOperations.java
spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileTemplate.java
spring-integration-ftp/src/main/java/org/springframework/integration/ftp/session/FtpSession.java
spring-integration-ftp/src/test/java/org/springframework/integration/ftp/config/FtpOutboundChannelAdapterParserTests.java
spring-integration-sftp/src/main/java/org/springframework/integration/sftp/gateway/SftpOutboundGateway.java
spring-integration-sftp/src/main/java/org/springframework/integration/sftp/outbound/SftpMessageHandler.java
spring-integration-sftp/src/main/java/org/springframework/integration/sftp/outbound/package-info.java
Conflicts:
spring-integration-ftp/src/main/java/org/springframework/integration/ftp/gateway/FtpOutboundGateway.java
spring-integration-sftp/src/main/java/org/springframework/integration/sftp/gateway/SftpOutboundGateway.java
JIRA: https://jira.spring.io/browse/INT-3840
* In addition: fix some typos in the `SftpInboundRemoteFileSystemSynchronizerTests`
**Cherry-pick to 4.1.x**
JIRA: https://jira.spring.io/browse/INT-3827
Provide a hook to enable removing a file from an `AcceptOnceFileListFilter`,
for example after a message processing failure.
Make the `CompositeFileListFilter` a `ReversibleFileListFilter` so it can
delegate to any of its composed filters that are reversible.
INT-3827: Polishing - PR Comments
(cherry picked from commit 0d721739e9)
Conflicts:
src/reference/asciidoc/ftp.adoc
src/reference/asciidoc/sftp.adoc
JIRA: https://jira.spring.io/browse/INT-3796
When a `UserInfo` is provided, use it for the password and passphrase.
Disallow local properies when a `UserInfo` is provided.
Simple polishing and fixing `TestSftpServer` for the `this.server.stop(true);`
to avoid `port is already in use` for other tests which use default SSH port.
Conflicts:
src/reference/asciidoc/sftp.adoc
src/reference/asciidoc/whats-new.adoc
JIRA: https://jira.spring.io/browse/INT-3796
Previously, the `DefaultSftpSessionFactory` unconditionally accepted keys
from unknown hosts, or when a host key changed.
Permit this behavior to be configured with `allowUnknownHosts` and/or a custom
`UserInfo` properties in the factory.
`allowUknownHosts` is false by default (since 4.2) and true by default in 4.1.x for
backwards compatibility.
INT-3796: Fix Tests
INT-3796: Polishing
Conflicts:
src/reference/asciidoc/sftp.adoc
src/reference/asciidoc/whats-new.adoc
Fix `SftpSessionFactoryTests` according to the `allowUnknownKeys = true` in the `4.1.x`
JIRA: https://jira.spring.io/browse/INT-3606
Close the store when an (S)FTP synchronizing MessageSource is stopped.
Will need another commit on 4.2.WIP to change to `Lifecycle`.
Add dirty Flag to Properties MetadataStore
Avoid unnecessary persists.
Remove unnecessary implementation of `AbstractInboundFileSynchronizingMessageSource#getComponentType()`
JIRA: https://jira.spring.io/browse/INT-3412
Initial commit - review only.
TODO:
- SFTP Tests
- Namespace/Adapter support for file append
- Docs
INT-3412 Polishing
- Addressed PR comments
- Completed SFTP implementation
- Added namespace/parser support for `FileExistsMode` (append, etc)
- Added SFTP Tests
- Created Embedded SFTP server for tests (similar to FTP)
- Converted tests that needed a real server to use the embedded server
INT-3412 Docs and Polish (PR Comments)
JIRA: https://jira.spring.io/browse/INT-3464
Previously, if an IO exeption occurred while synchronizing
files, and an AcceptOnceFileListFilter is being used, files that were
not transferred would not be fetched next time.
Add strategy `ReversibleFileListFilter` that can rollback previously
accepted files.
Implement this interface on `AcceptOnceFileListFilter` and
`AbstractPersistentAcceptOnceFileListFilter`.
Add test cases.
Polishing
JIRA: https://jira.spring.io/browse/INT-2738
Add a `getComponentType()` method for all handlers,
message producers, and message sources that implement
`NamedComponent` (see `SPCA.getComponentType()`).
Add rome as an optional dependency - STS complained
because AtomFeedHttpMessageConverter has a dependency
on it.
JIRA: https://jira.spring.io/browse/INT-3349
Several FactoryBeans did not propagate the BeanFactory
to their created object(s). Beans that create messages
must have access to a bean factory to get the
message builder factory.
Fix the FactoryBeans and add a mock FB to all tests that
need one.
Add a runtime environment variable to make any infractions
fatal. This should be set to `true` on CI builds and on
framework developer environments.
JIRA: https://jira.spring.io/browse/INT-3041
Add namespace support to simplify configuration of
a `RequestHandlerRetryAdvice.
INT-3041 Polishing; PR Comments
* Allow a retry-advice element within the request-handler-advice-chain
* Clean up schema (should not have allowed `synchronization-factory` on
the request-handler-advice-chain.
INT-3041 Polishing; PR Comment
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.
JIRA: https://jira.springsource.org/browse/INT-3301
INT-3301 Polishing; Bump Hibernate to 4.3.1
* Fix JDBC Test after version update
* Bump Hibernate version to fix failing test
Latest versions of HSQLDB and Spring
If an exception occurs on a session it should be physically closed
and not reused because its state is indeterminate and the next
operation might fail.
Note: The booleans within CachedSession do not need to be volatile
because it is a short-lived object only used by the current thread.
Also fixes the assertion message in RFT.get().
JIRA: https://jira.springsource.org/browse/INT-3266
INT-3266 Polishing - PR Comments
Remove need for SuppressWarnings.
Fix 2 test cases where the exception has an additional cause.
JIRA: https://jira.springsource.org/browse/INT-3209
Previously, the DefaultFileNameGenerator re-parsed the
SpEL expression for every message.
Compile the SpEL once (and if it is changed).
Change unit tests to match changes.
- Core support in file module
- FTP Parser and Test
https://jira.springsource.org/browse/INT-3088
INT-3088 Add SFTP Support for PUT, MPUT
INT-3088 Polishing - PR Comments
INT-3088 Docbook For PUT/MPUT
Begin by refactoring `FileTransferringMessageHandler` to use
a `send` operation on RemoteFileTemplate.
Effectively transfer all properties from the adapter to the
template.
This will allow reuse of the send logic from the adapter in
the outbound gateway for `put` and `mput`.
JIRA: https://jira.springsource.org/browse/INT-3203
Enable the use of multiple JSch channels over a
single connection.
JIRA: https://jira.springsource.org/browse/INT-3047
INT-3047: Polishing locks logic
INT-3047 SFTP Reset Cache; Quiesce Shared Sessions
Support resetCache() on the CachingSessionFactory
- reset a shared JSch session so it is reestablished on next use
- immediately close idle sessions
- close in-use sessions as they are returned
- close the channel when an SftpSession is closed and a shared JSch is being used
- physically close a shared JSch session only when the last channel is closed
Polishing
Forgot to save the ftp.xml.
Change CachedSession.epoch to created.
INT-3047 Polishing - PR Comments
- Also add missing docs for `preserve-timestamp`
INT-3047 Polish - PR Comments
Also change epoch to nanoseconds and use a simple != comparison with the
epoch in which a session was created.