Commit Graph

9674 Commits

Author SHA1 Message Date
Gary Russell
bcff9d4089 Fix unused import 2019-05-09 09:36:23 -04:00
Artem Bilan
f04d6d910e Fix MessagingGatewaySupport implementors
The `AmqpInboundGateway` and `JmsInboundGateway` don't delegate to `super`
in their `doStart()/doStop()` implementations causing the problem with
an internal `replyMessageCorrelator` missed the proper lifecycle
management

**Cherry-pick to 5.1.x & 5.0.x**
2019-05-08 13:58:56 -04:00
Artem Bilan
bad9677e61 Add AnnotationMetadataAdapter
Since SF has deprecated `StandardAnnotationMetadata` ctors in favor
of factory method, we can't extend it any more to adapt annotation
attributed by the map generated from the XML attributes

* Introduce an `AnnotationMetadataAdapter` to request a
`getAnnotationAttributes()` implementation which is only a method used
in the target `registerBeanDefinitions()` implementations
* Use a new `AnnotationMetadataAdapter` whenever the `StandardAnnotationMetadata`
has been used before
2019-05-08 13:57:02 -04:00
Gary Russell
2a16fc54f2 AMQP: Exclude spring transitive dependencies 2019-05-07 10:44:37 -04:00
Gary Russell
eb945324db Fix deprecation (PayloadArgumentResolver) 2019-05-07 09:52:47 -04:00
Gary Russell
86c7e36667 Sonar issues - complexity
* Fix checkstyle issue.
2019-05-03 20:05:16 -04:00
Artem Bilan
90d2b30066 Remove RSocketInboundGateway since it isn't ready 2019-05-03 15:15:02 -04:00
Artem Bilan
e2b661845e RSocketOutbound refinements; resolve deprecations
* Use properly `cache()` for the `Mono` in the `ClientRSocketConnector`
* Don't require a `publisherElementTypeExpression` in the
`RSocketOutboundGateway`: the target element type is determined
automatically in the `DefaultRequestSpec.toResponseSpec()`
* SF has deprecated `MediaType.APPLICATION_JSON_UTF8`: fix all its usage
in favor of recommendations to use the `MediaType.APPLICATION_JSON` instead
* Also fix plain `application/json;charset=UTF-8` literals to use
`MediaType.APPLICATION_JSON` instead
2019-05-03 13:00:12 -04:00
Gary Russell
6d7bc1fc39 Sonar: repeated literals
* Polishing - PR Comments

* GatewayParser: Restore suppress warnings; remove size from `toArray()`.

