mirror of
https://github.com/corda/corda.git
synced 2025-02-01 00:45:59 +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:
parent
f43702fe3d
commit
94a92fe82e
@ -21,6 +21,11 @@ class AMQPSerializationCustomization(val factory: SerializerFactory) : Serializa
|
||||
}
|
||||
|
||||
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) {
|
||||
(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 rx.Notification
|
||||
import rx.exceptions.OnErrorNotImplementedException
|
||||
import java.math.BigDecimal
|
||||
import java.time.LocalDate
|
||||
import java.time.Period
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
@ -34,19 +31,19 @@ class DefaultWhitelist : CordaPluginRegistry() {
|
||||
mapOf(Unit to Unit).javaClass, // SingletonSet
|
||||
NetworkHostAndPort::class.java,
|
||||
SimpleString::class.java,
|
||||
KryoException::class.java,
|
||||
KryoException::class.java, // TODO: Will be removed when we migrate away from Kryo
|
||||
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:
|
||||
java.time.Duration::class.java,
|
||||
java.time.Instant::class.java,
|
||||
java.time.LocalDate::class.java,
|
||||
java.time.LocalDateTime::class.java,
|
||||
java.time.LocalTime::class.java,
|
||||
java.time.ZoneOffset::class.java,
|
||||
java.time.ZoneId::class.java,
|
||||
java.time.OffsetTime::class.java,
|
||||
@ -57,12 +54,12 @@ class DefaultWhitelist : CordaPluginRegistry() {
|
||||
java.time.MonthDay::class.java,
|
||||
java.time.Period::class.java,
|
||||
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,
|
||||
BigDecimal::class.java,
|
||||
LocalDate::class.java,
|
||||
Period::class.java,
|
||||
BitSet::class.java,
|
||||
OnErrorNotImplementedException::class.java,
|
||||
StackTraceElement::class.java)
|
||||
|
@ -5,6 +5,11 @@ import net.corda.core.serialization.SerializationCustomization
|
||||
|
||||
class KryoSerializationCustomization(val kryo: Kryo) : SerializationCustomization {
|
||||
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) {
|
||||
((kryo.classResolver as? CordaClassResolver)?.whitelist as? MutableClassWhitelist)?.add(type)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user