Collects metrics for the Sonar instance at: http://sonar.spring.io

Build: #3558 was successful Scheduled with changes by Alexander Pinske <[email protected]> and Artem Bilan

Build result summary

Details

Completed
Duration
21 minutes
Labels
None
Revision
07a6fb3a9a2215058f39737e7ffffdfdbef69d2f 07a6fb3a9a2215058f39737e7ffffdfdbef69d2f
First to pass since
#3557 (Scheduled – )

Sonar analysis results

ProjectQuality gate status
org.springframework.integration:spring-integration:master

 Ignoring Quality gate(s)

Code commits

Author Commit Message Commit date
Alexander Pinske <alex@pinske.eu> Alexander Pinske <[email protected]> 07a6fb3a9a2215058f39737e7ffffdfdbef69d2f 07a6fb3a9a2215058f39737e7ffffdfdbef69d2f Fix IMAP race condition around idle()
`IMAPFolder.idle()` by default keeps idle-ing after each response.
We don't need that, because we want to fetch the new mails immediately (over the same connection).
To make `idle()` not keep on going, we called
`folder.isOpen()` which in most cases makes `idle()` stop by calling `noop()`
internally (to keep the connection alive) which leads to the current
`idle()`-call being canceled.

The problem this commits addresses is that the call to `noop()` only
happens if there were no calls in the last second.
There is a check for that in `com.sun.mail.imap.IMAPFolder.keepConnectionAlive`.
So if a new message appears less then a second after idle started, we will miss it.

This new way interrupts `idle()` more often than before, e.g. when there
is an expunge-message (i.e. a message was deleted), which we don't care about.
But the subsequent `receive()` in IdleTask will simply get no
messages and then turn around and start idle-ing again.

**Cherry-pick to `5.3.x` & `master`**
Artem Bilan Artem Bilan 3f0c57894b085398bcbc02278a764b8d2eb4158d 3f0c57894b085398bcbc02278a764b8d2eb4158d GH-3502: More refactoring to avoid reflection (#3532)
* GH-3502: More refactoring to avoid reflection

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

* Move `ChannelInitializer` bean registration into an `AbstractIntegrationNamespaceHandler` -
it was never used for annotations and Java DSL...
* Rework `IntegrationFlows.fromSupplier()` to call a provided `Supplier` directly -
not via reflection in the `MethodInvokingMessageSource`
* Resolve new Sonar smells
* Rework `EndpointSpec` to accept an expected factory bean instance via ctor arg
instead of reflection
* Rework `Jackson2JsonObjectMapper` to use well-known module instances directly -
not via reflection from their class names

* * Revert `DefaultMethodInvokingMethodInterceptor.methodHandleCache` property definition wrap

Jira issues

IssueDescriptionStatus
Unknown Issue TypeGH-3502Could not obtain issue details from Jira