Address PR 379 comments

This commit is contained in:
Andras Slemmer 2017-03-17 12:27:25 +00:00
parent c3c1f3d801
commit d3f956ab60
21 changed files with 57 additions and 49 deletions

View File

@ -2,7 +2,7 @@ package net.corda.client.model
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import javafx.beans.property.SimpleObjectProperty import javafx.beans.property.SimpleObjectProperty
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.core.flows.StateMachineRunId import net.corda.core.flows.StateMachineRunId
import net.corda.core.messaging.CordaRPCOps import net.corda.core.messaging.CordaRPCOps
import net.corda.core.messaging.StateMachineInfo import net.corda.core.messaging.StateMachineInfo

View File

@ -42,11 +42,15 @@ dependencies {
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
compile "org.jetbrains.kotlinx:kotlinx-support-jdk8:0.3" compile "org.jetbrains.kotlinx:kotlinx-support-jdk8:0.3"
compile "org.jetbrains.kotlin:kotlin-test:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
compile "org.apache.activemq:artemis-server:${artemis_version}"
compile "org.apache.activemq:artemis-core-client:${artemis_version}" compile "org.apache.activemq:artemis-core-client:${artemis_version}"
compile "org.apache.activemq:artemis-commons:${artemis_version}" compile "org.apache.activemq:artemis-commons:${artemis_version}"
runtime "org.apache.activemq:artemis-amqp-protocol:${artemis_version}"
// TypeSafe Config: for simple and human friendly config files. // TypeSafe Config: for simple and human friendly config files.
compile "com.typesafe:config:$typesafe_config_version" compile "com.typesafe:config:$typesafe_config_version"
} }
configurations.compile {
// We want to use SLF4J's version of these binding: jcl-over-slf4j
// Remove any transitive dependency on Apache's version.
exclude group: 'commons-logging', module: 'commons-logging'
}

View File

