mirror of
https://github.com/corda/corda.git
synced 2025-06-13 20:58:19 +00:00
Make addToWhitelist vararg for compactness. (#1361)
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
package net.corda.core.serialization
|
package net.corda.core.serialization
|
||||||
|
|
||||||
interface SerializationCustomization {
|
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
|
* 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.
|
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
|
Milestone 14
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
@ -6,7 +6,10 @@ import com.esotericsoftware.kryo.io.Output
|
|||||||
import com.esotericsoftware.kryo.serializers.FieldSerializer
|
import com.esotericsoftware.kryo.serializers.FieldSerializer
|
||||||
import com.esotericsoftware.kryo.util.DefaultClassResolver
|
import com.esotericsoftware.kryo.util.DefaultClassResolver
|
||||||
import com.esotericsoftware.kryo.util.Util
|
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 net.corda.core.utilities.loggerFor
|
||||||
import java.io.PrintWriter
|
import java.io.PrintWriter
|
||||||
import java.lang.reflect.Modifier.isAbstract
|
import java.lang.reflect.Modifier.isAbstract
|
||||||
@ -16,8 +19,10 @@ import java.nio.file.Paths
|
|||||||
import java.nio.file.StandardOpenOption
|
import java.nio.file.StandardOpenOption
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
fun Kryo.addToWhitelist(type: Class<*>) {
|
fun Kryo.addToWhitelist(vararg types: Class<*>) {
|
||||||
((classResolver as? CordaClassResolver)?.whitelist as? MutableClassWhitelist)?.add(type)
|
for (type in types) {
|
||||||
|
((classResolver as? CordaClassResolver)?.whitelist as? MutableClassWhitelist)?.add(type)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,54 +18,53 @@ import java.util.*
|
|||||||
class DefaultWhitelist : CordaPluginRegistry() {
|
class DefaultWhitelist : CordaPluginRegistry() {
|
||||||
override fun customizeSerialization(custom: SerializationCustomization): Boolean {
|
override fun customizeSerialization(custom: SerializationCustomization): Boolean {
|
||||||
custom.apply {
|
custom.apply {
|
||||||
// TODO: Turn this into an array and use map {}
|
addToWhitelist(Array<Any>(0, {}).javaClass,
|
||||||
addToWhitelist(Array<Any>(0, {}).javaClass)
|
Notification::class.java,
|
||||||
addToWhitelist(Notification::class.java)
|
Notification.Kind::class.java,
|
||||||
addToWhitelist(Notification.Kind::class.java)
|
ArrayList::class.java,
|
||||||
addToWhitelist(ArrayList::class.java)
|
listOf<Any>().javaClass, // EmptyList
|
||||||
addToWhitelist(listOf<Any>().javaClass) // EmptyList
|
Pair::class.java,
|
||||||
addToWhitelist(Pair::class.java)
|
ByteArray::class.java,
|
||||||
addToWhitelist(ByteArray::class.java)
|
UUID::class.java,
|
||||||
addToWhitelist(UUID::class.java)
|
LinkedHashSet::class.java,
|
||||||
addToWhitelist(LinkedHashSet::class.java)
|
setOf<Unit>().javaClass, // EmptySet
|
||||||
addToWhitelist(setOf<Unit>().javaClass) // EmptySet
|
Currency::class.java,
|
||||||
addToWhitelist(Currency::class.java)
|
listOf(Unit).javaClass, // SingletonList
|
||||||
addToWhitelist(listOf(Unit).javaClass) // SingletonList
|
setOf(Unit).javaClass, // SingletonSet
|
||||||
addToWhitelist(setOf(Unit).javaClass) // SingletonSet
|
mapOf(Unit to Unit).javaClass, // SingletonSet
|
||||||
addToWhitelist(mapOf(Unit to Unit).javaClass) // SingletonSet
|
NetworkHostAndPort::class.java,
|
||||||
addToWhitelist(NetworkHostAndPort::class.java)
|
SimpleString::class.java,
|
||||||
addToWhitelist(SimpleString::class.java)
|
KryoException::class.java,
|
||||||
addToWhitelist(KryoException::class.java)
|
StringBuffer::class.java,
|
||||||
addToWhitelist(StringBuffer::class.java)
|
Unit::class.java,
|
||||||
addToWhitelist(Unit::class.java)
|
java.io.ByteArrayInputStream::class.java,
|
||||||
addToWhitelist(java.io.ByteArrayInputStream::class.java)
|
java.lang.Class::class.java,
|
||||||
addToWhitelist(java.lang.Class::class.java)
|
java.math.BigDecimal::class.java,
|
||||||
addToWhitelist(java.math.BigDecimal::class.java)
|
java.security.KeyPair::class.java,
|
||||||
addToWhitelist(java.security.KeyPair::class.java)
|
|
||||||
|
|
||||||
// Matches the list in TimeSerializers.addDefaultSerializers:
|
// Matches the list in TimeSerializers.addDefaultSerializers:
|
||||||
addToWhitelist(java.time.Duration::class.java)
|
java.time.Duration::class.java,
|
||||||
addToWhitelist(java.time.Instant::class.java)
|
java.time.Instant::class.java,
|
||||||
addToWhitelist(java.time.LocalDate::class.java)
|
java.time.LocalDate::class.java,
|
||||||
addToWhitelist(java.time.LocalDateTime::class.java)
|
java.time.LocalDateTime::class.java,
|
||||||
addToWhitelist(java.time.ZoneOffset::class.java)
|
java.time.ZoneOffset::class.java,
|
||||||
addToWhitelist(java.time.ZoneId::class.java)
|
java.time.ZoneId::class.java,
|
||||||
addToWhitelist(java.time.OffsetTime::class.java)
|
java.time.OffsetTime::class.java,
|
||||||
addToWhitelist(java.time.OffsetDateTime::class.java)
|
java.time.OffsetDateTime::class.java,
|
||||||
addToWhitelist(java.time.ZonedDateTime::class.java)
|
java.time.ZonedDateTime::class.java,
|
||||||
addToWhitelist(java.time.Year::class.java)
|
java.time.Year::class.java,
|
||||||
addToWhitelist(java.time.YearMonth::class.java)
|
java.time.YearMonth::class.java,
|
||||||
addToWhitelist(java.time.MonthDay::class.java)
|
java.time.MonthDay::class.java,
|
||||||
addToWhitelist(java.time.Period::class.java)
|
java.time.Period::class.java,
|
||||||
addToWhitelist(java.time.DayOfWeek::class.java) // No custom serialiser but it's an enum.
|
java.time.DayOfWeek::class.java, // No custom serialiser but it's an enum.
|
||||||
|
|
||||||
addToWhitelist(java.util.Collections.singletonMap("A", "B").javaClass)
|
java.util.Collections.singletonMap("A", "B").javaClass,
|
||||||
addToWhitelist(java.util.LinkedHashMap::class.java)
|
java.util.LinkedHashMap::class.java,
|
||||||
addToWhitelist(BigDecimal::class.java)
|
BigDecimal::class.java,
|
||||||
addToWhitelist(LocalDate::class.java)
|
LocalDate::class.java,
|
||||||
addToWhitelist(Period::class.java)
|
Period::class.java,
|
||||||
addToWhitelist(BitSet::class.java)
|
BitSet::class.java,
|
||||||
addToWhitelist(OnErrorNotImplementedException::class.java)
|
OnErrorNotImplementedException::class.java)
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ import com.esotericsoftware.kryo.Kryo
|
|||||||
import net.corda.core.serialization.SerializationCustomization
|
import net.corda.core.serialization.SerializationCustomization
|
||||||
|
|
||||||
class KryoSerializationCustomization(val kryo: Kryo) : SerializationCustomization {
|
class KryoSerializationCustomization(val kryo: Kryo) : SerializationCustomization {
|
||||||
override fun addToWhitelist(type: Class<*>) {
|
override fun addToWhitelist(vararg types: Class<*>) {
|
||||||
kryo.addToWhitelist(type)
|
kryo.addToWhitelist(*types)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -26,18 +26,18 @@ class SimmPluginRegistry : CordaPluginRegistry() {
|
|||||||
override fun customizeSerialization(custom: SerializationCustomization): Boolean {
|
override fun customizeSerialization(custom: SerializationCustomization): Boolean {
|
||||||
custom.apply {
|
custom.apply {
|
||||||
// OpenGamma classes.
|
// OpenGamma classes.
|
||||||
addToWhitelist(MultiCurrencyAmount::class.java)
|
addToWhitelist(MultiCurrencyAmount::class.java,
|
||||||
addToWhitelist(Ordering.natural<Comparable<Any>>().javaClass)
|
Ordering.natural<Comparable<Any>>().javaClass,
|
||||||
addToWhitelist(CurrencyAmount::class.java)
|
CurrencyAmount::class.java,
|
||||||
addToWhitelist(Currency::class.java)
|
Currency::class.java,
|
||||||
addToWhitelist(InitialMarginTriple::class.java)
|
InitialMarginTriple::class.java,
|
||||||
addToWhitelist(CordaMarketData::class.java)
|
CordaMarketData::class.java,
|
||||||
addToWhitelist(CurrencyParameterSensitivities::class.java)
|
CurrencyParameterSensitivities::class.java,
|
||||||
addToWhitelist(CurrencyParameterSensitivity::class.java)
|
CurrencyParameterSensitivity::class.java,
|
||||||
addToWhitelist(DoubleArray::class.java)
|
DoubleArray::class.java,
|
||||||
addToWhitelist(CurveName::class.java)
|
CurveName::class.java,
|
||||||
addToWhitelist(TenorDateParameterMetadata::class.java)
|
TenorDateParameterMetadata::class.java,
|
||||||
addToWhitelist(Tenor::class.java)
|
Tenor::class.java)
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user