Skip to content

Commit 207226e

Browse files
authored
Merge pull request #36 from holixon/feature/command_gateway_reified_types
reified both types on command gateway send
2 parents efd2c51 + e1e1523 commit 207226e

File tree

3 files changed

+14
-16
lines changed

3 files changed

+14
-16
lines changed

kotlin/src/main/kotlin/org/axonframework/extensions/kotlin/CommandGatewayExtensions.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ import org.axonframework.messaging.MetaData
2929
* @param [C] the type of payload of the command
3030
* @see CommandGateway.send
3131
*/
32-
fun <C : Any, R : Any?> CommandGateway.send(
32+
inline fun <reified C : Any, reified R : Any?> CommandGateway.send(
3333
command: C,
34-
onSuccess: (commandMessage: CommandMessage<out C>, result: R, metaData: MetaData) -> Unit = { _, _, _ -> },
35-
onError: (commandMessage: CommandMessage<out C>, exception: Throwable, metaData: MetaData) -> Unit = { _, _, _ -> }
34+
noinline onSuccess: (commandMessage: CommandMessage<out C>, result: R, metaData: MetaData) -> Unit = { _, _, _ -> },
35+
noinline onError: (commandMessage: CommandMessage<out C>, exception: Throwable, metaData: MetaData) -> Unit = { _, _, _ -> }
3636
): Unit = this.send(command, ResultDiscriminatorCommandCallback<C, R>(onSuccess, onError))

kotlin/src/main/kotlin/org/axonframework/extensions/kotlin/ResultDiscriminatorCommandCallback.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,20 @@ import org.axonframework.commandhandling.CommandResultMessage
2121
import org.axonframework.messaging.MetaData
2222

2323
/**
24-
* Implementation of the [CommandCallback] that is appropriate for dedicated [onError] and [onSuccess] callbacks
24+
* Implementation of the [CommandCallback] that is appropriate for dedicated [onError] and [onSuccess] callbacks.
2525
* @param onError Callback to handle failed execution. Defaults to an empty function
2626
* @param onSuccess Callback to handle successful execution. Defaults to an empty function
2727
* @param [R] the type of result of the command handling
2828
* @param [C] the type of payload of the command
2929
* @see CommandCallback
3030
* @author Stefan Andjelkovic
3131
*/
32-
internal class ResultDiscriminatorCommandCallback<C, R>(
32+
class ResultDiscriminatorCommandCallback<C, R>(
3333
val onSuccess: (commandMessage: CommandMessage<out C>, result: R, metaData: MetaData) -> Unit,
3434
val onError: (commandMessage: CommandMessage<out C>, exception: Throwable, metaData: MetaData) -> Unit
3535
) : CommandCallback<C, R> {
3636
override fun onResult(commandMessage: CommandMessage<out C>, commandResultMessage: CommandResultMessage<out R>) {
37-
val metaData = commandResultMessage.metaData ?: MetaData.emptyInstance()
37+
val metaData: MetaData = commandResultMessage.metaData ?: MetaData.emptyInstance()
3838
if (commandResultMessage.isExceptional) {
3939
onError(commandMessage, commandResultMessage.exceptionResult(), metaData)
4040
} else {

kotlin/src/test/kotlin/org/axonframework/extensions/kotlin/CommandGatewayExtensionsTest.kt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,10 @@
1515
*/
1616
package org.axonframework.extensions.kotlin
1717

18-
import io.mockk.Runs
19-
import io.mockk.every
20-
import io.mockk.just
21-
import io.mockk.mockk
22-
import io.mockk.verify
18+
import io.mockk.*
2319
import org.axonframework.commandhandling.CommandCallback
24-
import org.axonframework.commandhandling.CommandMessage
2520
import org.axonframework.commandhandling.gateway.CommandGateway
2621
import org.axonframework.messaging.MetaData
27-
import java.util.concurrent.TimeUnit
2822
import kotlin.test.Test
2923

3024
/**
@@ -41,7 +35,11 @@ internal class CommandGatewayExtensionsTest {
4135
fun `Send extension should invoke correct method on the gateway`() {
4236
every { subjectGateway.send(exampleCommand, any<CommandCallback<ExampleCommand, Any>>()) } just Runs
4337

44-
subjectGateway.send<ExampleCommand, Any>(command = exampleCommand, onError = { _, _, _ -> }, onSuccess = { _, _, _ -> })
38+
subjectGateway.send(
39+
command = exampleCommand,
40+
onError = { _, _, _ -> },
41+
onSuccess = { _, _: Any, _ -> }
42+
)
4543

4644
verify { subjectGateway.send(exampleCommand, any<CommandCallback<ExampleCommand, Any>>()) }
4745
}
@@ -52,8 +50,8 @@ internal class CommandGatewayExtensionsTest {
5250

5351
subjectGateway.send(
5452
command = exampleCommand,
55-
onError = { _: Any, _: Throwable, _: MetaData -> },
56-
onSuccess = { _: CommandMessage<out ExampleCommand>, _: Any, _: MetaData -> }
53+
onError = { _, _: Throwable, _: MetaData -> },
54+
onSuccess = { _, _: Any, _: MetaData -> }
5755
)
5856

5957
verify { subjectGateway.send(exampleCommand, any<CommandCallback<ExampleCommand, Any>>()) }

0 commit comments

Comments
 (0)