Add overloaded method to avoid extra parentheses
It turns out that we can have a simple
`transform<String, String> { it.toLowerCase() }`
with extra parentheses around lambda and also another variant like
`split<String>({ p -> p }) { it.id("splitterEndpoint") }`.
Everything works with overloaded methods with and without extra
configurer parameter
* Upgrade dependencies, including Gradle
This commit is contained in:
@@ -36,7 +36,7 @@ fun flowLambda() =
|
||||
integrationFlow {
|
||||
handle { m -> println(m.payload) }
|
||||
})
|
||||
transform<String, String>({ it.toUpperCase() })
|
||||
transform<String, String> { it.toUpperCase() }
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
@@ -27,11 +27,11 @@ repositories {
|
||||
|
||||
ext {
|
||||
assertkVersion = '0.20'
|
||||
jacksonVersion = '2.10.0'
|
||||
jacksonVersion = '2.10.1'
|
||||
junitVersion = '5.5.2'
|
||||
log4jVersion = '2.12.1'
|
||||
reactorVersion = 'Dysprosium-RC1'
|
||||
springIntegrationVersion = '5.2.1.RELEASE'
|
||||
reactorVersion = 'Dysprosium-SR1'
|
||||
springIntegrationVersion = '5.2.2.RELEASE'
|
||||
|
||||
idPrefix = 'kotlin-dsl'
|
||||
|
||||
@@ -106,7 +106,6 @@ test {
|
||||
// suppress all console output during testing unless running `gradle -i`
|
||||
logging.captureStandardOutput(LogLevel.INFO)
|
||||
jacoco {
|
||||
append = false
|
||||
destinationFile = file("$buildDir/jacoco.exec")
|
||||
}
|
||||
useJUnitPlatform()
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
version=0.0.3.BUILD-SNAPSHOT
|
||||
kotlinVersion=1.3.50
|
||||
kotlinVersion=1.3.61
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
29
spring-integration-kotlin-dsl/gradlew
vendored
29
spring-integration-kotlin-dsl/gradlew
vendored
@@ -154,19 +154,19 @@ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
0) set -- ;;
|
||||
1) set -- "$args0" ;;
|
||||
2) set -- "$args0" "$args1" ;;
|
||||
3) set -- "$args0" "$args1" "$args2" ;;
|
||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
@@ -175,14 +175,9 @@ save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=$(save "$@")
|
||||
APP_ARGS=`save "$@"`
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
|
||||
@@ -49,9 +49,9 @@ fun integrationFlow(@BuilderInference flow: KotlinIntegrationFlowDefinition.() -
|
||||
*
|
||||
* @author Artem Bilan
|
||||
*/
|
||||
inline fun <reified T> integrationFlow(crossinline gateway: (GatewayProxySpec) -> Unit = {},
|
||||
@BuilderInference flow: KotlinIntegrationFlowDefinition.() -> Unit):
|
||||
IntegrationFlow {
|
||||
inline fun <reified T> integrationFlow(
|
||||
crossinline gateway: (GatewayProxySpec) -> Unit = {},
|
||||
@BuilderInference flow: KotlinIntegrationFlowDefinition.() -> Unit): IntegrationFlow {
|
||||
|
||||
val flowBuilder = IntegrationFlows.from(T::class.java) { gateway(it) }
|
||||
flow(KotlinIntegrationFlowDefinition(flowBuilder))
|
||||
|
||||
@@ -115,42 +115,71 @@ class KotlinIntegrationFlowDefinition(private val adaptee: IntegrationFlowDefini
|
||||
KotlinIntegrationFlowDefinition =
|
||||
convert(T::class.java) { configurer(it) }
|
||||
|
||||
/**
|
||||
* Inline function for [IntegrationFlowDefinition.transform] providing a `transform<MyTypeIn, MyTypeOut>()` variant
|
||||
* with reified generic type.
|
||||
*/
|
||||
inline fun <reified P, T> transform(crossinline function: (P) -> T): KotlinIntegrationFlowDefinition =
|
||||
transform(P::class.java) { function(it) }
|
||||
|
||||
/**
|
||||
* Inline function for [IntegrationFlowDefinition.transform] providing a `transform<MyTypeIn, MyTypeOut>()` variant
|
||||
* with reified generic type.
|
||||
*/
|
||||
inline fun <reified P, T> transform(
|
||||
crossinline function: (P) -> T,
|
||||
crossinline configurer: (GenericEndpointSpec<MessageTransformingHandler>) -> Unit = {}):
|
||||
crossinline configurer: (GenericEndpointSpec<MessageTransformingHandler>) -> Unit):
|
||||
KotlinIntegrationFlowDefinition =
|
||||
transform(P::class.java, { function(it) }) { configurer(it) }
|
||||
|
||||
/**
|
||||
* Inline function for [IntegrationFlowDefinition.split] providing a `split<MyTypeIn>()` variant
|
||||
* with reified generic type.
|
||||
*/
|
||||
inline fun <reified P> split(crossinline function: (P) -> Any): KotlinIntegrationFlowDefinition =
|
||||
split(P::class.java) { function(it) }
|
||||
|
||||
/**
|
||||
* Inline function for [IntegrationFlowDefinition.split] providing a `split<MyTypeIn>()` variant
|
||||
* with reified generic type.
|
||||
*/
|
||||
inline fun <reified P> split(
|
||||
crossinline function: (P) -> Any,
|
||||
crossinline configurer: (SplitterEndpointSpec<MethodInvokingSplitter>) -> Unit = {}):
|
||||
crossinline configurer: (SplitterEndpointSpec<MethodInvokingSplitter>) -> Unit):
|
||||
KotlinIntegrationFlowDefinition =
|
||||
split(P::class.java, { function(it) }) { configurer(it) }
|
||||
|
||||
/**
|
||||
* Inline function for [IntegrationFlowDefinition.filter] providing a `filter<MyTypeIn>()` variant
|
||||
* with reified generic type.
|
||||
*/
|
||||
inline fun <reified P> filter(crossinline function: (P) -> Boolean): KotlinIntegrationFlowDefinition =
|
||||
filter(P::class.java) { function(it) }
|
||||
|
||||
|
||||
/**
|
||||
* Inline function for [IntegrationFlowDefinition.filter] providing a `filter<MyTypeIn>()` variant
|
||||
* with reified generic type.
|
||||
*/
|
||||
inline fun <reified P> filter(
|
||||
crossinline function: (P) -> Boolean,
|
||||
crossinline configurer: (FilterEndpointSpec) -> Unit = {}): KotlinIntegrationFlowDefinition =
|
||||
crossinline configurer: (FilterEndpointSpec) -> Unit): KotlinIntegrationFlowDefinition =
|
||||
filter(P::class.java, { function(it) }) { configurer(it) }
|
||||
|
||||
/**
|
||||
* Inline function for [IntegrationFlowDefinition.filter] providing a `filter<MyTypeIn>()` variant
|
||||
* with reified generic type.
|
||||
*/
|
||||
inline fun <reified P, T> route(crossinline function: (P) -> T): KotlinIntegrationFlowDefinition =
|
||||
route(P::class.java) { function(it) }
|
||||
|
||||
/**
|
||||
* Inline function for [IntegrationFlowDefinition.filter] providing a `filter<MyTypeIn>()` variant
|
||||
* with reified generic type.
|
||||
*/
|
||||
inline fun <reified P, T> route(
|
||||
crossinline function: (P) -> T,
|
||||
crossinline configurer: (RouterSpec<T, MethodInvokingRouter>) -> Unit = {}):
|
||||
crossinline configurer: (RouterSpec<T, MethodInvokingRouter>) -> Unit):
|
||||
KotlinIntegrationFlowDefinition =
|
||||
route(P::class.java, { function(it) }) { configurer(it) }
|
||||
|
||||
|
||||
@@ -206,15 +206,17 @@ class KotlinDslTests {
|
||||
@Bean
|
||||
fun functionFlow() =
|
||||
integrationFlow<Function<String, String>>({ it.beanName("functionGateway") }) {
|
||||
transform<String, String>({ it.toUpperCase() })
|
||||
split<String>({ p -> p })
|
||||
transform<String, String> { it.toUpperCase() }
|
||||
split<String> { p -> p }
|
||||
split<String>({ p -> p }) { it.id("splitterEndpoint") }
|
||||
}
|
||||
|
||||
@Bean
|
||||
fun functionFlow2() =
|
||||
integrationFlow<Function<*, *>> {
|
||||
transform<String, String>({ it.toLowerCase() })
|
||||
route<Message<*>, Any?>({ m -> m.headers.replyChannel }) { it.id("router") }
|
||||
transform<String, String> { it.toLowerCase() }
|
||||
route<Message<*>, Any?>({ null }) { it.defaultOutputToParentFlow() }
|
||||
route<Message<*>, Any?> { m -> m.headers.replyChannel }
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -246,19 +248,19 @@ class KotlinDslTests {
|
||||
fun flowFromSupplier2() =
|
||||
integrationFlow({ "testSupplier2" },
|
||||
{ it.poller { it.trigger(OnlyOnceTrigger()) } }) {
|
||||
filter<Message<Any>>({ m -> m.payload is String })
|
||||
filter<Message<Any>> { m -> m.payload is String }
|
||||
channel { c -> c.queue("testSupplierResult2") }
|
||||
}
|
||||
|
||||
@Bean
|
||||
fun flowLambda() =
|
||||
integrationFlow {
|
||||
filter<String>({ it === "test" })
|
||||
filter<String>({ it === "test" }) { it.id("filterEndpoint") }
|
||||
wireTap(
|
||||
integrationFlow {
|
||||
channel { c -> c.queue("wireTapChannel") }
|
||||
})
|
||||
transform<String, String>({ it.toUpperCase() })
|
||||
transform<String, String> { it.toUpperCase() }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user