SPRING INTEGRATION CHANGELOG
============================

For the full detailed changelog, see:
https://fisheye.springsource.org/changelog/spring-integration


Changes in version 1.0.4 (Apr 16, 2010)
---------------------------------------
http://jira.springsource.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11286

Changes in version 1.0.3 (Jul 18, 2009)
---------------------------------------
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11209

Changes in version 1.0.2 (Mar 31, 2009)
---------------------------------------
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11153

Changes in version 1.0.1 (Dec 17, 2008)
---------------------------------------
For changes in this release, see:
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11146


Changes in version 1.0.0 (Nov 26, 2008)
---------------------------------------
For changes in this release, see:
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=10791


Changes in version 1.0.0.RC2 (Nov 14, 2008)
-------------------------------------------
For changes in this release, see:
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11102


Changes in version 1.0.0.RC1 (Nov 03, 2008)
-------------------------------------------
For changes in this release, see:
http://jira.springframework.org/secure/IssueNavigator.jspa?reset=true&pid=10121&fixfor=11101

*** GENERAL ***

Upgraded Spring Framework dependency to 2.5.6
Upgraded Spring Security dependency to 2.0.4
Broke 'adapter' module into individual JARs
Added JMS samples

*** CORE API ***

Added Message Filter
Added error handling strategy so that ErrorMessage can be routed to an error channel
Added support for a 'defaultChannel' property on MessageChannelTemplate
Added @Gateway annotation for per-method configuration of request and/or reply channels
Simplified GatewayProxyFactoryBean reply Message correlation
GatewayProxyFactoryBean now supports non-pollable replyChannel 
DefaultMethodResolver now correctly resolves annotated method on Proxy
Fixed CronTrigger end of month rollover issue
Added <interval-trigger/> and <cron-trigger/> elements for pollers
Added transaction support for annotation-based polling
AbstractPollingEndpoint now supports an Advice chain
Fixed endless loop issue in Router (INT-358)
MethodInvokingRouter now accepts a target object only (no method name required)
MethodInvokingRouter will check for @Router method-level annotation
Added 'default-output-channel' attribute to the <router/> element
The 'splitter' element does not require a "ref" (for a DefaultSplitter instance)
The 'resequencer' element accepts an "input-channel" attribute
AbstractMessageBarrierHandler no longer calls processMessages twice
The <pool-executor/> element was renamed to <thread-pool-task-executor/>
Default TaskExecutor created for MessageBus sets max-size for pool instead of core
Endpoints registered after ApplicationContext refresh are still activated
MessageBus started/stopped events are fired
Removed the MessageBusInterceptor
Stopping/destroying context/MessageBus properly stops all Threads
MessageHeaders no longer supports clear
MessageHeaders constructor copies the original map for immutability

*** ADAPTERS ***

Added JMS header enricher
Added JmsOutboundGateway and refactored JmsGateway to JmsInboundGateway
JMS gateways recognize a payload that is already a Spring Integration Message
Added namespace support for JmsOutboundGateway
MessageHeader values are propagated when using JMS gateways
Enabled configuration of MessageConverter for JmsOutboundGateway
FileToStringTransformer is encoding-aware
Added inbound Mail Channel Adapters (POP3, IMAP, and IMAP IDLE)
Mail outbound-channel-adapter accepts the "channel" attribute
Added mail header enricher namespace support
Enabled configuration of a WebServiceMessageSender instance for WS outbound gateways
WebService gateway supports a Document payload in addition to Source and String
RMI and HttpInvoker outbound gateways remove but copy non-serializable Message headers

*** OTHER ***

Channel security provides a ChannelInvocation instance
Channel security interceptor now extends AbstractSecurityInterceptor
XML Document Builders are now Namespace-aware
Added XPath Message Selector
Added XPath Message Splitter


Changes in version 1.0.0.M6 (Aug 20, 2008)
------------------------------------------

*** CORE API ***

