diff --git a/build.gradle b/build.gradle index 430a1c6d79..e7a03c7352 100644 --- a/build.gradle +++ b/build.gradle @@ -33,6 +33,7 @@ dependencies { compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile "com.google.guava:guava:18.0" compile "com.esotericsoftware:kryo:3.0.3" + compile "de.javakaffee:kryo-serializers:0.37" compile "com.google.code.findbugs:jsr305:3.0.1" // Logging diff --git a/src/main/kotlin/core/serialization/Kryo.kt b/src/main/kotlin/core/serialization/Kryo.kt index 2620eadebd..070dee22c1 100644 --- a/src/main/kotlin/core/serialization/Kryo.kt +++ b/src/main/kotlin/core/serialization/Kryo.kt @@ -12,8 +12,10 @@ import com.esotericsoftware.kryo.Kryo import com.esotericsoftware.kryo.io.Input import com.esotericsoftware.kryo.io.Output import core.OpaqueBytes +import de.javakaffee.kryoserializers.ArraysAsListSerializer import org.objenesis.strategy.StdInstantiatorStrategy import java.io.ByteArrayOutputStream +import java.util.* /** * Serialization utilities, using the Kryo framework with a custom serialiser for immutable data classes and a dead @@ -63,5 +65,7 @@ fun createKryo(): Kryo { // Allow construction of objects using a JVM backdoor that skips invoking the constructors, if there is no // no-arg constructor available. instantiatorStrategy = Kryo.DefaultInstantiatorStrategy(StdInstantiatorStrategy()) + + register(Arrays.asList( "" ).javaClass, ArraysAsListSerializer()); } } \ No newline at end of file