Commit Graph

9527 Commits

Author SHA1 Message Date
Gary Russell
53272fd1f7 Remove unused import 2019-02-12 15:29:15 -05:00
Artem Bilan
e8aa8618df GH-2735: Add errorChannel to ScatterGatherHandler
Fixes spring-projects/spring-integration#2735

* Fix typos in Scatter-Gather JavaDocs
* Add Scatter-Gather error handling documentation

Doc polishing
2019-02-11 15:08:01 -05:00
Artem Bilan
5c46efe067 Fix Sonar smells for websocket module
* Introduce `JavaUtils` for chaining properties setting
* Fix method complexity in the `ServerWebSocketContainer` using newly
introduced `JavaUtils`
* Make `JavaUtils` as `final`
2019-02-11 14:17:49 -05:00
Artem Bilan
5eba369be0 Fix new Sonar smells in MessagingGatewaySupport 2019-02-09 19:46:54 -05:00
Artem Bilan
4c88ddd429 GH-2731: Fix nested gateway error propagation
Fixes https://github.com/spring-projects/spring-integration/issues/2731

When we have a nested gateway configuration, we are losing the context
of the current request message in case of errors and the downstream
`MessagingException` is just re-thrown as is, without the proper
`failedMessage` and its processed `errorChannel` header.

