diff --git a/node/src/main/kotlin/com/r3corda/node/internal/AbstractNode.kt b/node/src/main/kotlin/com/r3corda/node/internal/AbstractNode.kt index 7580da60e5..1eb2ab54c1 100644 --- a/node/src/main/kotlin/com/r3corda/node/internal/AbstractNode.kt +++ b/node/src/main/kotlin/com/r3corda/node/internal/AbstractNode.kt @@ -114,7 +114,7 @@ abstract class AbstractNode(val configuration: NodeConfiguration, val networkMap return smm.add(loggerName, logic).resultFuture } - override fun registerProtocolInitiator(markerClass: KClass<*>, protocolFactory: (Party) -> ProtocolLogic<*>) { + override fun

> registerProtocolInitiator(markerClass: KClass, protocolFactory: (Party) -> ProtocolLogic<*>) { require(markerClass !in protocolFactories) { "${markerClass.java.name} has already been used to register a protocol" } log.debug { "Registering ${markerClass.java.name}" } protocolFactories[markerClass.java] = protocolFactory diff --git a/node/src/main/kotlin/com/r3corda/node/services/api/ServiceHubInternal.kt b/node/src/main/kotlin/com/r3corda/node/services/api/ServiceHubInternal.kt index fa573b3514..86d9a1c738 100644 --- a/node/src/main/kotlin/com/r3corda/node/services/api/ServiceHubInternal.kt +++ b/node/src/main/kotlin/com/r3corda/node/services/api/ServiceHubInternal.kt @@ -72,15 +72,16 @@ abstract class ServiceHubInternal : ServiceHub { /** * Register the protocol factory we wish to use when a initiating party attempts to communicate with us. The - * registration is done against a marker [KClass] which is sent in the session handsake by the other party. If this + * registration is done against a marker [KClass] which is sent in the session handshake by the other party. If this * marker class has been registered then the corresponding factory will be used to create the protocol which will * communicate with the other side. If there is no mapping then the session attempt is rejected. * @param markerClass The marker [KClass] present in a session initiation attempt, which is a 1:1 mapping to a [Class] * using the

::class
construct. Any marker class can be used, with the default being the class of the initiating * protocol. This enables the registration to be of the form: registerProtocolInitiator(InitiatorProtocol::class, ::InitiatedProtocol) * @param protocolFactory The protocol factory generating the initiated protocol. + * @param R the return type of the protocol logic */ - abstract fun registerProtocolInitiator(markerClass: KClass<*>, protocolFactory: (Party) -> ProtocolLogic<*>) + abstract fun

> registerProtocolInitiator(markerClass: KClass, protocolFactory: (Party) -> ProtocolLogic<*>) /** * Return the protocol factory that has been registered with [markerClass], or null if no factory is found. diff --git a/node/src/test/kotlin/com/r3corda/node/services/MockServiceHubInternal.kt b/node/src/test/kotlin/com/r3corda/node/services/MockServiceHubInternal.kt index 657d23a79b..bb38499543 100644 --- a/node/src/test/kotlin/com/r3corda/node/services/MockServiceHubInternal.kt +++ b/node/src/test/kotlin/com/r3corda/node/services/MockServiceHubInternal.kt @@ -75,7 +75,7 @@ open class MockServiceHubInternal( return smm.add(loggerName, logic).resultFuture } - override fun registerProtocolInitiator(markerClass: KClass<*>, protocolFactory: (Party) -> ProtocolLogic<*>) { + override fun

> registerProtocolInitiator(markerClass: KClass, protocolFactory: (Party) -> ProtocolLogic<*>) { protocolFactories[markerClass.java] = protocolFactory } diff --git a/test-utils/src/main/kotlin/com/r3corda/testing/CoreTestUtils.kt b/test-utils/src/main/kotlin/com/r3corda/testing/CoreTestUtils.kt index 6cd13f1d53..591617ca34 100644 --- a/test-utils/src/main/kotlin/com/r3corda/testing/CoreTestUtils.kt +++ b/test-utils/src/main/kotlin/com/r3corda/testing/CoreTestUtils.kt @@ -141,7 +141,7 @@ fun getFreeLocalPorts(hostName: String, numberToAlloc: Int): List { * @return Returns a [ListenableFuture] holding the single [ProtocolStateMachine] created by the request. */ inline fun > AbstractNode.initiateSingleShotProtocol( - markerClass: KClass<*>, + markerClass: KClass>, noinline protocolFactory: (Party) -> P): ListenableFuture> { services.registerProtocolInitiator(markerClass, protocolFactory)