mirror of
https://github.com/corda/corda.git
synced 2025-04-11 13:21:26 +00:00
Make addToWhitelist vararg for compactness. (#1361)
This commit is contained in:
parent
9b3cad30b2
commit
35dec9abdc
core/src/main/kotlin/net/corda/core/serialization
docs/source
node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization
samples/simm-valuation-demo/src/main/kotlin/net/corda/vega/plugin
@ -1,6 +1,6 @@
|
||||
package net.corda.core.serialization
|
||||
|
||||
interface SerializationCustomization {
|
||||
fun addToWhitelist(type: Class<*>)
|
||||
fun addToWhitelist(vararg types: Class<*>)
|
||||
}
|
||||
|
||||
|
@ -70,6 +70,8 @@ UNRELEASED
|
||||
* Removed the concept of relevancy from ``LinearState``. The ``ContractState``'s relevancy to the vault can be determined
|
||||
by the flow context, the vault will process any transaction from a flow which is not derived from transaction resolution verification.
|
||||
|
||||
* ``SerializationCustomization.addToWhitelist()` now accepts multiple classes via varargs.
|
||||
|
||||
Milestone 14
|
||||
------------
|
||||
|
||||
|
@ -6,7 +6,10 @@ import com.esotericsoftware.kryo.io.Output
|
||||
import com.esotericsoftware.kryo.serializers.FieldSerializer
|
||||
import com.esotericsoftware.kryo.util.DefaultClassResolver
|
||||
import com.esotericsoftware.kryo.util.Util
|
||||
import net.corda.core.serialization.*
|
||||
import net.corda.core.serialization.AttachmentsClassLoader
|
||||
import net.corda.core.serialization.ClassWhitelist
|
||||
import net.corda.core.serialization.CordaSerializable
|
||||
import net.corda.core.serialization.SerializationContext
|
||||
import net.corda.core.utilities.loggerFor
|
||||
import java.io.PrintWriter
|
||||
import java.lang.reflect.Modifier.isAbstract
|
||||
@ -16,8 +19,10 @@ import java.nio.file.Paths
|
||||
import java.nio.file.StandardOpenOption
|
||||
import java.util.*
|
||||
|
||||
fun Kryo.addToWhitelist(type: Class<*>) {
|
||||
((classResolver as? CordaClassResolver)?.whitelist as? MutableClassWhitelist)?.add(type)
|
||||
fun Kryo.addToWhitelist(vararg types: Class<*>) {
|
||||
for (type in types) {
|
||||
((classResolver as? CordaClassResolver)?.whitelist as? MutableClassWhitelist)?.add(type)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -18,54 +18,53 @@ import java.util.*
|
||||
class DefaultWhitelist : CordaPluginRegistry() {
|
||||
override fun customizeSerialization(custom: SerializationCustomization): Boolean {
|
||||
custom.apply {
|
||||
// TODO: Turn this into an array and use map {}
|
||||
addToWhitelist(Array<Any>(0, {}).javaClass)
|
||||
addToWhitelist(Notification::class.java)
|
||||
addToWhitelist(Notification.Kind::class.java)
|
||||
addToWhitelist(ArrayList::class.java)
|
||||
addToWhitelist(listOf<Any>().javaClass) // EmptyList
|
||||
addToWhitelist(Pair::class.java)
|
||||
addToWhitelist(ByteArray::class.java)
|
||||
addToWhitelist(UUID::class.java)
|
||||
addToWhitelist(LinkedHashSet::class.java)
|
||||
addToWhitelist(setOf<Unit>().javaClass) // EmptySet
|
||||
addToWhitelist(Currency::class.java)
|
||||
addToWhitelist(listOf(Unit).javaClass) // SingletonList
|
||||
addToWhitelist(setOf(Unit).javaClass) // SingletonSet
|
||||
addToWhitelist(mapOf(Unit to Unit).javaClass) // SingletonSet
|
||||
addToWhitelist(NetworkHostAndPort::class.java)
|
||||
addToWhitelist(SimpleString::class.java)
|
||||
addToWhitelist(KryoException::class.java)
|
||||
addToWhitelist(StringBuffer::class.java)
|
||||
addToWhitelist(Unit::class.java)
|
||||
addToWhitelist(java.io.ByteArrayInputStream::class.java)
|
||||
addToWhitelist(java.lang.Class::class.java)
|
||||
addToWhitelist(java.math.BigDecimal::class.java)
|
||||
addToWhitelist(java.security.KeyPair::class.java)
|
||||
addToWhitelist(Array<Any>(0, {}).javaClass,
|
||||
Notification::class.java,
|
||||
Notification.Kind::class.java,
|
||||
ArrayList::class.java,
|
||||
listOf<Any>().javaClass, // EmptyList
|
||||
Pair::class.java,
|
||||
ByteArray::class.java,
|
||||
UUID::class.java,
|
||||
LinkedHashSet::class.java,
|
||||
setOf<Unit>().javaClass, // EmptySet
|
||||
Currency::class.java,
|
||||
listOf(Unit).javaClass, // SingletonList
|
||||
setOf(Unit).javaClass, // SingletonSet
|
||||
mapOf(Unit to Unit).javaClass, // SingletonSet
|
||||
NetworkHostAndPort::class.java,
|
||||
SimpleString::class.java,
|
||||
KryoException::class.java,
|
||||
StringBuffer::class.java,
|
||||
Unit::class.java,
|
||||
java.io.ByteArrayInputStream::class.java,
|
||||
java.lang.Class::class.java,
|
||||
java.math.BigDecimal::class.java,
|
||||
java.security.KeyPair::class.java,
|
||||
|
||||
// Matches the list in TimeSerializers.addDefaultSerializers:
|
||||
addToWhitelist(java.time.Duration::class.java)
|
||||
addToWhitelist(java.time.Instant::class.java)
|
||||
addToWhitelist(java.time.LocalDate::class.java)
|
||||
addToWhitelist(java.time.LocalDateTime::class.java)
|
||||
addToWhitelist(java.time.ZoneOffset::class.java)
|
||||
addToWhitelist(java.time.ZoneId::class.java)
|
||||
addToWhitelist(java.time.OffsetTime::class.java)
|
||||
addToWhitelist(java.time.OffsetDateTime::class.java)
|
||||
addToWhitelist(java.time.ZonedDateTime::class.java)
|
||||
addToWhitelist(java.time.Year::class.java)
|
||||
addToWhitelist(java.time.YearMonth::class.java)
|
||||
addToWhitelist(java.time.MonthDay::class.java)
|
||||
addToWhitelist(java.time.Period::class.java)
|
||||
addToWhitelist(java.time.DayOfWeek::class.java) // No custom serialiser but it's an enum.
|
||||
// Matches the list in TimeSerializers.addDefaultSerializers:
|
||||
java.time.Duration::class.java,
|
||||
java.time.Instant::class.java,
|
||||
java.time.LocalDate::class.java,
|
||||
java.time.LocalDateTime::class.java,
|
||||
java.time.ZoneOffset::class.java,
|
||||
java.time.ZoneId::class.java,
|
||||
java.time.OffsetTime::class.java,
|
||||
java.time.OffsetDateTime::class.java,
|
||||
java.time.ZonedDateTime::class.java,
|
||||
java.time.Year::class.java,
|
||||
java.time.YearMonth::class.java,
|
||||
java.time.MonthDay::class.java,
|
||||
java.time.Period::class.java,
|
||||
java.time.DayOfWeek::class.java, // No custom serialiser but it's an enum.
|
||||
|
||||
addToWhitelist(java.util.Collections.singletonMap("A", "B").javaClass)
|
||||
addToWhitelist(java.util.LinkedHashMap::class.java)
|
||||
addToWhitelist(BigDecimal::class.java)
|
||||
addToWhitelist(LocalDate::class.java)
|
||||
addToWhitelist(Period::class.java)
|
||||
addToWhitelist(BitSet::class.java)
|
||||
addToWhitelist(OnErrorNotImplementedException::class.java)
|
||||
java.util.Collections.singletonMap("A", "B").javaClass,
|
||||
java.util.LinkedHashMap::class.java,
|
||||
BigDecimal::class.java,
|
||||
LocalDate::class.java,
|
||||
Period::class.java,
|
||||
BitSet::class.java,
|
||||
OnErrorNotImplementedException::class.java)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
4
node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/KryoSerializationCustomization.kt
4
node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/KryoSerializationCustomization.kt
@ -4,7 +4,7 @@ import com.esotericsoftware.kryo.Kryo
|
||||
import net.corda.core.serialization.SerializationCustomization
|
||||
|
||||
class KryoSerializationCustomization(val kryo: Kryo) : SerializationCustomization {
|
||||
override fun addToWhitelist(type: Class<*>) {
|
||||
kryo.addToWhitelist(type)
|
||||
override fun addToWhitelist(vararg types: Class<*>) {
|
||||
kryo.addToWhitelist(*types)
|
||||
}
|
||||
}
|
@ -26,18 +26,18 @@ class SimmPluginRegistry : CordaPluginRegistry() {
|
||||
override fun customizeSerialization(custom: SerializationCustomization): Boolean {
|
||||
custom.apply {
|
||||
// OpenGamma classes.
|
||||
addToWhitelist(MultiCurrencyAmount::class.java)
|
||||
addToWhitelist(Ordering.natural<Comparable<Any>>().javaClass)
|
||||
addToWhitelist(CurrencyAmount::class.java)
|
||||
addToWhitelist(Currency::class.java)
|
||||
addToWhitelist(InitialMarginTriple::class.java)
|
||||
addToWhitelist(CordaMarketData::class.java)
|
||||
addToWhitelist(CurrencyParameterSensitivities::class.java)
|
||||
addToWhitelist(CurrencyParameterSensitivity::class.java)
|
||||
addToWhitelist(DoubleArray::class.java)
|
||||
addToWhitelist(CurveName::class.java)
|
||||
addToWhitelist(TenorDateParameterMetadata::class.java)
|
||||
addToWhitelist(Tenor::class.java)
|
||||
addToWhitelist(MultiCurrencyAmount::class.java,
|
||||
Ordering.natural<Comparable<Any>>().javaClass,
|
||||
CurrencyAmount::class.java,
|
||||
Currency::class.java,
|
||||
InitialMarginTriple::class.java,
|
||||
CordaMarketData::class.java,
|
||||
CurrencyParameterSensitivities::class.java,
|
||||
CurrencyParameterSensitivity::class.java,
|
||||
DoubleArray::class.java,
|
||||
CurveName::class.java,
|
||||
TenorDateParameterMetadata::class.java,
|
||||
Tenor::class.java)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user