* Check for exception type and for the `errorChannel` header in the
current `requestMessage` before re-throwing as a new
`MessageHandlingException` in the `MessagingGatewaySupport.sendAndReceive()`
* Extract `.gateway()` tests into the separate `GatewayDslTests` class
2019-02-08 14:47:23 -05:00
Gary Russell
37563a140c Polish Contribution Guidelines 2019-02-08 14:46:35 -05:00
Artem Bilan
04875b72b4 GH-2727: Ensure JDBC queries are logged (#2730)
* GH-2727: Ensure JDBC queries are logged

Fixes: https://github.com/spring-projects/spring-integration/issues/2727

The `JdbcTemplate` logs a message for the sql to execute when it is
supplied by the `QueryProvider`.

* Refactor `JdbcPollingChannelAdapter` to use new introduced internal
`PreparedStatementCreatorWithMaxRows` with the `QueryProvider`
* Refactor `JdbcMessageHandler` to instantiate a `generatedKeysStatementCreator`
based on the `PreparedStatementCreatorFactory`
* Verify in the `JdbcOutboundGatewayParserTests` that both fixes logs
sql queries properly

* * Implement all the delegate interfaces for the `PreparedStatementCreatorWithMaxRows`
2019-02-08 14:27:03 -05:00
Artem Bilan
71fd60fda6 Add default expressions for ExpEvalReqHAdvice (#2738)
* Add default expressions for ExpEvalReqHAdvice

https://stackoverflow.com/questions/54546728/how-to-handle-ftpoutboundadapter-connection-exception-in-spring-integration-flow

When channels are configured for the `ExpressionEvaluatingRequestHandlerAdvice`,
but no expressions, the logic is not performed.
In other words: we can evaluate expressions, when no channels,
but we  don't send messages to channels when no expressions.

* Provide default expressions to be evaluated to `payload`, when only
channels are provided.

* * Remove asserts for expression setters
2019-02-06 16:21:03 -05:00
Artem Bilan
e2d177e900 Fix "One sentence per line" in docs 2019-02-06 11:21:33 -05:00
Gary Russell
d56e29b28d GH-2733: Polishing
- fix `equals()` implementation issues.
2019-02-06 09:00:22 -05:00
Gary Russell
f6c8a652eb GH-2733: Fix Meter Memory Leak
Fixes https://github.com/spring-projects/spring-integration/issues/2733

`AbstractMessageChannel` exception meters caused a memory leak because they
are stored in a `Set` for destruction purposes but did not implement
`hashCode` and `equals`.

Add `hashCode()` and `equals()` to all meter facades, delegating to the
underlying Micrometer objects.
2019-02-05 09:48:47 -05:00
Gary Russell
6391e4bebf Tcp Doc Polishing
Also remove some `this.` method calls.
2019-02-04 14:51:33 -05:00
Gary Russell
f82c7164f7 GH-2728: AMQP Manual acks and conversion errors
Resolves https://github.com/spring-projects/spring-integration/issues/2728

Provide access to the channel and delivery tag in the `ErrorMessage` when
using `AcknowledgeMode.MANUAL`.
2019-02-01 12:57:10 -05:00
Gary Russell
65b889925a Revert INT-4386: Support Instant in schedule expr.
This reverts commit f901c4e167.
2019-01-31 16:23:59 -05:00
Artem Bilan
f901c4e167 INT-4386: Support Instant in schedule expressions
JIRA: https://jira.spring.io/browse/INT-4386

* Expose `java.time` in the `IntegrationEvaluationContextFactoryBean`
ot simply a `T()` SpEL operator
* Add `Instant` result evaluation to the `delayExpression`
2019-01-31 16:13:27 -05:00
Artem Bilan
020ea76d59 Make IOS.setTaskScheduler() as public (#2725)
* Make IOS.setTaskScheduler() as public

* Make `IntegrationObjectSupport.setTaskScheduler()` as `public` and
remove all the overrides for visibility
* Fix Sonar smells for all the affected classes

* * Fix `throws Exception` for affected classes to avoid compilation errors

* * Fix "merely rethrow" smell
* Revert `throws Exception` for `AbstractEndpoint.destroy()`

* * Catch a couple exceptions from `destroy()`
2019-01-30 13:59:37 -05:00
Jay Bryant
7980afef9b INT-4339: Remove Docbook & rely on Asciidoctor
JIRA: https://jira.spring.io/browse/INT-4339
2019-01-29 21:47:18 -05:00
Artem Bilan
a283ad60fb GH-2723: Handle unsupported XML properties
Fixes spring-projects/spring-integration#2723

Not all XML components support all the configuration properties.
For example Saxon HE doesn't support `XMLConstants.ACCESS_EXTERNAL_DTD`
and end up with an exception like:
`IllegalArgumentException: Unknown configuration property http://javax.xml.XMLConstants/property/accessExternalDTD`

* Change `XsltPayloadTransformer` to re-use `TransformerFactoryUtils`
from spring-ws as a centralized source of `TransformerFactory`
configuration.
* Wrap `XMLConstants.ACCESS_EXTERNAL_STYLESHEET` to the `try..catch`
and log INFO about not supported property

**Cherry-pick to 5.0.x & 4.3.x**
2019-01-29 12:27:05 -05:00
Artem Bilan
4c6ffec6fe * Fix some typos in Docs, old DSL callbacks
https://stackoverflow.com/questions/54413401/file-inbound-adapter-example-provided-in-sample-not-working/54413480
2019-01-29 10:42:58 -05:00
Artem Bilan
5295a76b42 Fix mail lock race condition & Sonar smells (#2721)
* Fix mail lock race condition & Sonar smells

https://build.spring.io/browse/INT-MASTERSPRING40-599/

* The `folderReadLock` might not be re-locked when `openFolder()`
throws an exception
* Fix all the Sonar smells for mail module
* Optimize all the dynamic `Assert` messages to `Supplier`
* Refactor `MailReceiverFactoryBean` to be based on the `AbstractFactoryBean`

* * Fix new reported Sonar smells

* * Log error during cancel idle state in the `ImapMailReceiver`
* Remove commented code in the `MailTransportUtils`
2019-01-28 13:07:26 -05:00
Artem Bilan
a609bd9398 Some file module Sonar fixes (#2718)
* Some file module Sonar fixes

* * Fixes after testing

* * Some further Sonar fixes for file module

* * Further Sonar fixes for file module

* * More Sonar fixes for file module

* * Fix `RemoteFileTemplate` issues

* * Fix new sonar smells after previous one

* * Review feedback
2019-01-25 14:37:57 -05:00
Artem Bilan
db239f8ba0 Fix NPE Sonar report in the NotificationPublishMH 2019-01-24 13:04:44 -05:00
Artem Bilan
9ab6779dc2 Fix new Sonar smell and some other in JMX module (#2716)
* Fix new Sonar smell and some other in JMX module

* * Fix issues after testing
2019-01-24 11:55:46 -05:00
Gary Russell
bac3565dfd GH-2714: Fix PollSkipAdvice
Fixes https://github.com/spring-projects/spring-integration/issues/2714

Return null instead of false when poll skipped.
2019-01-24 10:46:04 -05:00
Gary Russell
fff968e5ad Add Duration overloads to Pollers factory
- test adds coverage to all time-based factory methods
2019-01-23 17:39:12 -05:00
Artem Bilan
800227558b INT-2549: Ignore MBean call reply in op-invoc-c-a
JIRA: https://jira.spring.io/browse/INT-2549

* Add `expectReply` property into the `OperationInvokingMessageHandler`
to align the one-way and request-reply behavior with all other similar
components in Spring Integration
* Ignore an operation invocation result in case of `expectReply == false`
and log warning
* Provide some refactoring into the `OperationInvokingMessageHandler`
to fix Sonar complains about complexity

**Cherry-pick to 5.0.x, 4.3.x**
2019-01-23 15:30:58 -05:00
Gary Russell
f43fa9772e Update issue template 2019-01-23 11:23:50 -05:00
Artem Bilan
5b42c28f40 Refactor AbstractMailReceiver for proper locking
According Sonar we can't just leave lock unlocked in th method, so
apply refactoring for the `AbstractMailReceiver.receive()` where we don't
have uncontrolled `lock()` in the separate method
2019-01-23 11:15:40 -05:00
Artem Bilan
690a2c3c3e Implement Lifecycle for IntegrationComponentSpec
Since an `IntegrationComponentSpec` is a `FactoryBean`, all it's target
callbacks and lifecycle is controlled over a `FactoryBean`.

* Add `SmartLifecycle` for the `IntegrationComponentSpec` to delegate
lifecycle hooks to the `target` if necessary
* Refactor `IntegrationComponentSpec` to be an `AbstractFactoryBean`
which is a central place for the `FactoryBean`, `InitializingBean` and
`DisposableBean` interfaces

**Cherry-pick to 5.0.x**
2019-01-23 10:08:06 -05:00
Artem Bilan
119db815c2 * Fix new Sonar issue in the AbstractMailReceiver (#2709)
* * Fix new Sonar issue in the `AbstractMailReceiver`

* * Move `unlock()` to its own `finally`

* * Make `ImapMailReceiverTests.imapIdleServer` non-static to allow
recreate the mail server for each test method

https://build.spring.io/browse/INT-MASTERSPRING40-591/

* * Remove MongoDb download from Travis config

* * Fix Checkstyle violation
2019-01-22 12:51:29 -05:00
Artem Bilan
d37e6562d8 Fix DSL to deal with beanNames for handlers (#2707)
* Fix DSL to deal with beanNames for handlers

When consumer endpoint is created by the Framework, the target
`MessageHandler` gets a `componentName` from the `ConsumerEndpointFactoryBean`.
Therefore we can't rely on the `getComponentName()` when we create beans
from Java DSL.

* Introduce `NamedComponent.getBeanName()` contract; make it default
to the `getComponentName()`; implement this method from the
`IntegrationObjectSupport`
* Use this new `getBeanName()` from the `IntegrationFlowBeanPostProcessor`
and `StandardIntegrationFlowContext` for better existing beans checks
and possible reuse existing `MessageHandler` in different endpoints
* Optimize `FixedSubscriberChannel` and implement `getBeanName()` over there
* Implement `getBeanName()` in the `AbstractMessageSource`; use
`ExpressionEvalMap` to evaluate headers expressions
* Implement `getBeanName()` in `Trackable*Metrics` classes as delegation
to the `this.trackable`

* * Fix race condition around `discardChannelName` property in the `MessageFilter`
2019-01-22 11:04:47 -05:00
Artem Bilan
a5e437f94a INT-2543: Relax mail host when mail-props present
JIRA: https://jira.spring.io/browse/INT-2543

We may have a mail server host configured in the properties and the
target session will resolve it properly from provided `javaMailProperties`.
The same applies for `username`

* Do not require `host` and `username`, when `javaMailProperties` is
provided
* Add additional factory methods into the `Mail` factory for Java DSL
* Add Java DSL sample into the `mail.adoc`
2019-01-22 11:00:32 -05:00
Artem Bilan
0ac766040f Fix a couple new Sonar smells 2019-01-18 15:27:45 -05:00
Artem Bilan
7da77f7043 INT-1887: Optimize AbstractMailReceiver.receive()
JIRA: https://jira.spring.io/browse/INT-1887

* Optimize access to the `AbstractMailReceiver.folder` via `ReadWriteLock`
2019-01-18 15:27:09 -05:00
Gary Russell
4ea3b1c23c GH-2705: public CTORs on AMFPFileListFilter Impls
Fixes https://github.com/spring-projects/spring-integration/issues/2705
2019-01-18 11:12:38 -05:00
Gary Russell
48ae91e3d9 Docs: Fix File.renameTo() Expressions
https://stackoverflow.com/questions/30151642/moving-processed-files-to-another-directory-using-spring-integration-ftp-inbound/30152053?noredirect=1#comment95312701_30152053

- also fix some PDF overflows
2019-01-17 18:12:27 -05:00
Artem Bilan
462dc98803 GH-2695: Add proxy option to @EnablePublisher (#2701)
* GH-2695: Add proxy option to @EnablePublisher

Fixes spring-projects/spring-integration#2695

To configure a `proxyTargetClass=true` we need declare a
`PublisherAnnotationBeanPostProcessor` bean manually, but that may cause
a confuse when `@EnablePublisher` is still present.
So, target service is proxied twice

* Expose `proxyTargetClass` and `order` into the `@EnablePublisher`
and `<enable-publisher>`
* Refactor `PublisherAnnotationBeanPostProcessor` to extend an
`AbstractBeanFactoryAwareAdvisingPostProcessor` to avoid AOP boilerplate
code altogether
* Add assertion into the `PublisherAnnotationBeanPostProcessor` to be
sure that only one of its instance is present in the application context

* * Polishing error message and Docs
2019-01-17 10:44:39 -05:00
Cameron Mayfield
cd8cbaa99c GH-2699: Make expressions cache concurrent
Fixes spring-projects/spring-integration#2699

* [GH-2699] Match style

* [GH-2699] Shorten test line length

**Cherry-pick to 5.0.x**
2019-01-16 18:03:03 -05:00
Artem Bilan
eed16f02ca Fix BeanFactory propagation for MMInvokerHelper (#2694)
* Fix BeanFactory propagation for MMInvokerHelper

* Remove check for `null` in the
`MessagingMethodInvokerHelper.isProvidedMessageHandlerFactoryBean()`
* Fix `RecipientListRouter` for `BeanFactory` propagation to the
`Recipient.selector`
* Fix tests for `BeanFactory` population and propagation
* Add `errorChannel` into the `TestUtils.createTestApplicationContext()`
* Fix some Sonar smell, including new reported

* * Restore NPE check for the `BeanFactory` in the
`MessagingMethodInvokerHelper` to avoid breaking changes in the current
point release
* Some other polishing and optimizations in the
`MessagingMethodInvokerHelper`
2019-01-15 15:16:33 -05:00
Artem Bilan
63684e2012 INT-4574: JDBC: Add NOT NULL for primary keys
JIRA: https://jira.spring.io/browse/INT-4574

Some RDBMS don't allow have nullable columns for primary keys

* Add NOT NULL for all the columns involved in primary keys
2019-01-14 17:33:27 -05:00
Artem Bilan
936d63bd65 Update CONTRIBUTING for GH issues bug tracking (#2696)
* Update CONTRIBUTING for GH issues bug tracking

* * Still mention JIRA
2019-01-14 13:24:25 -05:00
Gary Russell
518c4918e2 TcpCodecs factory Sonar polishing
- also some magic numbers in the deserializers
2019-01-12 12:53:38 -05:00
Gary Russell
4dcbb92246 Upgrade spring-retry 2019-01-11 15:15:18 -05:00
Gary Russell
ae3bb154fa TcpCodecs factory improvement
- add convenience factory methods to set the max message size while creating the codec

* Polishing - PR comments; deprecate protected field; checkstyle fixes.
2019-01-11 12:12:43 -05:00
Spring Buildmaster
60be204b4d [artifactory-release] Next development version 2019-01-11 00:39:18 +00:00
Spring Buildmaster
53338846a7 [artifactory-release] Release version 5.1.2.RELEASE 2019-01-11 00:39:14 +00:00
Artem Bilan
610852c033 Prepare for release; upgrade security & micrometer 2019-01-10 19:12:53 -05:00
Artem Bilan
7511c94391 Upgrade some dependencies 2019-01-10 17:01:22 -05:00
Artem Bilan
d4a03006cf Fix ambiguity for NullChannel instances bean name
When we use explicitly `new NullChannel()` in DSL definition, we don't
provide a bean name and just end up with an explicit `nullChannel`
component name in the class.
This way it clashes with the global `errorChannel`, but since instances
are different we get a `BeanDefinitionOverrideException`

* Remove explicit `nullChannel` component name in the `NullChannel` in
favor of the generated name as it is done for any regular beans
* Some internal polishing in the `NullChannel`
* Some polishing in the `IntegrationFlowBeanPostProcessor` to deal with
`NullChannel` as with any other regular `AbstractMessageChannel`s and
generate a proper name for it within the scope of the current
`IntegrationFlow`
2019-01-10 15:21:56 -05:00
Artem Bilan
59c69ed40d Allow XML components injection
**Cherry-pick to 5.0.x & 4.3.x**

* Polishing after rebase
* Copyright to 2019

* Rebase and update according upstream deps
2019-01-10 14:43:06 -05:00