Refactored Message object to be unmodifiable after initial creation
Refactored MessageHeaders object to be an implementation of (unmodifiable) Map<String, Object>
Added MessageBuilder for constructing Messages (now used within internal handlers and endpoints)
Added Quartz-based MessagingTaskScheduler to support Cron-based polling
Reimplemented base Scheduling infrastructure to provide an SPI
MessageBus no longer provides an option for auto-creating channels
Added HeaderTransformer strategy interface
MethodArgumentMessageMapper (f.k.a AnnotationMethodMessageMapper) is used across handler types
PublishSubscribeChannels now provide an 'applySequence' property for adding sequence number/size headers
SimpleDispatcher no longer attempts retries and does not mask exceptions with rejection limit error
Default 'maxMessagesPerPoll' value is now unbounded
Aggregator gives precedence to outputChannel and falls back to the returnAddress (consistent with other handlers)
Added support for arguments, return-value, and thrown exception payload types for MessagePublishingInterceptor
AbstractMessageDispatcher uses a Set (to avoid duplicate subscriptions) instead of a List
AbstractMessageBarrierHandler uses returnAddress if outputChannel is null
PublisherAnnotationPostProcessor proxies classes if the annotated method is not declared on an interface method
Method reference is used for @Subscriber annotation (avoids NoSuchMethodException for method name ambiguity)
MethodInvokingSource and MethodInvokingTarget now accept the actual Method reference instead of method name
ChannelFactory behavior is now consistent with channels that are defined explicitly (no longer creates proxies)
MessageHandlerDecorator (f.k.a. InterceptingMessageHandler) now supports setter injection
InboundChannelAdapter (replacement for SourceEndpoint) calls MessageDeliveryAware onSend/onFailure methods

*** ADAPTERS ***

Added an FTP Target adapter
FileEntryParser can be customized for the FtpSource
Added PollingMailSource adapter to support (polled) inbound e-mail messages
Added SubscribableMailSource adapter to support (event-driven) inbound e-mail messages
JMS header-mapping MessageConverter is no longer nested twice when used for source and target
JMS message headers are now propagated (JMS-specific and user-prefixed values)
AbstractMailHeaderMapper correctly maps the FROM/REPLY_TO attributes

*** CONFIGURATION ***

Channel Adapter now creates a DirectChannel implicitly if no "channel" is configured
Added namespace support for WireTap
The "max-messages-per-poll" value can be configured on <poller/> elements
The <poller/> element now accepts a "cron" attribute (as an alternative to "period") if Quartz support is available
The <poller/> element now provides "initial-delay" and "fixed-rate" attributes
Added support for hybrid XML and annotations configuration (method-level annotations with XML-based endpoint)
Added namespace support for configuring the MessageBus' TaskScheduler
The "error-handler" attribute is available for XML-based Message Endpoint configuration
The "errorChannel" bean is detected within the Application Context rather than being configured on the MessageBus
The "channelFactory" bean is detected within the Application Context rather than being configured on the MessageBus
Exposed configuration of concurrent-consumers for the JmsGateway
The @HeaderProperty and @HeaderAttribute annotations have been replaced with @Header
Splitter endpoint's 'output-channel' is now configured correctly when using annotations

*** WEB SERVICES AND XML ***

Added XPathRouter
DOMResultFactory now creates a DOMResult with a node for OXM Marshaller

*** GENERAL ***

Upgraded to Spring 2.5.5.A
Upgraded to Spring Security 2.0.2.A
Upgraded to Spring WS 1.5.4.A


Changes in version 1.0.0.M5 (Jul 08, 2008)
------------------------------------------

*** CORE API ***

SimpleMessagingTaskScheduler now has a configurable shutdown (for 'shutdown' vs 'shutdownNow')
QueueChannel uses TRACE logging for preReceive and only uses DEBUG in postReceive if the Message is not null
Added <concurrency-interceptor> for endpoints
Added <transaction-interceptor> for endpoints
The MessageBus tries to register new channels before starting (on ContextRefreshedEvent)
Aggregator now uses its endpoint's output-channel
Added MessageTransformer and @Transformer support
Added a MessageTransformingChannelInterceptor
MessageBus is now an interface
MessageHeader is now an interface
Added ChannelFactory
Added PublishSubscribeChannel and <publish-subscribe-channel/>
Channels specified in source-endpoint (now channel-adapter) are now auto-created
Added EndpointTrigger for invoking endpoints with a poll command
Removed the DispatcherPolicy from channel configuration
Added BroadcastingDispatcher

*** ADAPTERS ***

Added regular expression pattern FilenameFilter implementation
The <file-source/> now accepts one of "file-filter", "filename-filter", or "filename-pattern"
FileSource now uses a Resource to locate its directory
FtpSource closes the connection after poll
WebServiceHandler namespace support includes 'message-factory' and 'fault-message-resolver'
WebServiceHandler namespace supports injection of the WebServiceMessageCallback 
Refactored FtpSource and FileSource to be better aligned
AggregatorBarrier correctly stops processing messages after completion

*** CONFIGURATION ***

Method-level @Handler can now be used without class-level @MessageEndpoint
The <channel-adapter/> with "ref" and "source" attributes replaces <source-endpoint/>
The <channel-adapter/> with "ref" and "target" attributes replaces <target-endpoint/> 
The <channel-adapter/> accepts a "method" replacing <source-adapter/> and <target-adapter/>
The <router/> element is now a self-sufficient endpoint (rather than just creating a handler) 
The <splitter/> element is now a self-sufficient endpoint (rather than just creating a handler) 
The <aggregator/> element is now a self-sufficient endpoint (rather than just creating a handler) 
Added namespace support for creating a MessageSelectorChain

