FileReadingMessageSource supports disposition of the payload
after the message is sent (or via transaction synchronization).
The (S)FTP adapters delegate to an FRMS; add support for the
file disposition expression, result channel, and send timeout
to the (S)FTP adapters.
Also tested with ftp sample - INTSAMPLES-83 - patch will be
committed once this is in a milestone.
FTP servers return full path from listNames() whereas SFTP
returns just the filename. mget logic assumed SFTP behavior.
Add a test to see if the filename already starts with the remote
directory and remove it before calling get() (which assumes just
the filename).
Includes an @Ignored test for FTP and SFTP that runs an mget
against a server.
DefaultTcpNioSSLConnectionSupport and DefaultTcpNetSSLSocketFactorySupport need
an SSLContext which is set up in afterPropertiesSet(). However, when configuring
the connection factories with default strategies, afterPropertiesSet() is not
called. Result: NullPointerException.
Add call to afterPropertiesSet() where appropriate and tests to verify.
Previously, the UDP inbound adapter was incorrectly using
the default task scheduler (taskScheduler) to run its main
receive activity. Once a packet is read, it is handed off
to another thread for message processing, using a configured
(or default) task executor.
We should not hold on to a scheduler thread permanently; the
default scheduler has only 10 threads and one user's app
stopped working when using 10 inbound adapters.
The work around was to define an explicit 'taskScheduler'
bean with more threads.
The problem reported by INT-2630 was more extensive. For example,
the unconditional parameter conversion causes arrays to be copied
unnecessarily.
The BeanFactoryTypeConverter now does a no-op conversion whenever
the source type is assignable to the target type.
This effectively reverts to the Spring 3.0 behavior, where this
assertion resulted in the argument not being added to the
argsRequiringConversion array.
Polishing
Add a couple more tests
Pseudo transaction support means some projects now
need a transitive dependency to spring-tx. Previously
the project was marked as optional in the POM.
Improve performance.
For NIO sockets, a pair of PipedInput/OutputStreams are
used to transfer data from the reading thread to the
assembling thread.
The stream used the default buffer size (1024) which was
inefficient for large messages.
This change uses the underlying socket's receiveBufferSize
attribute to set the size of the piped stream, allowing
for more efficient data transfer.
Also adjusts the mocks in the deadlock detection test
to ensure the received data is larger than the pipe
buffer size.
* make 'Groovy Control Bus' similar to 'Expression Control Bus'
* add tests about `abstract` & `prototype` Beans
* fix about lost `groovy.lang.Script#println()` functionality in the `GroovyControlBusFactoryBean$ManagedBeansBinding`
* polishing `GroovyControlBusDelayerManagementTest` to show abilities & fixes with this issue
JIRA: https://jira.springsource.org/browse/INT-2631
INT-2631: polishing according to PR comments
Spring-expression 3.1 unconditionally converts all arguments for
method calls; MessageHeaders and MessageHistory do not have
no-arg constructors and the MapToMapConverter always attempts
conversion, in case any elements require conversion.
We are exploring a Spring 3.1 change but, in the meantime, we
have a detour in BeanFactoryTypeConverter in that we
can skip conversion of these types.
Previously, the timeouts in @Gateway method annotations always
overrode the default timeout if specified in, say, XML.
Now, the @Gateway timeouts are applied only if
* The equivalent default was not set
* The annotation value is something other than the default (Long.MIN_VALUE)
Note: This is a breaking change for one scenario:
<int:gateway ... default-reply-timeout=1000 ... />
where the interface has a method annotated with @Gateway(replyTimeout=Long.MIN_VALUE)
In other words, when the user wants a default timeout on the gateway
but wants to override it for just the annotated method and happened to use
the new default value.
The @Gateway annotation does not allow us to detect whether its
attribute value came from the default or was explicitly set.
The work-around for this breaking change is to use a different negative
number to configure an infinite timeout:
@Gateway(replyTimeout=-1)
* Add beginShutdown() and endShutdown() to OrderlyShutdownCapable
* JMS/AMQP stop listener containers
* TCP (server side)
** after beginShutdown() disallow new connections, drop (log) new messages
** after endShutdown() close server socket
* HTTP (server side)
** after beginShutdown() disallow any new requests (503 Service Unavailable)
* Docbook updates
** What's new section
** Orderly Shutdown section.
* Fix docs don't mention the need to add **amqp_** prefix to headers in order to have *DefaultAmqpHeaderMapper* add it to the message
* List all available standard AMQP Headers from class *AmqpHeaders*
For reference see: https://jira.springsource.org/browse/INT-2454
* fix Missing documentation of "enableDaemonThread" property of the SFTP session factory
* Reference documentation clean-up
* Document all properties of the DefaultSftpSessionFactory