JIRA: https://jira.spring.io/browse/INT-3381
* Add support to mark `@Bean` methods with `Messaging Annotations`
* Addition attributes for `Messaging Annotations`
* Some refactoring and fixing
* Fix `AbstractMappingMessageRouter#onInit()` propagation
* Fix `GemfireGroupStoreTests` (https://build.spring.io/browse/INT-MASTERSPRING40-JOB1-246/test/case/135235772)
There is still some side effect: we need define `MessageChannel` beans explicitly. Since methods are processed within `BPP`,
not all beans with `Messaging Annotations` might be processed.
INT-3381: PR comments and other fixes
INT-3381 Polishing
INT-3381: Revert `RouterFB` & `SplitterFB`
JIRA: https://jira.spring.io/browse/INT-3382
- Make private methods protected; add protected getters
- Support obtaining just metadata from stores
- Support just fetching the first message from a group
- add metaSize() to message group
INT-3382: Polishing
JIRA: https://jira.spring.io/browse/INT-3376
Allow user annotations with Messaging Meta-Annotations
override/supplement attributes set on the meta-Annotation.
PR Comments and More
- Do not create a bean definition for the annotation (interface)
when `MessagingGateway` is used as a meta-Annotation.
- For a `MessagingGateway` restore attributes overridden with empty values
- Other PR comments.
Fully support meta-Annotation hierarchy.
Polishing:
* Upgrade JRuby to 1.7.12
* Replace `AnnotationFinder` with moving its methods to `MessagingAnnotationUtils`
* Refactor aggregator classes to use `MessagingAnnotationUtils` to determine the method for annotation
* Fix `IntegrationComponentScanRegistrar` to skip annotation classes
* Fix `MessagingGatewayRegistrar#replaceEmptyOverrides`
* Improve `MessagingAnnotationPostProcessor` to use `ReflectionUtils.USER_DECLARED_METHODS` `MethodFilter`
* Change the `MethodAnnotationPostProcessor` hierarchy to use just list of annotations to process attributes
JIRA: https://jira.spring.io/browse/INT-3379
Change enumerated attributes to a union with xsd:string
to allow placeholders.
JMS and XML deferred to 4.1 due to the amount of
changes needed to the parsers. See INT-3384.
JIRA: https://jira.spring.io/browse/INT-3374
Move `getMessageBuilderFactory` from `IntegrationContexUtils`
to `IntegrationUtils`.
Change DOS Newlines to Unix
`AbstractMessageGroupStore`.
JIRA: https://jira.spring.io/browse/INT-3374
`DefaultDatatypeChannelMessageConverter`
Move `getConversionService()` from `IntegrationContextUtils`
to `IntegrationUtils` in `support.utils`.
JIRA: https://jira.spring.io/browse/INT-2352
Add `replaceChannelMappings()` to the `AMMR`.
INT-2352 Polishing - PR Comments
Consolidate tests.
Fix up `@ManagedAttribute` Vs `@ManagedOperation`
Expose `setChannelMappings` over JMX
JIRA: https://jira.spring.io/browse/INT-3338
INT-3338: Add Docs
INT-3338: Make `priority` 'smart'
Add `Sort` for all group queries dependently of `priorityEnabled`.
Avoids the need to configure separate collections for different type of `MessageStore`
INT-3338: Add `MongoDbChannelMessageStore`
INT-3338: Polishing, Fixes, Improvements
Doc Polishing
Fix stream test.
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-3351
INT-3351: Polishing according PR comments
* Add `property-placeholder` support for `@Poller`
* Change `ref` to `value`
* Add JavaDoc for `array` workaround
* Add docs
INT-3351: Polishing and fixes
INT-3351 More Tests
INT-3351: PR comments
INT-3351 Final Polishing
JIRA: https://jira.spring.io/browse/INT-2595
* Add `group-timeout` and `group-timeout-expression` to the Correlation Endpoint
* Add logic to the `AbstractCorrelatingMessageHandler` to schedule group for `forceComplete`,
when the target `ReleaseStrategy` returns `false`
INT-2595: Polishing according PR comments
INT-2595: Expose `lock-registry` and further docs
INT-2595 Doc and Test Polishing
INT-2595: Fix typos
INT-2595 More Minor Doc Polish
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-3337
INT-3337: Addressing PR comments
INT-3337: Add support to store/read Messages
* Add support to store/read `ErrorMessage`. As a trick for `Throwable` is selected (de)serializing converter
INT-3337: Add converters for `Message<?>` impls
INT-3337: Make `MDbMS.MessageWrapper` AuditAware
Add `_id` persistence field
Addressing PR comments
Polishing
- Docs
- Check for null ApplicationContext
- Add afterPropertiesSet() to tests
JIRA: https://jira.spring.io/browse/INT-3326
INT-3326: Add parent-child test
INT-3326: Fix `ClassCastException` for `GCII`
INT-3326: Rebase and Polishing
INT-3326: Fix `GCII` for `getBeanNamesForType`
INT-3326: Add `GlobalChannelInterceptor` annotation
JIRA: https://jira.spring.io/browse/INT-3326
INT-3326: Add parent-child test
INT-3326: Fix `ClassCastException` for `GCII`
INT-3326: Rebase and Polishing
INT-3326: Fix `GCII` for `getBeanNamesForType`
INT-3326 Polishing Doc, JavaDocs
Also fix a typo in the bean name for the CI processor.
INT-3326: Polishing
Doc Polishing
Implicit channel declaration for items downstream
of a `ChannelInterceptor` were not created.
The `BPP` eagerly fetched the interceptors during its
own creation; this caused the context initialization to fail
because the channel initializer hasn't run yet.
Defer creation of the interceptor beans until they are
actually needed.
Also, when using `@Configuration`, the channelInitializer
is no longer the first bean in the bean factory.
INT-3332 Use SmartLifeCycle to Apply Interceptors
Instead of using a bean post processor, the interceptor
processor now performs the channel interception when beans
in phase Integer.MIN_VALUE are started - after all beans
have been instantiated.
Polishing
JIRA: https://jira.spring.io/browse/INT-3325
JIRA: https://jira.spring.io/browse/INT-1870
Optimized MGS for QueueChannel - uses a LIST for
each channel and LPUSH, RPOP.
* Also fix MutableMessage to be Serializable
INT-1870 Priority Redis Channel Message Store
Supports priorities 0-9 (+ no priority).
Priorities out of that range are treated as no priority.
Polishing - Add Marker Interfaces
* Emit a `WARN` log if a channel is used with a regular MessageGroupStore
* Allow message-store on namespace when defining a priority channel
INT-3325 Polishing; PR Comments
Fix some typos in JavaDocs and Docs
JIRA: https://jira.spring.io/browse/INT-3324
* Move `private` `ExpressionControlBusFactoryBean$ControlBusMethodFilter` class
to the `org.springframework.integration.expression.ControlBusMethodFilter`
to make it as convenient to use from JavaConfig
JIRA: https://jira.spring.io/browse/INT-3317
In addition add `AbstractCorrelatingMessageHandler.discardChannelName` for convenience with JavaConfig
INT-3317: Add `AbstractCorrMH.outputChannelName`
INT-3317: Fix further `BF` population
Also add `MessageFilter.discardChannelName`
Move `XPathExpressionEvaluatingHeaderValueMessageProcessor` to the `xml.transformer.support` package
Additional polishing
Polishing
PR comments.
JIRA: https://jira.spring.io/browse/INT-3319
The `MessageBuilderFactory` abstraction relies on the bean factory
being propagated to all classes that create messages.
Some classes were missed in the initial PR.
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.spring.io/browse/INT-3316
The `SimpleTypeConverter` delegate uses property editors
which are not thread safe. We protect against concurrent
access when the source is not a String, but when a String,
we delegate to the `STC`.
Synchronize access to the `STC.convertIfNecessary()` method.
JIRA: https://jira.springsource.org/browse/INT-3314
Add to `ServiceActivatingHandler` `beanFactory` population code for the `MessageProcessor` delegate
INT-3314: Populate `BF` to `HValueMProcessor`s
Make `XPathExpressionEvaluatingHeaderValueMessageProcessor` as `public`
INT-3314: Populate `BF` to `HE.messageProcessor`
INT-3314: Add `BF` `NPE` protection
INT-3314 XPath Header Enricher Test
Add a test that verifies the `BeanFactoryTypeConverter` is used
(convert to a TimeZone object).
This is still a work in process.
There are a bunch of TODOs in classes
that are not managed by Spring and so
need to have the MessageBuilderFactory
injected.
But I am looking for feedback on the
approach.
INT-3309 Resolve TODOs
Provide access to the MessageBuilderFactory in all classes.
INT-3309 Polishing + Tests
* Fallback to 'fromMessage()' if mutating and inbound message is not MutableMessage
* Add 'alwaysMutate' boolean to MutableMessageBuilderFactory - coerces 'fromMessage' calls to 'mutateMessage'
* Add tests
INT-3309 Polishing; PR Comments
Also add tests to parent/child contexts where the parent has the
default message builder and the child has a mutable message builder.
INT-3309 More Polish; PR Comments
Also fix removeHeader in MMB.
JIRA: https://jira.springsource.org/browse/INT-3308
INT-3308 Move Optimization to AbstractDispatcher
- avoids the need for `canShortCutDispatcher()`
- optimizes all framework channels, including AMQP, JMS
- slight additional performance improvement
INT-3308 FinalSingleHandlerChannel
This is still a work in process.
TODO:Parser, parser tests.
See the DirectChannelTests for perforance results.
INT-3308 'Final' Channel Parser Changes, Tests
INT-3308 Polishing; PR Comments
INT-3308 Polishing
* Rename 'final' attribute to 'fixed-subscriber'
* Rename `BasicSingleFixedSubscriberChannel` to `FixedSubscriberChannel`
INT-3308 Polishing
* Rename test cases to match channel
* Fix parser error messages
* Add more exclusive attribute/element tests
INT-3308 More Polishing
* Remove remaining textual references to 'final'
* WARN log if the single subscriber has auto-startup="false"
* Handle the case when a fixed subscriber channel is declared after its handler
* Support the use of a fixed subscriber channel for elements created by an AbstractOutboundChannelAdapterParser
JIRA: https://jira.springsource.org/browse/INT-3312
* Add `setOutputChannelName` to `AbstractReplyProducingMessageHandler` and `SourcePollingChannelAdapterFactoryBean`
to allow to have 'late binding' and resolve the real channel from `AC` on component initialization, instead of creation phase
* Add `setRequestChannelName` and `setReplyChannelName` to `ContentEnricher` for the same purpose
* Make `HeaderValueMessageProcessor` implementation `public`. It is useful for JavaConfig and DSL
* Polishing parsers to use classes, not their names as strings
INT-3312: PR comments
INT-3312: Polishing
JIRA: https://jira.springsource.org/browse/INT-3298
Emit a WARN log whenever the `ReleaseStrategyFactoryBean`
falls back to using the `SequenceSizeReleaseStrategy`.
This will happen if no method name is provided and no
annotated method is found, or a null reference is provided.
JIRA: https://jira.springsource.org/browse/INT-3294
Previously, implicit input channel creation was not
supported for annotated endpoints.
Register a `DirectChannel` if the input channel does
not exist in the context.