*** WEB SERVICES AND XML ***

Added XML module
Added XSLT Transformer
Add Spring OXM transformer
Add XML Result transformer to convert from a Result to a Document

*** SECURITY ***

Added support for Spring Security on MessageChannels
Added support for Spring Security on endpoints

*** GENERAL ***

More Exceptions now provide the 'failedMessage'
Added a MessageRejectedException. It is thrown when a MessageSelector rejects a Message


Changes in version 1.0.0.M4 (May 23, 2008)
------------------------------------------

*** CORE API ***

Improved consistency of 'endpoint' with SourceEndpoint, TargetEndpoint, and HandlerEndpoint implementations
SourceEndpoint replaces PollingSourceAdapter and also provides better separation from the actual Source
ReplyCorrelator is now encapsulated within RequestReplyTemplate
Added MessagingGatewaySupport, SimpleMessagingGateway, and GatewayProxyFactoryBean for Request-Reply operations
Renamed SynchronousChannel to DirectChannel, also factored out ThreadLocalChannel
@Splitter-annotated methods now attempt to convert the Message payload (consistent with @Handler)
Added support for parameter-binding with @HeaderAttribute and @HeaderProperty annotations
Handler methods configured with namespace support now accept a Message payload
Implemented a MessageSelectorChain (consistent with MessageHandlerChain)
Added @CompletionStrategy annotation and CompletionStrategyAdapter for aggregators
The sequence number and sequence size are propagated correctly for POJO-based handler methods.
Source implementations may be connected to a DirectChannel
The ErrorHandler is now provided to ConcurrentTargets
Implemented RootCauseErrorMessageRouter
Added removeAttribute() and removeProperty() methods to MessageHeader
When passing to a handling method, primitive arrays are no longer cast to Object[]
Failed Messages (when available) are now propagated within MessageHandlingException and MessageDeliveryException
Provided configurable property for registering an asynchronous TaskExecutor for the ApplicationEventMulticaster

*** ADAPTERS ***

Provided namespace support for configuring the MessageHeaderMapper for JMS sources and targets
FileNameGenerator is now configurable for a FileTarget
File-Message mapping now supports text, binary, and File object
Mapping to JMS properties from the MessageHeader no longer fails on JMSException

*** CONFIGURATION ***

