More DSL; upgrade to latest GAs, prepare release
This commit is contained in:
@@ -31,7 +31,7 @@ ext {
|
||||
junitVersion = '5.5.2'
|
||||
log4jVersion = '2.12.1'
|
||||
reactorVersion = 'Dysprosium-RELEASE'
|
||||
springIntegrationVersion = '5.2.0.BUILD-SNAPSHOT'
|
||||
springIntegrationVersion = '5.2.0.RELEASE'
|
||||
|
||||
idPrefix = 'kotlin-dsl'
|
||||
|
||||
|
||||
@@ -16,9 +16,16 @@
|
||||
|
||||
package org.springframework.integration.dsl.kotlin
|
||||
|
||||
import org.springframework.integration.dsl.FilterEndpointSpec
|
||||
import org.springframework.integration.dsl.GenericEndpointSpec
|
||||
import org.springframework.integration.dsl.IntegrationFlowDefinition
|
||||
import org.springframework.integration.dsl.RouterSpec
|
||||
import org.springframework.integration.dsl.SplitterEndpointSpec
|
||||
import org.springframework.integration.handler.ServiceActivatingHandler
|
||||
import org.springframework.integration.router.MethodInvokingRouter
|
||||
import org.springframework.integration.splitter.MethodInvokingSplitter
|
||||
import org.springframework.integration.transformer.MessageTransformingHandler
|
||||
import org.springframework.messaging.MessageHeaders
|
||||
|
||||
/**
|
||||
* Extension for [IntegrationFlowDefinition.convert] providing a `convert<MyType>()` variant.
|
||||
@@ -35,8 +42,41 @@ inline fun <reified T> IntegrationFlowDefinition<*>.convert(
|
||||
*
|
||||
* @author Artem Bilan
|
||||
*/
|
||||
inline fun <reified P, T> IntegrationFlowDefinition<*>.reifiedTransform(
|
||||
inline fun <reified P, T> IntegrationFlowDefinition<*>.transformReified(
|
||||
crossinline function: (P) -> T,
|
||||
crossinline configurer: (GenericEndpointSpec<MessageTransformingHandler>) -> Unit = {}):
|
||||
IntegrationFlowDefinition<*> =
|
||||
transform(P::class.java, { function(it) }) { configurer(it) }
|
||||
|
||||
/**
|
||||
* Extension for [IntegrationFlowDefinition.split] providing a `split<MyTypeIn>()` variant.
|
||||
*
|
||||
* @author Artem Bilan
|
||||
*/
|
||||
inline fun <reified P> IntegrationFlowDefinition<*>.split(
|
||||
crossinline function: (P) -> Any,
|
||||
crossinline configurer: (SplitterEndpointSpec<MethodInvokingSplitter>) -> Unit = {}):
|
||||
IntegrationFlowDefinition<*> =
|
||||
split(P::class.java, { function(it) }) { configurer(it) }
|
||||
|
||||
/**
|
||||
* Extension for [IntegrationFlowDefinition.filter] providing a `filter<MyTypeIn>()` variant.
|
||||
*
|
||||
* @author Artem Bilan
|
||||
*/
|
||||
inline fun <reified P> IntegrationFlowDefinition<*>.filterReified(
|
||||
crossinline function: (P) -> Boolean,
|
||||
crossinline configurer: (FilterEndpointSpec) -> Unit = {}):
|
||||
IntegrationFlowDefinition<*> =
|
||||
filter(P::class.java, { function(it) }) { configurer(it) }
|
||||
|
||||
/**
|
||||
* Extension for [IntegrationFlowDefinition.filter] providing a `filter<MyTypeIn>()` variant.
|
||||
*
|
||||
* @author Artem Bilan
|
||||
*/
|
||||
inline fun <reified P, T> IntegrationFlowDefinition<*>.routeReified(
|
||||
crossinline function: (P) -> T,
|
||||
crossinline configurer: (RouterSpec<T, MethodInvokingRouter>) -> Unit = {}):
|
||||
IntegrationFlowDefinition<*> =
|
||||
route(P::class.java, { function(it) }) { configurer(it) }
|
||||
|
||||
@@ -33,8 +33,11 @@ import org.springframework.integration.core.MessagingTemplate
|
||||
import org.springframework.integration.dsl.Pollers
|
||||
import org.springframework.integration.dsl.context.IntegrationFlowContext
|
||||
import org.springframework.integration.dsl.kotlin.convert
|
||||
import org.springframework.integration.dsl.kotlin.reifiedTransform
|
||||
import org.springframework.integration.dsl.kotlin.filterReified
|
||||
import org.springframework.integration.dsl.kotlin.integrationFlow
|
||||
import org.springframework.integration.dsl.kotlin.routeReified
|
||||
import org.springframework.integration.dsl.kotlin.split
|
||||
import org.springframework.integration.dsl.kotlin.transformReified
|
||||
import org.springframework.integration.endpoint.MessageProcessorMessageSource
|
||||
import org.springframework.integration.handler.LoggingHandler
|
||||
import org.springframework.integration.scheduling.PollerMetadata
|
||||
@@ -161,7 +164,7 @@ class KotlinDslTests {
|
||||
|
||||
val integrationFlow =
|
||||
integrationFlow(publisher) {
|
||||
it.reifiedTransform<Message<Int>, Int>({ it.payload * 2 }) { it.id("foo") }
|
||||
it.transformReified<Message<Int>, Int>({ it.payload * 2 }) { it.id("foo") }
|
||||
.channel(fluxChannel)
|
||||
}
|
||||
|
||||
@@ -191,12 +194,14 @@ class KotlinDslTests {
|
||||
fun functionFlow() =
|
||||
integrationFlow<Function<String, String>>({ it.beanName("functionGateway") }) {
|
||||
it.transform<String, String> { it.toUpperCase() }
|
||||
.split<String>({ p -> p })
|
||||
}
|
||||
|
||||
@Bean
|
||||
fun functionFlow2() =
|
||||
integrationFlow<Function<*, *>> {
|
||||
it.transform<String, String> { it.toLowerCase() }
|
||||
.routeReified<Message<*>, Any?> ({ m -> m.headers.replyChannel }) { it.id("router") }
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -228,7 +233,9 @@ class KotlinDslTests {
|
||||
fun flowFromSupplier2() =
|
||||
integrationFlow({ "testSupplier2" },
|
||||
{ it.poller { it.trigger(OnlyOnceTrigger()) } }) {
|
||||
it.channel { c -> c.queue("testSupplierResult2") }
|
||||
it
|
||||
.filterReified<Message<Any>>({ m -> m.payload is String })
|
||||
.channel { c -> c.queue("testSupplierResult2") }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user