Create bridge serialization scheme to remove newly added dep on node

This commit is contained in:
Katelyn Baker 2018-05-17 17:17:22 +01:00
parent 4a05828e20
commit 819200ee3e
3 changed files with 31 additions and 10 deletions

View File

@ -47,10 +47,6 @@ dependencies {
transitive = false// we control dependencies directly as the bridge is likely to be audited
}
compile(project(':node')) {
transitive = false// we control dependencies directly as the bridge is likely to be audited
}
// Here we pull in dependencies that would normally be pulled in transitively from :core and :node-api, but we need more fine grained control
// For AMQP serialisation.
compile "org.apache.qpid:proton-j:${protonj_version}"

View File

@ -0,0 +1,29 @@
package net.corda.bridge.internal
import net.corda.core.cordapp.Cordapp
import net.corda.core.serialization.ClassWhitelist
import net.corda.core.serialization.SerializationContext
import net.corda.core.serialization.SerializationCustomSerializer
import net.corda.nodeapi.internal.serialization.CordaSerializationMagic
import net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme
import net.corda.nodeapi.internal.serialization.amqp.SerializerFactory
import net.corda.nodeapi.internal.serialization.amqp.amqpMagic
import java.util.concurrent.ConcurrentHashMap
class AMQPBridgeSerializationScheme(
cordappCustomSerializers: Set<SerializationCustomSerializer<*, *>>,
serializerFactoriesForContexts: MutableMap<Pair<ClassWhitelist, ClassLoader>, SerializerFactory>
) : AbstractAMQPSerializationScheme(cordappCustomSerializers, serializerFactoriesForContexts) {
constructor(cordapps: List<Cordapp>) : this(cordapps.customSerializers, ConcurrentHashMap())
override fun rpcClientSerializerFactory(context: SerializationContext): SerializerFactory {
throw UnsupportedOperationException()
}
override fun rpcServerSerializerFactory(context: SerializationContext) : SerializerFactory {
throw UnsupportedOperationException()
}
override fun canDeserializeVersion(magic: CordaSerializationMagic, target: SerializationContext.UseCase)
= (magic == amqpMagic && target == SerializationContext.UseCase.P2P)
}

View File

@ -27,7 +27,6 @@ import net.corda.core.serialization.internal.SerializationEnvironmentImpl
import net.corda.core.serialization.internal.effectiveSerializationEnv
import net.corda.core.serialization.internal.nodeSerializationEnv
import net.corda.core.utilities.contextLogger
import net.corda.node.serialization.amqp.AMQPServerSerializationScheme
import net.corda.nodeapi.internal.ShutdownHook
import net.corda.nodeapi.internal.addShutdownHook
import net.corda.nodeapi.internal.network.NETWORK_PARAMS_FILE_NAME
@ -71,12 +70,9 @@ class BridgeInstance(val conf: BridgeConfiguration,
val classloader = this.javaClass.classLoader
nodeSerializationEnv = SerializationEnvironmentImpl(
SerializationFactoryImpl().apply {
registerScheme(AMQPServerSerializationScheme(emptyList()))
registerScheme(AMQPBridgeSerializationScheme(emptyList()))
},
p2pContext = AMQP_P2P_CONTEXT.withClassLoader(classloader),
rpcServerContext = AMQP_P2P_CONTEXT.withClassLoader(classloader),
storageContext = AMQP_STORAGE_CONTEXT.withClassLoader(classloader),
checkpointContext = AMQP_P2P_CONTEXT.withClassLoader(classloader))
p2pContext = AMQP_P2P_CONTEXT.withClassLoader(classloader))
}
}