Added namespace support for the <gateway/> element
Added namespace support for the <splitter/> element
Added namespace support for the <router/> element
Added namespace support for different channel types (queue, priority, rendezvous, direct, thread-local)
Defined ChannelFactory strategy for the plain <channel/> elements and for the MessageBus 'auto-create' mode
Added namespace support for <console-source/> and <console-target/> elements
The <source-adapter/> element now produces a MethodInvokingSource
The <target-adapter/> element now produces a MethodInvokingTarget
Added annotation support for scheduling metadata on a message endpoint
@Splitter no longer accepts a "channel" attribute (now uses endpoint's output-channel)
A @MessageEndpoint annotated class now requires the presence of a handler method
The endpoint's <selector/> sub-element has been replaced by the "selector" attribute
The endpoint's <concurrency/> and <schedule/> elements can now occur in any order
Fixed timing issue between <annotation-driven/> and <message-bus/> in a ClasspathXmlApplicationContext

*** GENERAL ***

Now using the SpringSource Enterprise Bundle Repository for dependencies
Updated MANIFEST.MF files for imports, exports, and bundle metadata
Adjusted ivy configuration for provided and runtime dependency scopes
Moved spring.schemas and spring.handlers files to src/main/resources
Refactored the core's org.springframework.integration.adapter package contents into other packages
Added several diagrams to the Reference Documentation's "overview" section
Upgraded to Spring 2.5.4.A and Spring-WS 1.5.1.A


Changes in version 1.0.0.M3 (Apr 07, 2008)
------------------------------------------

*** CORE API ***

Handler method invocation now uses Spring's default type-conversion strategies
Message priorities are now defined in the MessagePriority enum
Added ResponseCorrelator for polling a reply channel with a correlationId
Added SynchronousChannel that invokes handlers on the sender's thread
        or receives from a PollableSource on the receiver's thread
Implemented the WireTap pattern with a ChannelInterceptor that publishes to a secondary channel
Calling setErrorChannel on MessageBus no longer throws NullPointerException upon activation
ChannelPurger now accepts multiple MessageChannels (as varargs) in its constructors
RouterMessageHandlerAdapter now sets the ChannelRegistry on its target Object if it is ChannelRegistryAware
DefaultMessageEndpoint now sets the ChannelRegistry on any ChannelRegistryAware handler 
MessageEndpointAnnotationPostProcessor now sets the ChannelRegistry for any annotated ChannelRegistryAware Object

*** ADAPTERS ***

Added FtpSourceAdapter
Added HttpInvokerSourceAdapter
Added HttpInvokerTargetAdapter
Added RmiSourceAdapter
Added RmiTargetAdapter
Added SimpleWebServiceTargetAdapter
Added MarshallingWebServiceTargetAdapter
Added a DefaultMailHeaderGenerator and defined constants in MailAttributeKeys
CharacterStreamSourceAdapter now requires a Reader (not InputStream)
CharacterStreamTargetAdapter now requires a Writer (not OutputStream)
The stdoutAdapter and stderrAdapter factory methods now accept a 'charsetName'
JMS source adapters now copy properties from the received JMS Message header
JMS source and target adapter parsers now consider "connectionFactory" as the default bean-name reference

*** CONFIGURATION ***

Added namespace support for PriorityChannel with the <priority-channel/> element
Added @Concurrency annotation for configuring a @MessageEndpoint's ConcurrencyPolicy
Added @Aggregator annotation for specifying aggregating handler methods
Added <aggregator/> element for defining an aggregating handler in XML
Annotation-based BeanPostProcessors now handle proxies correctly
Annotation-based BeanPostProcessors now recognize inherited class-level annotations
        even if they are not explicitly @Inherited and even if they are on an interface
Added support for <rmi-source/> and <rmi-target/> elements
Added support for <httpinvoker-source/> and <httpinvoker-target/> elements
Added support for the <ftp-source/> element
Added support for the <ws-target/> element
Added support for the <mail-target/> element

*** GENERAL ***

The Spring Web Services support is included in a new 'spring-integration-ws' module 
Updated manifest properties for OSGi-compliance in "core" and "adapters"
Added manifest properties for OSGi-compliance for "ws" and "samples"
Added "Bundle-Name" to each manifest file


Changes in version 1.0.0.m2 (Feb 28, 2008)
------------------------------------------

*** CORE API ***

Defined the ChannelInterceptor strategy interface
Implemented new priority-based MessageChannel (PriorityChannel)
Created a MessageSelectingInterceptor, a ChannelInterceptor that delegates to a MessageSelector
Added clear and purge methods to MessageChannel (purge accepts a MessageSelector)
Implemented a ChannelPurger that delegates to one or more MessageSelectors
ChannelRegistry now provides 'unregister' method for runtime removal of channels
Added RequestReplyTemplate for synchronous, blocking request/reply behavior over an asynchronous channel
Added isExpired() method to Message
Added a constructor to GenericMessage that copies MessageHeader properties and attributes
Using the header-copying constructor in MessageHandler adapters to preserve header information
Undeliverable replies from endpoint are passed to its ErrorHandler
ErrorHandler is now a configurable strategy for MessageEndpoints
ReplyHandler is now a configurable strategy for MessageEndpoints
Subscription is now immutable
Errors in ConcurrentHandler are now always logged at DEBUG level, and at WARN level if no 'errorHandler' is available
Endpoints now set the 'correlationId' on reply Messages
Defined Aggregator and CompletionStrategy and implemented an AggregatingMessageHandler
SplitterMessageHandlerAdapter now sets sequenceNumber and sequenceSize header properties automatically
Added 'sendTimeout' property to SplitterMessageHandlerAdapter

*** ADAPTERS ***

Added Mail target adapter
Acknowledge modes are now configurable for JmsMessageDrivenSourceAdapter
JMS attributes are now set from the MessageHeader prior to sending via JmsTargetAdapter
The <jms-source/> element now accepts a 'message-converter' attribute

*** CONFIGURATION ***

Added <interceptor/> sub-element for <channel/>
Added <selector/> sub-element for <endpoint/>
Added <handler-chain> element that accepts <handler/> sub-elements for creating a MessageHandlerChain
Added <aggregator/> element to the namespace for creating AggregatingMessageHandlers
Added "dataype" attribute to the <channel/> element for message payload datatype enforcement
Added 'initialDelay' and 'fixedRate' attributes to the @Polled annotation
Added 'destination-name' attribute for JmsTargetAdapter
Added 'autoStartup' property to MessageBus (and corresponding XML attribute) with a default value of 'true'
Added 'defaultConcurrencyPolicy' property to MessageBus (and corresponding XML sub-element)
Defined default error channel key as "errorChannel" (also added ERROR_CHANNEL_NAME constant in MessageBus)

*** GENERAL ***

Separated "spring-integration-core" from "spring-integration-adapters"
Added manifest properties for OSGi-compliance
Refactored package structure to remove all cycles
Using java.util.UUID for default ID generation strategy
Increased DEBUG logging throughout, especially for channel and endpoint
Components delegating to (Scheduled)ExecutorService are now configurable through standard injection
