Permalink
Commits on Sep 15, 2016
Commits on Sep 14, 2016
  1. Prepare for release

    artembilan committed Sep 14, 2016
Commits on Sep 13, 2016
  1. GH-67: Add JPA DSL Support

    artembilan authored and garyrussell committed Sep 7, 2016
    JIRA: https://jira.spring.io/browse/INTEXT-205
    Fixes GH-67 (#67)
    
    `IntegrationComponentSpec.doGet()` polishing for minimizing code
    The commit isn't related to JPA
    
    * Add `Jpa.outboundAdapter` implementation
    * Introduce `TransactionHandleMessageAdvice` for the `HandleMessageAdvice` case
    * Introduce `ConsumerEndpointSpec.transactional()` API for more obvious TX Advice configuration
    * Add `TransactionInterceptorBuilder(boolean handleMessageAdvice)` ctor to let to configure `TransactionHandleMessageAdvice`.
    * Remove `PollerSpec.transactional()` without arguments. The `TransactionInterceptor` must be supplied with `TxManager` or `BeanFactory`.
    We don't have access to `BeanFactory` from the `IntegrationComponentSpec` yet.
    * Fix setter typo in the `JmsMessageDrivenChannelAdapterSpec`
    * Add comment for `FactoryBean` tricking in the `AmqpPollableMessageChannelSpec`
    * Remove unnecessary (any more) reflection from the `AmqpPollableMessageChannelSpec.templateChannelTransacted()`
    
    * Add simple `.transactional()` configuration variant
    * Register and internal `TransactionInterceptor` instance via `ComponentsRegistration` callback
    * Fix `IntegrationFlowDefinition` and `FilterEndpointSpec` for a new `ComponentsRegistration` in the `EndpointSpec`
    * Fix `NPE` in the `IntegrationFlowBeanPostProcessor`
    * Simplify `JpaTests` config to ensure that a new `.transactional()` works well
    
    * Add `Jpa.updatingGateway()` support
    * Refactoring for the `requiresReply` property, since any implicit internal modifications don't make sense because of public `ConsumerEndpointSpec.requiresReply()`
    
    * Add `Jpa.retrievingGateway()`
    * Rework `JpaBaseOutboundEndpointSpec.parameter()` signature to make it more flexible for coding
    * Add `JpaBaseOutboundEndpointSpec.parameterExpression()` for distinguishing fluent API
    
    Revert and add `setRequiresReply(true)` by default for outbound gateways
  2. GH-104: Disallow Scope for `IntegrationFlow`

    artembilan authored and garyrussell committed Aug 31, 2016
    Fixes GH-104 (#104)
    
    Since `IntegrationFlow` is just a logical container for the rest Integration component in the flow definition,
    it doesn't not make any sense to have it in the `scope`. Just because all those components are registered as singletons for their proper stateless lifecycle and logic
    
    * Throw `BeanCreationNotAllowedException` if `IntegrationFlow` bean definition is in not singleton scope.
    
    * Fix Scope detection using `getBeanDefinitionNames()` instead of real `getBean()`
    * Optimize `IntegrationFlow` process in the `IntegrationFlowBeanPostProcessor` via real object replacing its `integrationComponents`.
    That allow do not jump to the `beanFactory` from the `IntegrationFlowContext`
    * Don't register `IntegrationFlow` as a bean in the `IntegrationFlowContext`
    
    Fixes after rebase.
    
    Leave the manual flow registration as a bean though.
    
    * Avoid `StandardIntegrationFlow` mutation via new `setIntegrationComponents()`
    * Redo `Lifecycle` logic in the `StandardIntegrationFlow`
    
    Fix condition when cancelled task in the taskScheduler might not be cancelled,
    because of `receiveTimeout` race condition on the `QueueChannel.receive()`.
    
    * Add `.receiveTimeout(10)` to the testing flow.
    * Also add `.maxMessagesPerPoll(1)` to exit from polling task as fast as possible
Commits on Sep 12, 2016
Commits on Sep 7, 2016
  1. Add TransactionInterceptorFactoryBean

    garyrussell authored and artembilan committed Sep 6, 2016
    Rename to ...Builder
    
    Also don't fetch txMgr from BF - let TransactionAspectSupport take care of it at runtime.
    
    Add overloaded 'transactional' to PollerSpec
    
    Deprecate the old one which only supports default attributes.
    
    Polishing according PR comments:
     * Add `PollerSpec.transactional()` variant
     * Add `@SInCE 1.2` to all new APIs
     * Fix `PollerSpec` to minimize the code and reuse existing logic
     * Fix `TransactionInterceptorBuilder` according PR comments
Commits on Sep 6, 2016
  1. GH-112: IntegrationFlowCtx: Stop Flow on Remove

    artembilan authored and garyrussell committed Sep 6, 2016
    Fixes GH-112 (#112)
    
    Move cast in the test and remove redundant `throws`
    
    * Make `IntegrationFlowAdapter` as `SmartLifecycle` and delegate to the provided `StandardIntegrationFlow`
    * Fix typo in the `IntegrationFlowContext` exception message
    * Add `IntegrationFlowAdapter` variant test-case to the `ManualFlowTests`
    
    Add `Assert` for NPE around `targetIntegrationFlow` in the `IntegrationFlowAdapter`
    Also fix `StackOverflowError` cause by the `IntegrationFlowAdapter` when it is used as a service-activator, etc., method source.
  2. GH-111: Align Kafka09 classes with the latest SIK

    artembilan committed Sep 6, 2016
    Fixes GH-111 (#111)
Commits on Aug 29, 2016
  1. GH-106: Fix `StandardIntegrationFlow` Lifecycle

    artembilan authored and garyrussell committed Aug 29, 2016
    Fixes GH-106 (#106)
    
    Previously the `StandardIntegrationFlow` got deal only with the `AbstractEndpoint` and `EndpointSpec`, ignoring all other dependent `Lifecycle`s
    
    * Gather all the `SmartLifecycle` components, including sub-flows which are `StandardIntegrationFlow` as well
    * Fix `this.running` condition in the `stop()`
    * Add `AggregatingCallback` for the `stop(Runnable)` propagation
    * Add test-case based on the request from end-user: publish-subscriber sub-flow in the manually-registered `IntegrationFlow`
    
    Polishing - Hard Error When No Subscriber
Commits on Aug 26, 2016
  1. GH-107: Amqp Channels - extractPayload

    garyrussell authored and artembilan committed Aug 26, 2016
    Fixes #107 (#107)
    * Address PR comments
Commits on Aug 17, 2016
  1. GH-74: Allow `generics` for Router Recipients

    artembilan authored and garyrussell committed Jul 22, 2016
    Fixes: GH-74 (#74)
    
    * Introduce a bunch of `GenericSelector<P>` method into `RecipientListRouterSpec` to let to have type safe target code.
    * Deprecate `MessageSelector` variants since they can be simply covered with the Lambda casting `.recipient("foo", (MessageSelector) m ->`
    * Also add `Expression` variant `recipient(Flow)` methods to let to provide any custom `Expression`
    * Confirm with test modification that all changes have been met
    
    Upgrade to SI-4.3.1
    
    Address PR concern with removing `@deprecated` from `MessageSelector` method variants and polishing for `routeToRecipients` test configuration
    
    Polishing
    
    * Make `RouterSpec.subFlowMapping` as generic
    * Make `IntegrationFlowDefinition.route(String expression)` method as generic to let the `RouterSpec` to resolve generics for downstream definitions
    * Polishing JavaDocs and tests
    
    Fix conflicts after rebase
  2. INTEXT-228: Add New Method for Mail Adapters

    artembilan authored and garyrussell committed Aug 16, 2016
    JIRA: https://jira.spring.io/browse/INTEXT-228
    
    Starting with SI-4.3 there are some new feature for mail adapters.
    
    * Add `headerMapper` and other options for mail adapters
    * Expose more `Mail` factory methods to let to inject an external `MailReceiver` to make configuration version-independent
    
    Fix `TestMailServer` form message headers
    
    Fix IMAP test for content assertion
    
    Upgrade to Boot-1.4.1 and SK-1.0.3
Commits on Aug 15, 2016
  1. GH-77: Router's Default Output Improvements

    artembilan authored and garyrussell committed Jul 27, 2016
    Fixes GH-77 (#77)
    
    Previously the `.route()` operator made the next `.channel()` in the `IntegrationFlow` as a `defaultOutputChannel` of the `Router`.
    According to the user experience that doesn't sound reasonable to make such a decision unconditional.
    
    * Remove logic to inject the next channel as a `defaultOutputChannel` for the `Router`
    * Introduce `.defaultOutputToParentFlow()` hook for the `AbstractRouterSpec` to make that injection possible
    * Introduce `.defaultOutputChannel(MessageChannel|String)` into the `AbstractRouterSpec` to make a `defaultOutputChannel` configurable alongside with regular channel mapping
    * Introduce `.defaultSubFlowMapping()` to allow to configure sub-flow for the default case when any other mapping hasn't passed
    * A new logic for "default output" works the same way for regular router and `RecipientListRouter`
    * The "output-to-parent-flow-from-sub-flow" logic remains the same
    * Move the rest router test from the `IntegrationFlowTests` to `RouterTests`
    
    Rebase and fix conflicts
  2. Fix `IntegrationComponentSpec` processing

    artembilan committed Jul 29, 2016
    Looks like raw `FactoryBean` implementation doesn't apply infrastructure callbacks (e.g. `BeanFactoryAware`) to target, factored objects.
    
    *Fix `IntegrationFlowBeanPostProcessor` calling explicitly `this.beanFactory.initializeBean(component, beanName);` for `IntegrationComponentSpec.get()` components
    * Modify `FtpTests` to reflect the problem
Commits on Aug 12, 2016
  1. GH-75: Add `Scatter-Gather` support

    artembilan authored and garyrussell committed Jul 26, 2016
    Fixes GH-75 (#75)
    
    * Add `.scatterGather()` EIP-method
    * Add `distribution` test-case for `.scatterGather()`
    * Upgrade to SI-4.3.1 and address TODO in the `RouterTests`
    * Fix JavaDocs warning in the `Jms`
Commits on Jul 28, 2016
Commits on Jul 25, 2016
  1. GH-92: Add configure `IdempotentReceiver`

    artembilan authored and garyrussell committed Jul 22, 2016
    Fixes: GH-92 (#92)
Commits on Jul 21, 2016
  1. GH-95: Introduce JmsDefaultListenerContainerSpec

    artembilan committed Jul 21, 2016
    Fixes GH-95 (#95)
    
    For better fluent API in the `configureListenerContainer()` callback introduce `JmsDefaultListenerContainerSpec` for the `DefaultMessageListenerContainer`
Commits on Jul 11, 2016
Commits on Jul 8, 2016
Commits on Jul 6, 2016
Commits on Jul 5, 2016
  1. GH-68: Allow any type mapping for routers

    artembilan committed Jun 16, 2016
    Fixes GH-68 (#68)
    
    The Spring Integration Core allows to map channels in the router only via `String` key.
    With Java configuration it isn't so convenient when we would like to map and resolve to any type.
    
    That's also lets Java DSL to resolve generics at typing time, when we provide a routing `Function`,
    so `channelMapping` and `subFlowMapping` coerce to the result type if any.
  2. GH-78: Add dynamic flow registration support

    artembilan committed Jun 30, 2016
    Fixes GH-78 (#78)
    
    * Introduce `IntegrationFlowContext` for dynamic (manual) `IntegrationFlow` control. See it's JavaDocs for more information
    * Register `IntegrationFlowContext` as a bean from the `DslIntegrationConfigurationInitializer`
    * Make `StandardIntegrationFlow` as `SmartLifecycle` to let `start/stop` control of the entire flow from one place
    * Add into `IntegrationFlowBeanPostProcessor` the logic to register dependant beans to let them be destroyed together with the parent `IntegrationFlow`
    * Also optimize the beans retrieval by type function to rely just on the provided bean type.
    Look like something has been changed recently in SF around `TypeDescriptor.forObject`
    * Prove that search logic works well with the Security proxying for `MessageChannel`s in the `HttpTests`
    * Add simple POJO method invocation test into `TransformerTests`
    * Modify `ManualFlowTests` to confirm that `IntegrationFlowContext` works well.
    * Upgrade to Gradle-2.14
    * Make some other upgrades
    
    Address PR Comments
    
    * Change the `StandardIntegrationFlow` lifecycle logic to the " start last-to-first, stop first-to-last "
    * Fix JavaDocs
    * Also change `IntegrationFlowContext#messagingTemplateFor()` to allow deal with any `IntegrationFlow` not only manually registered
    
    * Fix extra space
    
    * Upgrade to Spring Kafka 1.0.1
  3. GH-93: CorrSpecs: Properly instantiate strategies

    artembilan committed Jul 5, 2016
    Fixes: GH-93 (#93)
    
    Since Spring Integration  4.2.5 (https://jira.spring.io/browse/INT-3916), we have to call `afterPropertiesSet()`
    for the `CorrelationStrategyFactoryBean` and `ReleaseStrategyFactoryBean` if we use them directly
    
    **Cherry-pick to 1.1.x**
Commits on Jun 15, 2016
  1. GH-86: Add `Codec` transformers factories

    artembilan committed Jun 15, 2016
    Fixes GH-86 (#86)
    
    * Add `Transformers` `encoding()` and `decoding()` factories for the `EncodingPayloadTransformer` and `DecodingTransformer` respectively
    * Refactor `IntegrationFlowTests`  a bit to extract `enrich()` tests into a new `TransformerTests`
    * Add `encoding()/decoding()` tests
  2. GH-83: Add `AsyncAmqpOutboundGateway` support

    artembilan committed Jun 15, 2016
    Fixes GH-83 (#83)
    
    * Add `Amqp.asyncOutboundGateway()`
    * Add `AmqpAsyncOutboundGatewaySpec`
    * Extract `AmqpBaseOutboundEndpointSpec` for common outbound adapters options
    * Add `Expression` and `Function` overloaded methods for `routingKey`, `exchangeName` and `confirmCorrelation`
    * Add `AmqpTests.testAmqpAsyncOutboundGatewayFlow()`
Commits on Jun 13, 2016
Commits on Jun 7, 2016