SPRING INTEGRATION CHANGELOG ============================ 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 for endpoints Added 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 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 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 with "ref" and "source" attributes replaces The with "ref" and "target" attributes replaces The accepts a "method" replacing and The element is now a self-sufficient endpoint (rather than just creating a handler) The element is now a self-sufficient endpoint (rather than just creating a handler) The 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 element Added namespace support for the element Added namespace support for the element Added namespace support for different channel types (queue, priority, rendezvous, direct, thread-local) Defined ChannelFactory strategy for the plain elements and for the MessageBus 'auto-create' mode Added namespace support for and elements The element now produces a MethodInvokingSource The 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 sub-element has been replaced by the "selector" attribute The endpoint's and elements can now occur in any order Fixed timing issue between and 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 element Added @Concurrency annotation for configuring a @MessageEndpoint's ConcurrencyPolicy Added @Aggregator annotation for specifying aggregating handler methods Added 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 and elements Added support for and elements Added support for the element Added support for the element Added support for the 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 element now accepts a 'message-converter' attribute *** CONFIGURATION *** Added sub-element for Added sub-element for Added element that accepts sub-elements for creating a MessageHandlerChain Added element to the namespace for creating AggregatingMessageHandlers Added "dataype" attribute to the 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