NOTICK: Better use of generics for DJVM Collection and Map serializers.

This commit is contained in:
Chris Rankin
2020-03-08 20:14:22 +00:00
parent 19eff00b80
commit 00b55399cb
5 changed files with 47 additions and 41 deletions

View File

@ -30,8 +30,8 @@ class SandboxCollectionSerializer(
private val localFactory: LocalSerializerFactory
) : CustomSerializer.Implements<Any>(clazz = classLoader.toSandboxAnyClass(Collection::class.java)) {
@Suppress("unchecked_cast")
private val creator: Function<Array<Any>, out Any?>
= taskFactory.apply(CreateCollection::class.java) as Function<Array<Any>, out Any?>
private val creator: Function<Array<out Any>, out Any?>
= taskFactory.apply(CreateCollection::class.java) as Function<Array<out Any>, out Any?>
private val unsupportedTypes: Set<Class<Any>> = listOf(
EnumSet::class.java
@ -87,7 +87,7 @@ class SandboxCollectionSerializer(
private class ConcreteCollectionSerializer(
declaredType: ParameterizedType,
private val matchingType: Map.Entry<Class<Any>, Class<out Collection<*>>>,
private val creator: Function<Array<Any>, out Any?>,
private val creator: Function<Array<out Any>, out Any?>,
factory: LocalSerializerFactory
) : AMQPSerializer<Any> {
override val type: ParameterizedType = declaredType

View File

@ -30,8 +30,8 @@ class SandboxMapSerializer(
private val localFactory: LocalSerializerFactory
) : CustomSerializer.Implements<Any>(clazz = classLoader.toSandboxAnyClass(Map::class.java)) {
@Suppress("unchecked_cast")
private val creator: Function<Array<Any>, out Any?>
= taskFactory.apply(CreateMap::class.java) as Function<Array<Any>, out Any?>
private val creator: Function<Array<out Any>, out Any?>
= taskFactory.apply(CreateMap::class.java) as Function<Array<out Any>, out Any?>
// The order matters here - the first match should be the most specific one.
// Kotlin preserves the ordering for us by associating into a LinkedHashMap.
@ -77,7 +77,7 @@ class SandboxMapSerializer(
private class ConcreteMapSerializer(
declaredType: ParameterizedType,
private val matchingType: Map.Entry<Class<Any>, Class<out Map<*, *>>>,
private val creator: Function<Array<Any>, out Any?>,
private val creator: Function<Array<out Any>, out Any?>,
factory: LocalSerializerFactory
) : AMQPSerializer<Any> {
override val type: ParameterizedType = declaredType