mirror of
https://github.com/corda/corda.git
synced 2025-06-18 23:28:21 +00:00
CORDA-205: Added some missing types to the whitelist and removed KeyPair
. (#1603)
* Added some missing types to the whitelist and removed `KeyPair`. * Add emptyList/Map/Set for Java. Also check for duplicates. * Remove java singleton collections since they are already added via kotlin listOf/mapOf/setOf.
This commit is contained in:
@ -21,6 +21,11 @@ class AMQPSerializationCustomization(val factory: SerializerFactory) : Serializa
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun SerializerFactory.addToWhitelist(vararg types: Class<*>) {
|
fun SerializerFactory.addToWhitelist(vararg types: Class<*>) {
|
||||||
|
require(types.toSet().size == types.size) {
|
||||||
|
val duplicates = types.toMutableList()
|
||||||
|
types.toSet().forEach { duplicates -= it }
|
||||||
|
"Cannot add duplicate classes to the whitelist ($duplicates)."
|
||||||
|
}
|
||||||
for (type in types) {
|
for (type in types) {
|
||||||
(this.whitelist as? MutableClassWhitelist)?.add(type)
|
(this.whitelist as? MutableClassWhitelist)?.add(type)
|
||||||
}
|
}
|
||||||
|
@ -7,9 +7,6 @@ import net.corda.core.utilities.NetworkHostAndPort
|
|||||||
import org.apache.activemq.artemis.api.core.SimpleString
|
import org.apache.activemq.artemis.api.core.SimpleString
|
||||||
import rx.Notification
|
import rx.Notification
|
||||||
import rx.exceptions.OnErrorNotImplementedException
|
import rx.exceptions.OnErrorNotImplementedException
|
||||||
import java.math.BigDecimal
|
|
||||||
import java.time.LocalDate
|
|
||||||
import java.time.Period
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,19 +31,19 @@ class DefaultWhitelist : CordaPluginRegistry() {
|
|||||||
mapOf(Unit to Unit).javaClass, // SingletonSet
|
mapOf(Unit to Unit).javaClass, // SingletonSet
|
||||||
NetworkHostAndPort::class.java,
|
NetworkHostAndPort::class.java,
|
||||||
SimpleString::class.java,
|
SimpleString::class.java,
|
||||||
KryoException::class.java,
|
KryoException::class.java, // TODO: Will be removed when we migrate away from Kryo
|
||||||
StringBuffer::class.java,
|
StringBuffer::class.java,
|
||||||
Unit::class.java,
|
Unit::class.java,
|
||||||
java.io.ByteArrayInputStream::class.java,
|
java.io.ByteArrayInputStream::class.java,
|
||||||
java.lang.Class::class.java,
|
java.lang.Class::class.java,
|
||||||
java.math.BigDecimal::class.java,
|
java.math.BigDecimal::class.java,
|
||||||
java.security.KeyPair::class.java,
|
|
||||||
|
|
||||||
// Matches the list in TimeSerializers.addDefaultSerializers:
|
// Matches the list in TimeSerializers.addDefaultSerializers:
|
||||||
java.time.Duration::class.java,
|
java.time.Duration::class.java,
|
||||||
java.time.Instant::class.java,
|
java.time.Instant::class.java,
|
||||||
java.time.LocalDate::class.java,
|
java.time.LocalDate::class.java,
|
||||||
java.time.LocalDateTime::class.java,
|
java.time.LocalDateTime::class.java,
|
||||||
|
java.time.LocalTime::class.java,
|
||||||
java.time.ZoneOffset::class.java,
|
java.time.ZoneOffset::class.java,
|
||||||
java.time.ZoneId::class.java,
|
java.time.ZoneId::class.java,
|
||||||
java.time.OffsetTime::class.java,
|
java.time.OffsetTime::class.java,
|
||||||
@ -57,12 +54,12 @@ class DefaultWhitelist : CordaPluginRegistry() {
|
|||||||
java.time.MonthDay::class.java,
|
java.time.MonthDay::class.java,
|
||||||
java.time.Period::class.java,
|
java.time.Period::class.java,
|
||||||
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.
|
||||||
|
java.time.Month::class.java, // No custom serialiser but it's an enum.
|
||||||
|
|
||||||
java.util.Collections.singletonMap("A", "B").javaClass,
|
java.util.Collections.emptyMap<Object, Object>().javaClass,
|
||||||
|
java.util.Collections.emptySet<Object>().javaClass,
|
||||||
|
java.util.Collections.emptyList<Object>().javaClass,
|
||||||
java.util.LinkedHashMap::class.java,
|
java.util.LinkedHashMap::class.java,
|
||||||
BigDecimal::class.java,
|
|
||||||
LocalDate::class.java,
|
|
||||||
Period::class.java,
|
|
||||||
BitSet::class.java,
|
BitSet::class.java,
|
||||||
OnErrorNotImplementedException::class.java,
|
OnErrorNotImplementedException::class.java,
|
||||||
StackTraceElement::class.java)
|
StackTraceElement::class.java)
|
||||||
|
@ -5,6 +5,11 @@ import net.corda.core.serialization.SerializationCustomization
|
|||||||
|
|
||||||
class KryoSerializationCustomization(val kryo: Kryo) : SerializationCustomization {
|
class KryoSerializationCustomization(val kryo: Kryo) : SerializationCustomization {
|
||||||
override fun addToWhitelist(vararg types: Class<*>) {
|
override fun addToWhitelist(vararg types: Class<*>) {
|
||||||
|
require(types.toSet().size == types.size) {
|
||||||
|
val duplicates = types.toMutableList()
|
||||||
|
types.toSet().forEach { duplicates -= it }
|
||||||
|
"Cannot add duplicate classes to the whitelist ($duplicates)."
|
||||||
|
}
|
||||||
for (type in types) {
|
for (type in types) {
|
||||||
((kryo.classResolver as? CordaClassResolver)?.whitelist as? MutableClassWhitelist)?.add(type)
|
((kryo.classResolver as? CordaClassResolver)?.whitelist as? MutableClassWhitelist)?.add(type)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user