* Merge conflict resolution
2019-05-03 12:39:02 -04:00
Artem Bilan
444cd1e8df Move SF dependencies to the latest BUILD-SNAPSHOT (#2921)
* Move SF dependencies to the latest BUILD-SNAPSHOT

To avoid class loader issues it is better to align Spring Data
dependencies with SF version we use explicitly.
This way we don't have a `ClassLoader` issue when a newly introduced
`TransactionManager` might not be visible from the previous versions

* Fix code style warnings in the `TransactionSynchronizationFactoryBean`
* Use `JavaUtils` in the `TransactionSynchronizationFactoryBean` to
decrease code complexity

* * Fix CQ Gemfire tests for upgrades compatibility
2019-05-03 10:33:06 -04:00
Gary Russell
0d6faa2e34 Sonar - protected fields 2019-05-01 17:28:42 -04:00
Gary Russell
37e49a23f4 More TCP test polishing
- remove printStackTrace()
- add queue depth to task executor
2019-05-01 14:44:27 -04:00
Gary Russell
ebbcb9df48 Sonar fixes
* exposing internal objects
* boolean complexity
* names, methods with _
* missing `default` in switch
* lost stack trace
* unnecessary null check before instanceof
* unused parameter

* Fix method name
2019-05-01 14:13:43 -04:00
Artem Bilan
9780a6c893 Use MergedAnnotations in MethodAnnPublisher (#2914)
* For better performance and consistency use a `MergedAnnotations` in
the `MethodAnnotationPublisherMetadataSource` instead of
`AnnotatedElementUtils`
* Remove deprecated API from the `PublisherMetadataSource` hierarchy
2019-05-01 14:11:19 -04:00
Gary Russell
532941c546 Increase TCP test thread pool size 2019-05-01 10:00:36 -04:00
Gary Russell
19b9944dd8 Sonar fixes
* use equals
* inner assignment
* local before return
* unnecessary locals
* catch and throw
* uninstantiable with no statics
* implement `Serializable` in `Comparator` to enable `TreeMap` serialization
* exceptions as flow control
2019-04-30 18:47:43 -04:00
Gary Russell
130e1bba31 Synchronize RemoteFileUtils.makeDirectories()
https://stackoverflow.com/questions/55918648

Avoid the race with concurrent threads.

**cherry-pick to 5.x.x, 4.3.x**
2019-04-30 14:09:45 -04:00
Gary Russell
0bb901b286 Sonar fixes
- printStackTrace in test mail server
- Illegal throws
- Large anon. classes

* - indexOf char
- stored external object

* - ignored exceptional return values

* - checkstyle
2019-04-30 13:57:12 -04:00
Artem Bilan
4199ff57cd Make RSocketOutboundGateway for server side
* Introduce a `ClientRSocketConnector` to represent a common logic for
client side connection and management an obtained `RSocket`
* Rework the `RSocketOutboundGateway` to perform similar RSocket request
logic on the server side as well.
* Refactor `RSocketOutboundGatewayIntegrationTests` to demonstrate that
RSocket requests work the same way from the server side as well.
For this reason a `CommonConfig` has been extracted with the same
`RSocketOutboundGateway` configuration reuse on both server and client
sides.
2019-04-30 12:06:43 -04:00
Chengchen JI
b069780381 GH-2908: Publisher: synthesize anns for @AliasFor
Fixes https://github.com/spring-projects/spring-integration/issues/2908

* make sure the attribute  is taken into account in @Header annotation

* remove useless spaces according to checkstyle rules

* make sure the expression attribute is taken into account as well in @Payload annotation
2019-04-29 18:25:00 -04:00
Gary Russell
36c33bb5ab Sonar fixes
- a few complexities
- final method calls from ctor
- raw exception throwing
- useless overrides
- loss of stack trace
2019-04-29 18:20:40 -04:00
Gary Russell
7569d0ad79 Sonar complexity issues 2019-04-29 15:12:27 -04:00
Gary Russell
8de53ccee9 Polishing - PR comment 2019-04-29 14:15:14 -04:00
Artem Bilan
e977234844 Fix new Sonar smells 2019-04-26 09:22:28 -04:00
Gary Russell
ff958ae488 Convert Lambdas to Method References
More cases in the amqp header mapper.
2019-04-25 18:56:07 -04:00
Gary Russell
ddff788f30 Fix Sonar complexity issues
Address a few more issues.
2019-04-25 17:29:38 -04:00
Artem Bilan
e26c61d7f4 Add missed options into WebFluxMessageHandlerSpec (#2904)
The recently introduced `setPublisherElementType()` and
`setPublisherElementTypeExpression()` in the
`WebFluxRequestExecutingMessageHandler` are missed in the
`WebFluxMessageHandlerSpec` as delegation options

* Add `@Nullable` for `WebClient` ctor arg in the
`WebFluxRequestExecutingMessageHandler`
2019-04-25 15:58:06 -04:00
Gary Russell
c570bee197 Fix Sonar complexity issues
Address a few complexity issues.
2019-04-25 15:21:27 -04:00
Artem Bilan
9072e925e9 Add @Nullable WebClient in WebFluxRequestExecMH 2019-04-25 14:49:42 -04:00
Artem Bilan
2ebbdde06d GH-2901: Add missed delegates into JmsInGateway (#2903)
Fixes https://github.com/spring-projects/spring-integration/issues/2901

**Cherry-pick to 5.1.x**
2019-04-25 14:10:16 -04:00
Artem Bilan
89e11f2c46 Add initial support for RSockets (#2902)
* Add initial support for RSockets

* Add `spring-integration-rsocket` module and respective dependencies
* Implement `RSocketOutboundGateway` based on the Spring Messaging
`RSocketRequester`.
This component supports dynamic RSocket properties via expressions
against request message.
to handle `Publisher` for requests, it must be present in the request
message `payload` instead of `FluxMessageChannel` upstream, since the
last one just flattens events to be handled in the `MessageHandler` one
by one.
The result `Mono` is subscribed downstream in the `FluxMessageChannel`
or directly by the `AbstractReplyProducingMessageHandler`.
If result is a `Flux` it is just wrapped into the `Mono` to be processed
downstream by end-user code.
The point is that these request/replies are volatile and live in the
particular context meanwhile a `FluxMessageChannel` is long living
publisher in the application context boundaries.
* The `RSocketOutboundGatewayIntegrationTests` is an adapted copy of
`RSocketClientToServerIntegrationTests` from Spring Messaging
* Add `doOnError()` into the `Flux` created in the
`AbstractMessageProducingHandler` for `Publisher` replies

* * Use singular for the `RSocket` term
* Use no-op `Consumer` for the `strategiesConfigurer` and
`factoryConfigurer` in the `RSocketOutboundGateway` and also
`Assert.notNull()` in the appropriate setters to avoid null check during
`RSocketRequester.builder()` initialization
* Use `TcpServer.create().port(0)` in the
`RSocketOutboundGatewayIntegrationTests` to allow to select free OS port
and bind into it.
The selected port is used later for client configuration in the
`RSocketOutboundGateway` bean definition

* * Change `RSocketOutboundGatewayIntegrationTests.PORT` to lower case
2019-04-25 14:07:56 -04:00
Artem Bilan
f8f69c9129 Support non-Object types for WebFlux requests
* Add the support for a `Publisher`, `Resource` and `MultiValueMap`
into the `WebFluxRequestExecutingMessageHandler`
* Along side with the `WebFluxRequestExecutingMessageHandler.setPublisherElementType`
and `WebFluxRequestExecutingMessageHandler.setPublisherElementTypeExpression`,
add XSD support for the `publisher-element-type(-expression)`, which
is used for the element type when request body is a `Publisher`
* Polishing for `AbstractHttpRequestExecutingMessageHandler`

* Fix Sonar smells for affected classes
* Remove used imports

Doc polishing
2019-04-22 09:35:40 -04:00
Artem Bilan
24304ef4d4 Fix Sonar smell around new GroovyClassLoader() 2019-04-21 10:15:49 -04:00
Artem Bilan
745524f17b Remove unused imports in the AbstractScriptParser 2019-04-20 12:23:43 -04:00
Artem Bilan
455cc9b4be Don't propagate null CL to GroovyScriptFactory
https://build.spring.io/browse/INT-MASTER-1505/

* Fix Sonar smells in the `AbstractScriptParser`
2019-04-20 12:14:00 -04:00
Artem Bilan
be86db5509 Fix new Sonar smells for scripts
Fix `ImapMailReceiverTests.testConnectionException()` for several
`ImapIdleExceptionEvent` instances
2019-04-20 11:54:09 -04:00
Artem Bilan
7dff1d5416 Add support for Kotlin JSR223 scripts (#2898)
* Add support for Kotlin JSR223 scripts

* Add required Kotlin dependencies into the `spring-integration-scripting`
module
* Introduce `KotlinScriptExecutor` to interact with the
`KotlinJsr223JvmLocalScriptEngineFactory` directly since there is no
`META-INF/services/javax.script.ScriptEngineFactory` file in the Kotlin
* Also set an `idea.use.native.fs.for.win` system property to `false` in
this class to disable check for native support on Windows.
(Might be removed in future Kotlin versions)
* Move `ScriptParser.getLanguageFromFileExtension()` logic into the
`ScriptExecutorFactory.deriveLanguageFromFileExtension()` since the same
one must be applied in the `DslScriptExecutingMessageProcessor`, too.
* Modify tests to reflect Kotlin support
* Fix some test scripts to their official extensions

* * Add JavaDocs
* Polishing according Sonar objections
2019-04-19 12:29:08 -04:00
Artem Bilan
9cc0cbe3bd Polishing for ImapMailReceiverTests
https://build.spring.io/browse/INT-MASTERSPRING40-681/

* Create an `ImapServer` only in the `@Before` method.
Looks like the `final` property is initialized only once for the whole
test class
* Change `LongRunningIntegrationTest` to the `@ClassRule`
* Fix `testMessageHistory()` and re-enable it
* Remove redundant `this.imapIdleServer.resetServer()` since we now have
a fresh `ImapServer` instance for every test method.
2019-04-19 11:02:37 -04:00
Spring Buildmaster
cca50fcadb [artifactory-release] Next development version 2019-04-15 18:38:04 +00:00
Spring Buildmaster
7af5d638f7 [artifactory-release] Release version 5.2.0.M1 2019-04-15 18:37:59 +00:00
Artem Bilan
cdf0c5c15b Upgrade to Gradle 5.3.1, Kotlin-1.3.30
* Fix new Sonar smell in the `CacheRequestHandlerAdvice`
2019-04-15 14:15:46 -04:00
Artem Bilan
735e82e721 Add support for CacheRequestHandlerAdvice
* Fix `AbstractMessageProcessingTransformer` to react for the
`AbstractIntegrationMessageBuilder` invocation result and don't wrap it
into the `Message`
* Demonstrate functionality in the `CacheRequestHandlerAdviceTests`

* Polishing and Docs

* Fix JavaDocs warnings

Doc polishing.
2019-04-15 13:50:26 -04:00
Artem Bilan
36581bfed8 Upgrade to Spring Security 5.2 M2 2019-04-15 13:31:46 -04:00
Artem Bilan
38fc85a525 Optimize DefaultSftpSessionFactory (#2896)
* Optimize DefaultSftpSessionFactory

Related to https://build.spring.io/browse/INT-MASTERSPRING40-677/

Doesn't look like `DefaultSftpSessionFactory.getSession()` needs
locking around `sharedJschSession`

* change the logic in the `getSession()` to store a `sharedJschSession`
into the local variable and if it is `null` or not connected, create a
new `JSchSessionWrapper`, connect it and store to the `sharedJschSession`
back into the `sharedJschSession` property if `this.isSharedSession`.
This way we always deal with `sharedJschSession` anyway if it is valid
or create a new fresh one if that is invalid.
Without locking we always get an actual state of the `sharedJschSession`
and don't fall into the race condition when `sharedJschSession` is invalid,
but we can't connect to the SFTP channel from the `sftpSession.connect()`

* * Wrap `sharedJschSession` initialization to the lock

* * Store `sharedJschSession` back when it is really fresh and while the lock
2019-04-15 11:41:16 -04:00
Artem Bilan
0ad731df1d Use random port in RmiInboundGatewayParserTests
https://build.spring.io/browse/INT-MASTER-1495/
2019-04-15 09:45:00 -04:00
Artem Bilan
17bd68c062 Downgrade H2 to 1.4.197
See https://github.com/spring-projects/spring-boot/issues/16512
2019-04-15 09:12:33 -04:00
Artem Bilan
17b1c76680 Increase destroy wait timeout for JdbcLockRLITests
https://build.spring.io/browse/INT-MASTER-1493/
2019-04-12 14:22:24 -04:00
Artem Bilan
bf21128e42 GH-2792: HEnrichSpec: Add hooks for common headers (#2895)
* GH-2792: HEnrichSpec: Add hooks for common headers

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

* * Add more convenient hooks for common headers

* * Fixed copy/paste artefact
2019-04-12 12:57:57 -04:00
Artem Bilan
e3e11a6999 Clean up more schema before JDBC tests
https://build.spring.io/browse/INT-FATS5IC-843/

**Cherry-pick to 5.1.x & .5.0.x**
2019-04-12 11:53:19 -04:00
Artem Bilan
06d3213e08 Upgrade dependencies 2019-04-11 11:32:38 -04:00