@ -1,17 +1,19 @@
package net.corda.node package net.corda.nodeapi
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import org.apache.activemq.artemis.api.core.TransportConfiguration import org.apache.activemq.artemis.api.core.TransportConfiguration
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory
import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants
import java.nio.file.FileSystems import java.nio.file.FileSystems
import java.nio.file.Path import java.nio.file.Path
sealed class ConnectionDirection { sealed class ConnectionDirection {
object Inbound : ConnectionDirection() class Inbound(val acceptorFactoryClassName: String) : ConnectionDirection()
class Outbound(val expectedCommonName: String? = null) : ConnectionDirection() class Outbound(
val expectedCommonName: String? = null,
val connectorFactoryClassName: String = NettyConnectorFactory::class.java.name
) : ConnectionDirection()
} }
class ArtemisTcpTransport { class ArtemisTcpTransport {
@ -35,8 +37,6 @@ class ArtemisTcpTransport {
direction: ConnectionDirection, direction: ConnectionDirection,
hostAndPort: HostAndPort, hostAndPort: HostAndPort,
config: SSLConfiguration?, config: SSLConfiguration?,
acceptorFactoryClassName: String = NettyAcceptorFactory::class.java.name,
connectorFactoryClassName: String = NettyConnectorFactory::class.java.name,
enableSSL: Boolean = true enableSSL: Boolean = true
): TransportConfiguration { ): TransportConfiguration {
val options = mutableMapOf<String, Any?>( val options = mutableMapOf<String, Any?>(
@ -72,8 +72,8 @@ class ArtemisTcpTransport {
options.putAll(tlsOptions) options.putAll(tlsOptions)
} }
val factoryName = when (direction) { val factoryName = when (direction) {
is ConnectionDirection.Inbound -> acceptorFactoryClassName is ConnectionDirection.Inbound -> direction.acceptorFactoryClassName
is ConnectionDirection.Outbound -> connectorFactoryClassName is ConnectionDirection.Outbound -> direction.connectorFactoryClassName
} }
return TransportConfiguration(factoryName, options) return TransportConfiguration(factoryName, options)
} }

View File

@ -1,9 +1,8 @@
package net.corda.config package net.corda.nodeapi.config
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import com.typesafe.config.Config import com.typesafe.config.Config
import java.net.URL import java.net.URL
import java.nio.file.FileSystems
import java.nio.file.Path import java.nio.file.Path
import java.nio.file.Paths import java.nio.file.Paths
import java.time.Instant import java.time.Instant

View File

@ -1,4 +1,4 @@
package net.corda.config package net.corda.nodeapi.config
import net.corda.core.div import net.corda.core.div
import java.nio.file.Path import java.nio.file.Path

View File

@ -2,7 +2,7 @@ package net.corda.services.messaging
import co.paralleluniverse.fibers.Suspendable import co.paralleluniverse.fibers.Suspendable
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.core.crypto.Party import net.corda.core.crypto.Party
import net.corda.core.crypto.composite import net.corda.core.crypto.composite
import net.corda.core.crypto.generateKeyPair import net.corda.core.crypto.generateKeyPair

View File

@ -8,7 +8,7 @@ import com.google.common.util.concurrent.ListenableFuture
import com.google.common.util.concurrent.SettableFuture import com.google.common.util.concurrent.SettableFuture
import com.typesafe.config.Config import com.typesafe.config.Config
import com.typesafe.config.ConfigRenderOptions import com.typesafe.config.ConfigRenderOptions
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.core.* import net.corda.core.*
import net.corda.core.crypto.Party import net.corda.core.crypto.Party
import net.corda.core.messaging.CordaRPCOps import net.corda.core.messaging.CordaRPCOps

View File

@ -7,7 +7,7 @@ import com.typesafe.config.Config
import com.typesafe.config.ConfigFactory import com.typesafe.config.ConfigFactory
import com.typesafe.config.ConfigParseOptions import com.typesafe.config.ConfigParseOptions
import com.typesafe.config.ConfigRenderOptions import com.typesafe.config.ConfigRenderOptions
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.core.copyTo import net.corda.core.copyTo
import net.corda.core.createDirectories import net.corda.core.createDirectories
import net.corda.core.crypto.X509Utilities import net.corda.core.crypto.X509Utilities

View File

@ -2,10 +2,10 @@ package net.corda.node.services.config
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import com.typesafe.config.Config import com.typesafe.config.Config
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.config.getListOrElse import net.corda.nodeapi.config.getListOrElse
import net.corda.config.getOrElse import net.corda.nodeapi.config.getOrElse
import net.corda.config.getValue import net.corda.nodeapi.config.getValue
import net.corda.core.div import net.corda.core.div
import net.corda.core.node.NodeVersionInfo import net.corda.core.node.NodeVersionInfo
import net.corda.core.node.services.ServiceInfo import net.corda.core.node.services.ServiceInfo

View File

@ -2,7 +2,7 @@ package net.corda.node.services.messaging
import com.google.common.annotations.VisibleForTesting import com.google.common.annotations.VisibleForTesting
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.core.crypto.CompositeKey import net.corda.core.crypto.CompositeKey
import net.corda.core.messaging.MessageRecipientGroup import net.corda.core.messaging.MessageRecipientGroup
import net.corda.core.messaging.MessageRecipients import net.corda.core.messaging.MessageRecipients

View File

@ -16,9 +16,9 @@ import net.corda.core.node.services.NetworkMapCache.MapChange
import net.corda.core.seconds import net.corda.core.seconds
import net.corda.core.utilities.debug import net.corda.core.utilities.debug
import net.corda.core.utilities.loggerFor import net.corda.core.utilities.loggerFor
import net.corda.node.ArtemisTcpTransport import net.corda.nodeapi.ArtemisTcpTransport
import net.corda.node.ConnectionDirection import net.corda.nodeapi.ConnectionDirection
import net.corda.node.expectedOnDefaultFileSystem import net.corda.nodeapi.expectedOnDefaultFileSystem
import net.corda.node.printBasicNodeInfo import net.corda.node.printBasicNodeInfo
import net.corda.node.services.RPCUserService import net.corda.node.services.RPCUserService
import net.corda.node.services.config.NodeConfiguration import net.corda.node.services.config.NodeConfiguration
@ -34,6 +34,7 @@ import org.apache.activemq.artemis.core.config.Configuration
import org.apache.activemq.artemis.core.config.CoreQueueConfiguration import org.apache.activemq.artemis.core.config.CoreQueueConfiguration
import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl
import org.apache.activemq.artemis.core.config.impl.SecurityConfiguration import org.apache.activemq.artemis.core.config.impl.SecurityConfiguration
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnection import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnection
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory
@ -152,9 +153,12 @@ class ArtemisMessagingServer(override val config: NodeConfiguration,
bindingsDirectory = (artemisDir / "bindings").toString() bindingsDirectory = (artemisDir / "bindings").toString()
journalDirectory = (artemisDir / "journal").toString() journalDirectory = (artemisDir / "journal").toString()
largeMessagesDirectory = (artemisDir / "large-messages").toString() largeMessagesDirectory = (artemisDir / "large-messages").toString()
val acceptors = mutableSetOf(verifyingTcpTransport(ConnectionDirection.Inbound, "0.0.0.0", p2pHostPort.port)) val connectionDirection = ConnectionDirection.Inbound(
acceptorFactoryClassName = NettyAcceptorFactory::class.java.name
)
val acceptors = mutableSetOf(createTcpTransport(connectionDirection, "0.0.0.0", p2pHostPort.port))
if (rpcHostPort != null) { if (rpcHostPort != null) {
acceptors.add(verifyingTcpTransport(ConnectionDirection.Inbound, "0.0.0.0", rpcHostPort.port, enableSSL = false)) acceptors.add(createTcpTransport(connectionDirection, "0.0.0.0", rpcHostPort.port, enableSSL = false))
} }
acceptorConfigurations = acceptors acceptorConfigurations = acceptors
// Enable built in message deduplication. Note we still have to do our own as the delayed commits // Enable built in message deduplication. Note we still have to do our own as the delayed commits
@ -328,11 +332,8 @@ class ArtemisMessagingServer(override val config: NodeConfiguration,
deployBridge(address.queueName, address.hostAndPort, legalName) deployBridge(address.queueName, address.hostAndPort, legalName)
} }
private fun verifyingTcpTransport(direction: ConnectionDirection, host: String, port: Int, enableSSL: Boolean = true) = private fun createTcpTransport(connectionDirection: ConnectionDirection, host: String, port: Int, enableSSL: Boolean = true) =
ArtemisTcpTransport.tcpTransport(direction, HostAndPort.fromParts(host, port), config, ArtemisTcpTransport.tcpTransport(connectionDirection, HostAndPort.fromParts(host, port), config, enableSSL = enableSSL)
enableSSL = enableSSL,
connectorFactoryClassName = VerifyingNettyConnectorFactory::class.java.name
)
/** /**
* All nodes are expected to have a public facing address called [ArtemisMessagingComponent.P2P_QUEUE] for receiving * All nodes are expected to have a public facing address called [ArtemisMessagingComponent.P2P_QUEUE] for receiving
@ -341,7 +342,11 @@ class ArtemisMessagingServer(override val config: NodeConfiguration,
* P2P address. * P2P address.
*/ */
private fun deployBridge(queueName: String, target: HostAndPort, legalName: String) { private fun deployBridge(queueName: String, target: HostAndPort, legalName: String) {
val tcpTransport = verifyingTcpTransport(ConnectionDirection.Outbound(expectedCommonName = legalName), target.hostText, target.port) val connectionDirection = ConnectionDirection.Outbound(
connectorFactoryClassName = VerifyingNettyConnectorFactory::class.java.name,
expectedCommonName = legalName
)
val tcpTransport = createTcpTransport(connectionDirection, target.hostText, target.port)
tcpTransport.params[ArtemisMessagingServer::class.java.name] = this tcpTransport.params[ArtemisMessagingServer::class.java.name] = this
// We intentionally overwrite any previous connector config in case the peer legal name changed // We intentionally overwrite any previous connector config in case the peer legal name changed
activeMQServer.configuration.addConnectorConfiguration(target.toString(), tcpTransport) activeMQServer.configuration.addConnectorConfiguration(target.toString(), tcpTransport)

View File

@ -1,15 +1,15 @@
package net.corda.node.services.messaging package net.corda.node.services.messaging
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.core.ThreadBox import net.corda.core.ThreadBox
import net.corda.core.logElapsedTime import net.corda.core.logElapsedTime
import net.corda.core.messaging.CordaRPCOps import net.corda.core.messaging.CordaRPCOps
import net.corda.core.minutes import net.corda.core.minutes
import net.corda.core.seconds import net.corda.core.seconds
import net.corda.core.utilities.loggerFor import net.corda.core.utilities.loggerFor
import net.corda.node.ArtemisTcpTransport.Companion.tcpTransport import net.corda.nodeapi.ArtemisTcpTransport.Companion.tcpTransport
import net.corda.node.ConnectionDirection import net.corda.nodeapi.ConnectionDirection
import org.apache.activemq.artemis.api.core.ActiveMQException import org.apache.activemq.artemis.api.core.ActiveMQException
import org.apache.activemq.artemis.api.core.client.ActiveMQClient import org.apache.activemq.artemis.api.core.client.ActiveMQClient
import org.apache.activemq.artemis.api.core.client.ClientSession import org.apache.activemq.artemis.api.core.client.ClientSession

View File

@ -12,8 +12,8 @@ import net.corda.core.serialization.opaque
import net.corda.core.success import net.corda.core.success
import net.corda.core.utilities.loggerFor import net.corda.core.utilities.loggerFor
import net.corda.core.utilities.trace import net.corda.core.utilities.trace
import net.corda.node.ArtemisTcpTransport import net.corda.nodeapi.ArtemisTcpTransport
import net.corda.node.ConnectionDirection import net.corda.nodeapi.ConnectionDirection
import net.corda.node.services.RPCUserService import net.corda.node.services.RPCUserService
import net.corda.node.services.api.MessagingServiceInternal import net.corda.node.services.api.MessagingServiceInternal
import net.corda.node.services.config.NodeConfiguration import net.corda.node.services.config.NodeConfiguration

View File

@ -20,7 +20,7 @@ import net.corda.core.serialization.SingletonSerializeAsToken
import net.corda.core.serialization.deserialize import net.corda.core.serialization.deserialize
import net.corda.core.serialization.serialize import net.corda.core.serialization.serialize
import net.corda.core.utilities.loggerFor import net.corda.core.utilities.loggerFor
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import org.jetbrains.exposed.sql.Database import org.jetbrains.exposed.sql.Database
import java.nio.file.Path import java.nio.file.Path
import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletableFuture

View File

@ -2,7 +2,7 @@ package net.corda.attachmentdemo
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import joptsimple.OptionParser import joptsimple.OptionParser
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.core.contracts.TransactionType import net.corda.core.contracts.TransactionType
import net.corda.core.crypto.Party import net.corda.core.crypto.Party
import net.corda.core.crypto.SecureHash import net.corda.core.crypto.SecureHash

View File

@ -3,7 +3,7 @@ package net.corda.notarydemo
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import com.google.common.util.concurrent.Futures import com.google.common.util.concurrent.Futures
import joptsimple.OptionParser import joptsimple.OptionParser
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.core.crypto.toStringShort import net.corda.core.crypto.toStringShort
import net.corda.core.div import net.corda.core.div
import net.corda.core.getOrThrow import net.corda.core.getOrThrow

View File

@ -2,7 +2,7 @@ package net.corda.traderdemo
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import joptsimple.OptionParser import joptsimple.OptionParser
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.core.contracts.DOLLARS import net.corda.core.contracts.DOLLARS
import net.corda.core.div import net.corda.core.div
import net.corda.core.utilities.loggerFor import net.corda.core.utilities.loggerFor

View File

@ -6,7 +6,7 @@ package net.corda.testing
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import com.google.common.util.concurrent.ListenableFuture import com.google.common.util.concurrent.ListenableFuture
import com.typesafe.config.Config import com.typesafe.config.Config
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.core.contracts.StateRef import net.corda.core.contracts.StateRef
import net.corda.core.crypto.* import net.corda.core.crypto.*
import net.corda.core.flows.FlowLogic import net.corda.core.flows.FlowLogic

View File

@ -1,9 +1,9 @@
package net.corda.testing.messaging package net.corda.testing.messaging
import com.google.common.net.HostAndPort import com.google.common.net.HostAndPort
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.node.ArtemisTcpTransport import net.corda.nodeapi.ArtemisTcpTransport
import net.corda.node.ConnectionDirection import net.corda.nodeapi.ConnectionDirection
import net.corda.node.services.messaging.ArtemisMessagingComponent import net.corda.node.services.messaging.ArtemisMessagingComponent
import net.corda.testing.configureTestSSL import net.corda.testing.configureTestSSL
import org.apache.activemq.artemis.api.core.client.* import org.apache.activemq.artemis.api.core.client.*

View File

@ -11,7 +11,7 @@ import net.corda.core.createDirectories
import net.corda.core.div import net.corda.core.div
import net.corda.core.messaging.CordaRPCOps import net.corda.core.messaging.CordaRPCOps
import net.corda.node.driver.PortAllocation import net.corda.node.driver.PortAllocation
import net.corda.config.SSLConfiguration import net.corda.nodeapi.config.SSLConfiguration
import net.corda.node.services.messaging.CordaRPCClient import net.corda.node.services.messaging.CordaRPCClient
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream

View File

@ -1,7 +1,7 @@
package net.corda.loadtest package net.corda.loadtest
import com.typesafe.config.Config import com.typesafe.config.Config
import net.corda.config.getValue import net.corda.nodeapi.config.getValue
import java.nio.file.Path import java.nio.file.Path
/** /**